45
46
47
48 USE sensor_mod
49
50
51
52#include "implicit_f.inc"
53
54
55
56#include "mvsiz_p.inc"
57
58
59
60#include "param_c.inc"
61#include "vect01_c.inc"
62
63
64
65
67 . partsav(npsav,*), eint(*), rho(*), rk(*), vol(*),
68 . vxa(*), vya(*), vza(*), va2(*),
69 . vnew(*), gresav(*), off(mvsiz), eintth(*), fill(*),
70 . xx(mvsiz), yy(mvsiz), zz(mvsiz),
71 . xx2(mvsiz), yy2(mvsiz), zz2(mvsiz),
72 . xy(mvsiz), yz(mvsiz), zx(mvsiz)
73 INTEGER, INTENT(IN) :: NEL,G_WPLA
74 my_real,
DIMENSION(NEL*G_WPLA),
INTENT(IN) :: wpla
75 INTEGER IEXPAN,ITASK,
76 . IPARTS(*),GRTH(*),IGRTH(*),IPARG(*)
77 type (sensors_),INTENT(INOUT) :: SENSORS
78
79
80
81 INTEGER I, M, FLAG
82
84 . xmas(mvsiz),
85 . ei(mvsiz) , ek(mvsiz),
86 . xm(mvsiz) , ym(mvsiz) , zm(mvsiz),
87 . xcg(mvsiz), ycg(mvsiz), zcg(mvsiz),
88 . xxm(mvsiz), yym(mvsiz), zzm(mvsiz),
89 . ixx(mvsiz), iyy(mvsiz), izz(mvsiz),
90 . ixy(mvsiz), iyz(mvsiz), izx(mvsiz),
91 . rei(mvsiz), rek(mvsiz), off_l(mvsiz)
92
93 flag = iparg(80)
94
95
96
97 DO i=lft,llt
98 vxa(i) = vxa(i)*one_over_8
99 vya(i) = vya(i)*one_over_8
100 vza(i) = vza(i)*one_over_8
101 va2(i) = va2(i)*one_over_8
102 ENDDO
103
104 DO i=lft,llt
105 xmas(i)=fill(i)*rho(i)*vnew(i)
106 ei(i) = fill(i)*eint(i)*vol(i)
107 ek(i) = xmas(i)*va2(i)*half
108 xm(i) = xmas(i)*vxa(i)
109 ym(i) = xmas(i)*vya(i)
110 zm(i) = xmas(i)*vza(i)
111 ENDDO
112
113 IF(ipartsph==0)THEN
114 DO i=lft,llt
115 m=iparts(i)
116 partsav(1,m)=partsav(1,m) + ei(i)
117 partsav(2,m)=partsav(2,m) + ek(i)
118 partsav(3,m)=partsav(3,m) + xm(i)
119 partsav(4,m)=partsav(4,m) + ym(i)
120 partsav(5,m)=partsav(5,m) + zm(i)
121 IF(off(i) >= one) partsav(6,m)=partsav(6,m) + xmas(i)
122 IF (g_wpla > 0) partsav(29,m)=partsav(29,m) + wpla(i)
123 END DO
124 ELSE
125 DO i=lft,llt
126 IF(off(i) < one) cycle
127 m=iparts(i)
128 partsav(1,m)=partsav(1,m) + ei(i)
129 partsav(2,m)=partsav(2,m) + ek(i)
130 partsav(3,m)=partsav(3,m) + xm(i)
131 partsav(4,m)=partsav(4,m) + ym(i)
132 partsav(5,m)=partsav(5,m) + zm(i)
133 partsav(6,m)=partsav(6,m) + xmas(i)
134 IF (g_wpla > 0) partsav(29,m)=partsav(29,m) + wpla(i)
135 END DO
136 END IF
137
138
139
140
141 IF(flag==1) THEN
142 DO i=lft,llt
143 xx(i) = xx(i)*one_over_8
144 yy(i) = yy(i)*one_over_8
145 zz(i) = zz(i)*one_over_8
146 xy(i) = xy(i)*one_over_8
147 yz(i) = yz(i)*one_over_8
148 zx(i) = zx(i)*one_over_8
149 xx2(i)= xx2(i)*one_over_8
150 yy2(i)= yy2(i)*one_over_8
151 zz2(i)= zz2(i)*one_over_8
152 ENDDO
153
154 DO i=lft,llt
155 xcg(i)= xmas(i)*xx(i)
156 ycg(i)= xmas(i)*yy(i)
157 zcg(i)= xmas(i)*zz(i)
158 ixy(i)= -xmas(i)*xy(i)
159 iyz(i)= -xmas(i)*yz(i)
160 izx(i)= -xmas(i)*zx(i)
161 ixx(i)= xmas(i)*(yy2(i) + zz2(i))
162 iyy(i)= xmas(i)*(zz2(i) + xx2(i))
163 izz(i)= xmas(i)*(xx2(i) + yy2(i))
164 xxm(i)= vza(i)*ycg(i)-vya(i)*zcg(i)
165 yym(i)= vxa(i)*zcg(i)-vza(i)*xcg(i)
166 zzm(i)= vya(i)*xcg(i)-vxa(i)*ycg(i)
167 rei(i)= zero
168 rek(i)= zero
169 ENDDO
170
171 IF(ipartsph==0)THEN
172 DO i=lft,llt
173 m=iparts(i)
174 partsav(9,m) =partsav(9,m) + xcg(i)
175 partsav(10,m)=partsav(10,m) + ycg(i)
176 partsav(11,m)=partsav(11,m) + zcg(i)
177 partsav(12,m)=partsav(12,m) + xxm(i)
178 partsav(13,m)=partsav(13,m) + yym(i)
179 partsav(14,m)=partsav(14,m) + zzm(i)
180 partsav(15,m)=partsav(15,m) + ixx(i)
181 partsav(16,m)=partsav(16,m) + iyy(i)
182 partsav(17,m)=partsav(17,m) + izz(i)
183 partsav(18,m)=partsav(18,m) + ixy(i)
184 partsav(19,m)=partsav(19,m) + iyz(i)
185 partsav(20,m)=partsav(20,m) + izx(i)
186 partsav(21,m)=partsav(21,m) + rei(i)
187 partsav(22,m)=partsav(22,m) + rek(i)
188
189 END DO
190 ELSE
191 DO i=lft,llt
192 IF(off(i) < one) cycle
193 m=iparts(i)
194 partsav(9,m) =partsav(9,m) + xcg(i)
195 partsav(10,m)=partsav(10,m) + ycg(i)
196 partsav(11,m)=partsav(11,m) + zcg(i)
197 partsav(12,m)=partsav(12,m) + xxm(i)
198 partsav(13,m)=partsav(13,m) + yym(i)
199 partsav(14,m)=partsav(14,m) + zzm(i)
200 partsav(15,m)=partsav(15,m) + ixx(i)
201 partsav(16,m)=partsav(16,m) + iyy(i)
202 partsav(17,m)=partsav(17,m) + izz(i)
203 partsav(18,m)=partsav(18,m) + ixy(i)
204 partsav(19,m)=partsav(19,m) + iyz(i)
205 partsav(20,m)=partsav(20,m) + izx(i)
206 partsav(21,m)=partsav(21,m) + rei(i)
207 partsav(22,m)=partsav(22,m) + rek(i)
208
209 END DO
210 END IF
211 ENDIF
212
213 IF (igre /= 0) THEN
214 CALL grelem_sav(lft ,llt ,gresav,igrth ,grth ,
215 2 off ,ei ,ek ,xm ,ym ,
216 3 zm ,xmas ,xcg ,ycg ,zcg ,
217 4 xxm ,yym ,zzm ,ixx ,iyy ,
218 5 izz ,ixy ,iyz ,izx ,rei ,
219 6 rek ,flag )
220 ENDIF
221
222
223 IF(jtur/=0)THEN
224 DO 50 i=lft,llt
225 m=iparts(i)
226 partsav(7,m)=partsav(7,m) + rk(i)*vol(i)
227 50 CONTINUE
228 ENDIF
229
230 IF(iexpan/=0)THEN
231 DO i=lft,llt
232 m=iparts(i)
233 partsav(27,m)=partsav(27,m) + eintth(i)*vol(i)
234 ENDDO
235 ENDIF
236 DO i=lft,llt
237 IF(off(i) < one) THEN
238 off_l(i) = zero
239 ELSE
240 off_l(i) = one
241 ENDIF
242 ENDDO
243
244 DO i = lft,llt
245 m=iparts(i)
246 IF (off(i) < one) THEN
247 partsav(25,m) = partsav(25,m) + one
248 ENDIF
249 ENDDO
250
252
253 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)