39
40
41
42 USE sensor_mod
43
44
45
46#include "implicit_f.inc"
47#include "comlock.inc"
48
49
50
51#include "mvsiz_p.inc"
52
53
54
55#include "com06_c.inc"
56#include "param_c.inc"
57
58
59
60 INTEGER, INTENT(IN) :: NEL
61 INTEGER, INTENT(IN) :: IGRE
62 INTEGER IPARTR(*),IXR(NIXR,*),GRTH(*),(*),
63 . NC1(*),NC2(*),ITASK
64
66 . geo(npropg,*),eint(*),partsav(npsav,*),v(3,*), al0(*),
67 . gresav(*),off_dum(*),x(3,*),vr(3,*)
68 type (sensors_),INTENT(INOUT) :: SENSORS
69
70
71
72 INTEGER I,MX,J, ILENG, FLAG
74 . x1(mvsiz), y1(mvsiz), z1(mvsiz),
75 . x2(mvsiz), y2(mvsiz), z2(mvsiz),
76 . v1(mvsiz,3),v2(mvsiz,3),
77 . vr1(mvsiz,3),vr2(mvsiz,3),
78 . xmas2(mvsiz), reintt,
79 . xmas(mvsiz), rho(mvsiz), inel,
80 . ek(mvsiz), xm(mvsiz), ym(mvsiz), zm(mvsiz),
81 . va1,xm1phi,xm2phi,rbidon(1),off(mvsiz),
82 . in2, ei(mvsiz),rek(mvsiz),
83 . xxm(mvsiz), yym(mvsiz), zzm(mvsiz),
84 . xcg(mvsiz), ycg(mvsiz), zcg(mvsiz),
85 . ixx(mvsiz), iyy(mvsiz), izz(mvsiz),
86 . ixy(mvsiz), iyz(mvsiz), izx(mvsiz),
87 . xx(mvsiz) , yy(mvsiz) , zz(mvsiz) ,
88 . xy(mvsiz) , yz(mvsiz) , zx(mvsiz) ,
89 . xx2(mvsiz), yy2(mvsiz), zz2(mvsiz),
90 . vxa(mvsiz), vya(mvsiz), vza(mvsiz),
91 . va2(mvsiz), vra2(mvsiz)
92
93 reintt = zero
94 flag = 0
95 rbidon = zero
96 off = zero
97 DO i=1,nel
98 reintt=reintt + eint(i)
99 ENDDO
100
101
102 reint = reint + reintt
103
104 DO i=1,nel
105 x1(i)=x(1,nc1(i))
106 y1(i)=x(2,nc1(i))
107 z1(i)=x(3,nc1(i))
108 x2(i)=x(1,nc2(i))
109 y2(i)=x(2,nc2(i))
110 z2(i)=x(3,nc2(i))
111 v1(i,1)=v(1,nc1(i))
112 v1(i,2)=v(2,nc1(i))
113 v1(i,3)=v(3,nc1(i))
114 v2(i,1)=v(1,nc2(i))
115 v2(i,2)=v(2,nc2(i))
116 v2(i,3)=v(3,nc2(i))
117 vr1(i,1)=vr(1,nc1(i))
118 vr1(i,2)=vr(2,nc1(i))
119 vr1(i,3)=vr(3,nc1(i))
120 vr2(i,1)=vr(1,nc2(i))
121 vr2(i,2)=vr(2,nc2(i))
122 vr2(i,3)=vr(3,nc2(i))
123 ENDDO
124
125 DO i=1,nel
126 xx(i)= x1(i)+x2(i)
127 yy(i)= y1(i)+y2(i)
128 zz(i)= z1(i)+z2(i)
129 xx2(i) = x1(i)*x1(i)+x2(i)*x2(i)
130 yy2(i) = y1(i)*y1(i)+y2(i)*y2(i)
131 zz2(i) = z1(i)*z1(i)+z2(i)*z2(i)
132 xy(i) = x1(i)*y1(i)+x2(i)*y2(i)
133 yz(i) = y1(i)*z1(i)+y2(i)*z2(i)
134 zx(i) = z1(i)*x1(i)+z2(i)*x2(i)
135 vxa(i)=v1(i,1)+v2(i,1)
136 vya(i)=v1(i,2)+v2(i,2)
137 vza(i)=v1(i,3)+v2(i,3)
138 va2(i)=v1(i,1)*v1(i,1)+v2(i,1)*v2(i,1)
139 . +v1(i,2)*v1(i,2)+v2(i,2)*v2(i,2)
140 . +v1(i,3)*v1(i,3)+v2(i,3)*v2(i,3)
141 vra2(i) = vr1(i,1)*vr1(i,1)+vr2(i,1)*vr2(i,1)
142 . +vr1(i,2)*vr1(i,2)+vr2(i,2)*vr2(i,2)
143 . +vr1(i,3)*vr1(i,3)+vr2(i,3)*vr2(i,3)
144 ENDDO
145
146 DO i=1,nel
147 ileng=nint(geo(93,ixr(1,i)))
148 IF (ileng /= 0) THEN
149 xmas(i)=geo(1,ixr(1,i))*al0(i)
150 ELSE
151 xmas(i)=geo(1,ixr(1,i))
152 ENDIF
153 xmas2(i)=xmas(i)*half
154 xm(i)= xmas2(i)*vxa(i)
155 ym(i)= xmas2(i)*vya(i)
156 zm(i)= xmas2(i)*vza(i)
157 ek(i)= xmas2(i)*va2(i)*half
158 ENDDO
159
160 DO i=1,nel
161 xcg(i)= xmas2(i)*xx(i)
162 ycg(i)= xmas2(i)*yy(i)
163 zcg(i)= xmas2(i)*zz(i)
164 ileng=nint(geo(93,ixr(1,i)))
165 IF (ileng /= 0) THEN
166 inel=geo(9,ixr(1,i))*al0(i)
167 ELSE
168 inel=geo(9,ixr(1,i))
169 ENDIF
170 in2 = inel*half
171 ixy(i) = -xmas2(i)*xy(i)
172 iyz(i) = -xmas2(i)*yz(i)
173 izx(i) = -xmas2(i)*zx(i)
174 ixx(i)= inel + xmas2(i)*(yy2(i) + zz2(i))
175 iyy(i)= inel + xmas2(i)*(zz2(i) + xx2(i))
176 izz(i)= inel + xmas2(i)*(xx2(i) + yy2(i))
177
178 xxm(i)= xmas2(i)*
179 . (v1(i,3)*y1(i)-v1(i,2)*z1(i)
180 . +v2(i,3)*y2(i)-v2(i,2)*z2(i))
181 . +in2*(vr1(i,1)+vr2(i,1))
182 yym(i)= xmas2(i)*
183 . (v1(i,1)*z1(i)-v1(i,3)*x1(i)
184 . +v2(i,1)*z2(i)-v2(i,3)*x2(i))
185 . +in2*(vr1(i,2)+vr2(i,2))
186 zzm(i)= xmas2(i)*
187 . (v1(i,2)*x1(i)-v1(i,1)*y1(i)
188 . +v2(i,2)*x2(i)-v2(i,1)*y2(i))
189 . +in2*(vr1(i,3)+vr2(i,3))
190 rek(i)= in2*vra2(i)*half
191 ENDDO
192
193 IF (igre /= 0) THEN
194 DO i=1,nel
195 off(i) = one
196 ENDDO
198 2 off ,eint ,ek ,xm ,ym ,
199 3 zm ,xmas ,xcg ,ycg ,zcg ,
200 4 xxm ,yym ,zzm ,ixx ,iyy ,
201 5 izz ,ixy ,iyz ,izx ,rbidon,
202 6 rek ,flag )
203 ENDIF
204
205 DO i=1,nel
206 mx = ipartr(i)
207 partsav(1,mx)=partsav(1,mx) + eint(i)
208 partsav(2,mx)=partsav(2,mx) + ek(i)
209 partsav(3,mx)=partsav(3,mx) + xm(i)
210 partsav(4,mx)=partsav(4,mx) + ym(i)
211 partsav(5,mx)=partsav(5,mx) + zm(i)
212 IF (off_dum(i) > zero) partsav(6,mx)=partsav(6,mx) + xmas(i)
213 partsav(9,mx) =partsav(9,mx) + xcg(i)
214 partsav(10,mx)=partsav(10,mx) + ycg(i)
215 partsav(11,mx)=partsav(11,mx) + zcg(i)
216 partsav(12,mx)=partsav(12,mx) + xxm(i)
217 partsav(13,mx)=partsav(13,mx) + yym(i)
218 partsav(14,mx)=partsav(14,mx) + zzm(i)
219 partsav(15,mx)=partsav(15,mx) + ixx(i)
220 partsav(16,mx)=partsav(16,mx) + iyy(i)
221 partsav(17,mx)=partsav(17,mx) + izz(i)
222 partsav(18,mx)=partsav(18,mx) + ixy(i)
223 partsav(19,mx)=partsav(19,mx) + iyz(i)
224 partsav(20,mx)=partsav(20,mx) + izx(i)
225 partsav(22,mx)=partsav(22,mx) + rek(i)
226 ENDDO
227
228 off(1:mvsiz) = one
230
231 RETURN
subroutine grelem_sav(jft, jlt, gresav, igrth, grth, off, ei, ek, xm, ym, zm, xmas, xcg, ycg, zcg, xxm, yym, zzm, ixx, iyy, izz, ixy, iyz, izx, rei, rek, flag)
subroutine sensor_energy_bilan(jft, jlt, ei, ek, off, ipart, itask, sensors)