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