46
47
48
50 USE sensor_mod
51
52
53
54#include "implicit_f.inc"
55
56
57
58#include "mvsiz_p.inc"
59
60
61
62#include "param_c.inc"
63#include "scr14_c.inc"
64
65
66
67 INTEGER, INTENT(IN) :: IGRE
68 INTEGER IPARTP(*),GRTH(*),IGRTH(*),NEL,NC1(MVSIZ),NC2(MVSIZ),
69 . NC3(MVSIZ),MAT(MVSIZ),PID(MVSIZ),ITASK
70
72 . pm(npropm,*), v(3,*), eint(nel,2), geo(npropg,*),
73 . partsav(npsav,*),tani(15,*),
for(nel,3),mom(nel,3),gresav(*),
74 . off_dum(*),al(mvsiz),e1x(mvsiz),e1y(mvsiz),e1z(mvsiz),
75 . e2x(mvsiz),e2y(mvsiz),e2z(mvsiz),vx1g(mvsiz),vx2g(mvsiz),
76 . vy1g(mvsiz),vy2g(mvsiz),vz1g(mvsiz),vz2g(mvsiz),
77 . x1g(mvsiz),x2g(mvsiz),y1g(mvsiz),y2g(mvsiz),
78 . z1g(mvsiz),z2g(mvsiz)
79 TYPE(H3D_DATABASE) :: H3D_DATA
80 type (sensors_),INTENT(INOUT) :: SENSORS
81 INTEGER, INTENT(IN) :: G_WPLA
82 my_real,
DIMENSION(NEL*G_WPLA),
INTENT(IN) :: wpla
83
84
85
86 INTEGER I, M, FLAG
87
89 . vxa(mvsiz), vya(mvsiz),vza(mvsiz), va2(mvsiz), xmas(mvsiz),
90 . ei(mvsiz), ek(mvsiz), xm(mvsiz),
91 . ym(mvsiz), zm(mvsiz), sect(mvsiz),
92 . rbidon(1),off(mvsiz),rho(mvsiz),
93 . xcg(mvsiz), ycg(mvsiz), zcg(mvsiz),
94 . xx(mvsiz) , yy(mvsiz) , zz(mvsiz) ,
95 . rei(mvsiz), rek(mvsiz), inel,
96 . xxm(mvsiz), yym(mvsiz), zzm(mvsiz),
97 . ixx(mvsiz), iyy(mvsiz), izz(mvsiz),
98 . ixy(mvsiz), iyz(mvsiz), izx(mvsiz)
99
100 rbidon = zero
101 off(1:mvsiz) = zero
102 flag = 0
103 DO i=1,nel
104 sect(i)=geo(1,pid(i))
105 rho(i) =pm(1,mat(i))
106 ENDDO
107
108 DO i=1,nel
109 xx(i)=x1g(i)+x2g(i)
110 yy(i)=y1g(i)+y2g(i)
111 zz(i)=z1g(i)+z2g(i)
112 vxa(i)=vx1g(i)+vx2g(i)
113 vya(i)=vy1g(i)+vy2g(i)
114 vza(i)=vz1g(i)+vz2g(i)
115 va2(i)=vx1g(i)*vx1g(i)+vx2g(i)*vx2g(i)
116 . +vy1g(i)*vy1g(i)+vy2g(i)*vy2g(i)
117 . +vz1g(i)*vz1g(i)+vz2g(i)*vz2g(i)
118 ENDDO
119
120 DO i=1,nel
121 xx(i)=xx(i)*half
122 yy(i)=yy(i)*half
123 zz(i)=zz(i)*half
124 vxa(i)=vxa(i)*half
125 vya(i)=vya(i)*half
126 vza(i)=vza(i)*half
127 va2(i)=va2(i)*half
128 ENDDO
129
130 DO i=1,nel
131 xmas(i)=rho(i)*al(i)*sect(i)
132 ENDDO
133
134 DO i=1,nel
135 ei(i)= eint(i,1) + eint(i,2)
136 ek(i)= xmas(i)*va2(i)*half
137 xm(i)= xmas(i)*vxa(i)
138 ym(i)= xmas(i)*vya(i)
139 zm(i)= xmas(i)*vza(i)
140 ENDDO
141
142 DO i=1,nel
143 xcg(i)= xmas(i)*xx(i)
144 ycg(i)= xmas(i)*yy(i)
145 zcg(i)= xmas(i)*zz(i)
146 inel = xmas(i)*al(i)*al(i)*one_over_12
147 ixy(i) = -xcg(i)*yy(i)
148 iyz(i) = -ycg(i)*zz(i)
149 izx(i) = -zcg(i)*xx(i)
150 xx(i) = xcg(i)*xx(i)
151 yy(i) = ycg(i)*yy(i)
152 zz(i) = zcg(i)*zz(i)
153 ixx(i)= inel + yy(i) + zz(i)
154 iyy(i)= inel + zz(i) + xx(i)
155 izz(i)= inel + xx(i) + yy(i)
156 xxm(i)= vza(i)*ycg(i)-vya(i)*zcg(i)
157 yym(i)= vxa(i)*zcg(i)-vza(i)*xcg(i)
158 zzm(i)= vya(i)*xcg(i)-vxa(i)*ycg(i)
159 rei(i)= ei(i)
160 rek(i)= inel*va2(i)*half
161 ENDDO
162
163 IF (igre /= 0) THEN
164 DO i=1,nel
165 off(i) = one
166 ENDDO
168 2 off ,ei ,ek ,xm ,ym ,
169 3 zm ,xmas ,xcg ,ycg ,zcg ,
170 4 xxm ,yym ,zzm ,ixx ,iyy ,
171 5 izz ,ixy ,iyz ,izx ,rei ,
172 6 rek ,flag )
173 ENDIF
174
175 DO i=1,nel
176 m = ipartp(i)
177 partsav(1,m)=partsav(1,m) + ei(i)
178 partsav(2,m)=partsav(2,m) + ek(i)
179 partsav(3,m)=partsav(3,m) + xm(i)
180 partsav(4,m)=partsav(4,m) + ym(i)
181 partsav(5,m)=partsav(5,m) + zm(i)
182 IF (off_dum(i) > zero) partsav(6,m)=partsav(6,m) + xmas(i)
183 partsav(9,m) =partsav(9,m) + xcg(i)
184 partsav(10,m)=partsav(10,m) + ycg(i)
185 partsav(11,m)=partsav(11,m) + zcg(i)
186 partsav(12,m)=partsav(12,m) + xxm(i)
187 partsav(13,m)=partsav(13,m) + yym(i)
188 partsav(14,m)=partsav(14,m) + zzm(i)
189 partsav(15,m)=partsav(15,m) + ixx(i)
190 partsav(16,m)=partsav(16,m) + iyy(i)
191 partsav(17,m)=partsav(17,m) + izz(i)
192 partsav(18,m)=partsav(18,m) + ixy(i)
193 partsav(19,m)=partsav(19,m) + iyz(i)
194 partsav(20,m)=partsav(20,m) + izx(i)
195 partsav(21,m)=partsav(21,m) + rei(i)
196 partsav(22,m)=partsav(22,m) + rek(i)
197 IF (g_wpla > 0) partsav(29,m)=partsav(29,m) + wpla(i)
198 ENDDO
199
200 IF (anim_ft(1) /= 0 .OR. h3d_data%UND_FORC /= 0) THEN
201 DO i=1,nel
202
206
207 tani(4,i)= -mom(i,1)
208 tani(5,i)= -mom(i,2) + half*al(i)*
for(i,3)
209 tani(6,i)= -mom(i,3) - half*al(i)*
for(i,2)
210
211 tani(7,i)= mom(i,1)
212 tani(5,i)= mom(i,2) + half*al(i)*
for(i,3)
213 tani(9,i)= mom(i,3) - half*al(i)*
for(i,2)
214
215
216
217
218
219
220 ENDDO
221 ENDIF
222 off(1:mvsiz) = one
224
225 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)
for(i8=*sizetab-1;i8 >=0;i8--)
subroutine sensor_energy_bilan(jft, jlt, ei, ek, off, ipart, itask, sensors)