79
80
81
82#include "implicit_f.inc"
83
84
85
86#include "mvsiz_p.inc"
87
88
89
90#include "com08_c.inc"
91#include "impl1_c.inc"
92#include "scr05_c.inc"
93
94
95
96 INTEGER, INTENT(IN) :: NEL
97 INTEGER, INTENT(IN) :: ISMSTR
98 INTEGER, INTENT(IN) :: JCVT
99 INTEGER ICP,I_SH,IDEGE(*)
100
102 . vx1(*), vx2(*), vx3(*), vx4(*), vx5(*), vx6(*), vx7(*), vx8(*),
103 . vy1(*), vy2(*), vy3(*), vy4(*), vy5(*), vy6(*), vy7(*), vy8(*),
104 . vz1(*), vz2(*), vz3(*), vz4(*), vz5(*), vz6(*), vz7(*), vz8(*),
105 . px1(*), px2(*), px3(*), px4(*),
106 . px5(*), px6(*), px7(*), px8(*),
107 . py1(*), py2(*), py3(*), py4(*),
108 . py5(*), py6(*), py7(*), py8(*),
109 . pz1(*), pz2(*), pz3(*), pz4(*),
110 . pz5(*), pz6(*), pz7(*), pz8(*),
111 . dxx(*), dxy(*), dxz(*),
112 . dyx(*), dyy(*), dyz(*),
113 . dzx(*), dzy(*), dzz(*), d4(*), d5(*), d6(*),
114 . wxx(*), wyy(*), wzz(*), offs(*),dsv(*),
115 . volo(*),off(*),eint(*),fac(*),sdv(*),
116 . pxy1(mvsiz),pxy2(mvsiz),pxy3(mvsiz),pxy4(mvsiz),
117 . pxy5(mvsiz),pxy6(mvsiz),pxy7(mvsiz),pxy8(mvsiz),
118 . pyx1(mvsiz),pyx2(mvsiz),pyx3(mvsiz),pyx4(mvsiz),
119 . pyx5(mvsiz),pyx6(mvsiz),pyx7(mvsiz),pyx8(mvsiz),
120 . pxz1(mvsiz),pxz2(mvsiz),pxz3(mvsiz),pxz4(mvsiz),
121 . pxz5(mvsiz),pxz6(mvsiz),pxz7(mvsiz),pxz8(mvsiz),
122 . pzx1(mvsiz),pzx2(mvsiz),pzx3(mvsiz),pzx4(mvsiz),
123 . pzx5(mvsiz),pzx6(mvsiz),pzx7(mvsiz),pzx8(mvsiz),
124 . pyz1(mvsiz),pyz2(mvsiz),pyz3(mvsiz),pyz4(mvsiz),
125 . pyz5(mvsiz),pyz6(mvsiz),pyz7(mvsiz),pyz8(mvsiz),
126 . pzy1(mvsiz),pzy2(mvsiz),pzy3(mvsiz),pzy4(mvsiz),
127 . pzy5(mvsiz),pzy6(mvsiz),pzy7(mvsiz),pzy8(mvsiz),
128 . bxy1(*),bxy2(*),bxy3(*),bxy4(*),
129 . bxy5(*),bxy6(*),bxy7(*),bxy8(*),
130 . byx1(*),byx2(*),byx3(*),byx4(*),
131 . byx5(*),byx6(*),byx7(*),byx8(*),
132 . bxz1(*),bxz2(*),bxz3(*),bxz4(*),
133 . bxz5(*),bxz6(*),bxz7(*),bxz8(*),
134 . bzx1(*),bzx2(*),bzx3(*),bzx4(*),
135 . bzx5(*),bzx6(*),bzx7(*),bzx8(*),
136 . byz1(*),byz2(*),byz3(*),byz4(*),
137 . byz5(*),byz6(*),byz7(*),byz8(*),
138 . bzy1(*),bzy2(*),bzy3(*),bzy4(*),
139 . bzy5(*),bzy6(*),bzy7(*),bzy8(*),
140 . bxx1(*),bxx2(*),bxx3(*),bxx4(*),
141 . bxx5(*),bxx6(*),bxx7(*),bxx8(*),
142 . byy1(*),byy2(*),byy3(*),byy4(*),
143 . byy5(*),byy6(*),byy7(*),byy8(*),
144 . bzz1(*),bzz2(*),bzz3(*),bzz4(*),
145 . bzz5(*),bzz6(*),bzz7(*),bzz8(*)
146 DOUBLE PRECISION
147 . VOL0DP(*)
148
149
150
151 INTEGER I
152
154 . dt1d2,dvc(mvsiz),tol,dt1d
155 DOUBLE PRECISION
156 . DVP,DV,DV1
157
158
159 tol = one-em20
160 IF (i_sh==0) THEN
161 DO i=1,nel
162 dxy(i) =py1(i)*vx1(i)+py2(i)*vx2(i)+py3(i)*vx3(i)+py4(i)*vx4(i)
163 + +py5(i)*vx5(i)+py6(i)*vx6(i)+py7(i)*vx7(i)+py8(i)*vx8(i)
164 dxz(i) =pz1(i)*vx1(i)+pz2(i)*vx2(i)+pz3(i)*vx3(i)+pz4(i)*vx4(i)
165 + +pz5(i)*vx5(i)+pz6(i)*vx6(i)+pz7(i)*vx7(i)+pz8(i)*vx8(i)
166 dyx(i) =px1(i)*vy1(i)+px2(i)*vy2(i)+px3(i)*vy3(i)+px4(i)*vy4(i)
167 + +px5(i)*vy5(i)+px6(i)*vy6(i)+px7(i)*vy7(i)+px8(i)*vy8(i)
168 dyz(i) =pz1(i)*vy1(i)+pz2(i)*vy2(i)+pz3(i)*vy3(i)+pz4(i)*vy4(i)
169 + +pz5(i)*vy5(i)+pz6(i)*vy6(i)+pz7(i)*vy7(i)+pz8(i)*vy8(i)
170 dzx(i) =px1(i)*vz1(i)+px2(i)*vz2(i)+px3(i)*vz3(i)+px4(i)*vz4(i)
171 + +px5(i)*vz5(i)+px6(i)*vz6(i)+px7(i)*vz7(i)+px8(i)*vz8(i)
172 dzy(i) =py1(i)*vz1(i)+py2(i)*vz2(i)+py3(i)*vz3(i)+py4(i)*vz4(i)
173 + +py5(i)*vz5(i)+py6(i)*vz6(i)+py7(i)*vz7(i)+py8(i)*vz8(i)
174 ENDDO
175 ELSE
176 DO i=1,nel
177 dxy(i) =pxy1(i)*vx1(i)+pxy2(i)*vx2(i)
178 + +pxy3(i)*vx3(i)+pxy4(i)*vx4(i)
179 + +pxy5(i)*vx5(i)+pxy6(i)*vx6(i)
180 + +pxy7(i)*vx7(i)+pxy8(i)*vx8(i)
181 dxz(i) =pxz1(i)*vx1(i)+pxz2(i)*vx2(i)
182 + +pxz3(i)*vx3(i)+pxz4(i)*vx4(i)
183 + +pxz5(i)*vx5(i)+pxz6(i)*vx6(i)
184 + +pxz7(i)*vx7(i)+pxz8(i)*vx8(i)
185 dyx(i) =pyx1(i)*vy1(i)+pyx2(i)*vy2(i)
186 + +pyx3(i)*vy3(i)+pyx4(i)*vy4(i)
187 + +pyx5(i)*vy5(i)+pyx6(i)*vy6(i)
188 + +pyx7(i)*vy7(i)+pyx8(i)*vy8(i)
189 dyz(i) =pyz1(i)*vy1(i)+pyz2(i)*vy2(i)
190 + +pyz3(i)*vy3(i)+pyz4(i)*vy4(i)
191 + +pyz5(i)*vy5(i)+pyz6(i)*vy6(i)
192 + +pyz7(i)*vy7(i)+pyz8(i)*vy8(i)
193 dzx(i) =pzx1(i)*vz1(i)+pzx2(i)*vz2(i)
194 + +pzx3(i)*vz3(i)+pzx4(i)*vz4(i)
195 + +pzx5(i)*vz5(i)+pzx6(i)*vz6(i)
196 + +pzx7(i)*vz7(i)+pzx8(i)*vz8(i)
197 dzy(i) =pzy1(i)*vz1(i)+pzy2(i)*vz2(i)
198 + +pzy3(i)*vz3(i)+pzy4(i)*vz4(i)
199 + +pzy5(i)*vz5(i)+pzy6(i)*vz6(i)
200 + +pzy7(i)*vz7(i)+pzy8(i)*vz8(i)
201 ENDDO
202 END IF
203 IF (icp==11) THEN
204 DO i=1,nel
205 dxx(i) =bxx1(i)*vx1(i)+bxx2(i)*vx2(i)+bxx3(i)*vx3(i)+
206 . bxx4(i)*vx4(i)+bxx5(i)*vx5(i)+bxx6(i)*vx6(i)+
207 . bxx7(i)*vx7(i)+bxx8(i)*vx8(i)
208 dyy(i) =byy1(i)*vy1(i)+byy2(i)*vy2(i)+byy3(i)*vy3(i)+
209 . byy4(i)*vy4(i)+byy5(i)*vy5(i)+byy6(i)*vy6(i)+
210 . byy7(i)*vy7(i)+byy8(i)*vy8(i)
211 dzz(i) =bzz1(i)*vz1(i)+bzz2(i)*vz2(i)+bzz3(i)*vz3(i)+
212 . bzz4(i)*vz4(i)+bzz5(i)*vz5(i)+bzz6(i)*vz6(i)+
213 . bzz7(i)*vz7(i)+bzz8(i)*vz8(i)
214 dyy(i) =dyy(i)+bxy1(i)*vx1(i)+bxy2(i)*vx2(i)
215 + +bxy3(i)*vx3(i)+bxy4(i)*vx4(i)
216 + +bxy5(i)*vx5(i)+bxy6(i)*vx6(i)
217 + +bxy7(i)*vx7(i)+bxy8(i)*vx8(i)
218 dzz(i) =dzz(i)+bxz1(i)*vx1(i)+bxz2(i)*vx2(i)
219 + +bxz3(i)*vx3(i)+bxz4(i)*vx4(i)
220 + +bxz5(i)*vx5(i)+bxz6(i)*vx6(i)
221 + +bxz7(i)*vx7(i)+bxz8(i)*vx8(i)
222 dxx(i) =dxx(i)+byx1(i)*vy1(i)+byx2(i)*vy2(i)
223 + +byx3(i)*vy3(i)+byx4(i)*vy4(i)
224 + +byx5(i)*vy5(i)+byx6(i)*vy6(i)
225 + +byx7(i)*vy7(i)+byx8(i)*vy8(i)
226 dzz(i) =dzz(i)+byz1(i)*vy1(i)+byz2(i)*vy2(i)
227 + +byz3(i)*vy3(i)+byz4(i)*vy4(i)
228 + +byz5(i)*vy5(i)+byz6(i)*vy6(i)
229 + +byz7(i)*vy7(i)+byz8(i)*vy8(i)
230 dxx(i) =dxx(i)+bzx1(i)*vz1(i)+bzx2(i)*vz2(i)
231 + +bzx3(i)*vz3(i)+bzx4(i)*vz4(i)
232 + +bzx5(i)*vz5(i)+bzx6(i)*vz6(i)
233 + +bzx7(i)*vz7(i)+bzx8(i)*vz8(i)
234 dyy(i) =dyy(i)+bzy1(i)*vz1(i)+bzy2(i)*vz2(i)
235 + +bzy3(i)*vz3(i)+bzy4(i)*vz4(i)
236 + +bzy5(i)*vz5(i)+bzy6(i)*vz6(i)
237 + +bzy7(i)*vz7(i)+bzy8(i)*vz8(i)
238 dvc(i) =zero
239 ENDDO
240 ELSE
241 DO i=1,nel
242 dxx(i) =px1(i)*vx1(i)+px2(i)*vx2(i)+px3(i)*vx3(i)+px4(i)*vx4(i)
243 . +px5(i)*vx5(i)+px6(i)*vx6(i)+px7(i)*vx7(i)+px8(i)*vx8(i)
244 dyy(i) =py1(i)*vy1(i)+py2(i)*vy2(i)+py3(i)*vy3(i)+py4(i)*vy4(i)
245 . +py5(i)*vy5(i)+py6(i)*vy6(i)+py7(i)*vy7(i)+py8(i)*vy8(i)
246 dzz(i) =pz1(i)*vz1(i)+pz2(i)*vz2(i)+pz3(i)*vz3(i)+pz4(i)*vz4(i)
247 . +pz5(i)*vz5(i)+pz6(i)*vz6(i)+pz7(i)*vz7(i)+pz8(i)*vz8(i)
248 dvc(i) =dxx(i)+dyy(i)+dzz(i)
249 ENDDO
250 END IF
251
252 IF (i_sh>1) THEN
253#include "nofusion.inc"
254 DO i=1,nel
255 IF(
idege(i)>10) cycle
256 dyy(i) =dyy(i)+bxy1(i)*vx1(i)+bxy2(i)*vx2(i)
257 + +bxy3(i)*vx3(i)+bxy4(i)*vx4(i)
258 + +bxy5(i)*vx5(i)+bxy6(i)*vx6(i)
259 + +bxy7(i)*vx7(i)+bxy8(i)*vx8(i)
260 dzz(i) =dzz(i)+bxz1(i)*vx1(i)+bxz2(i)*vx2(i)
261 + +bxz3(i)*vx3(i)+bxz4(i)*vx4(i)
262 + +bxz5(i)*vx5(i)+bxz6(i)*vx6(i)
263 + +bxz7(i)*vx7(i)+bxz8(i)*vx8(i)
264 dxx(i) =dxx(i)+byx1(i)*vy1(i)+byx2(i)*vy2(i)
265 + +byx3(i)*vy3(i)+byx4(i)*vy4(i)
266 + +byx5(i)*vy5(i)+byx6(i)*vy6(i)
267 + +byx7(i)*vy7(i)+byx8(i)*vy8(i)
268 dzz(i) =dzz(i)+byz1(i)*vy1(i)+byz2(i)*vy2(i)
269 + +byz3(i)*vy3(i)+byz4(i)*vy4(i)
270 + +byz5(i)*vy5(i)+byz6(i)*vy6(i)
271 + +byz7(i)*vy7(i)+byz8(i)*vy8(i)
272 dxx(i) =dxx(i)+bzx1(i)*vz1(i)+bzx2(i)*vz2(i)
273 + +bzx3(i)*vz3(i)+bzx4(i)*vz4(i)
274 + +bzx5(i)*vz5(i)+bzx6(i)*vz6(i)
275 + +bzx7(i)*vz7(i)+bzx8(i)*vz8(i)
276 dyy(i) =dyy(i)+bzy1(i)*vz1(i)+bzy2(i)*vz2(i)
277 + +bzy3(i)*vz3(i)+bzy4(i)*vz4(i)
278 + +bzy5(i)*vz5(i)+bzy6(i)*vz6(i)
279 + +bzy7(i)*vz7(i)+bzy8(i)*vz8(i)
280 dvc(i) =(dxx(i)+dyy(i)+dzz(i)-dvc(i))*dt1
281 ENDDO
282 END IF
283 IF (ismstr==12.AND.i_sh>0) THEN
284#include "nofusion.inc"
285 DO i=1,nel
286 IF(offs(i)<=one) cycle
287 dyy(i) =dyy(i)+bxy1(i)*vx1(i)+bxy2(i)*vx2(i)
288 + +bxy3(i)*vx3(i)+bxy4(i)*vx4(i)
289 + +bxy5(i)*vx5(i)+bxy6(i)*vx6(i)
290 + +bxy7(i)*vx7(i)+bxy8(i)*vx8(i)
291 dzz(i) =dzz(i)+bxz1(i)*vx1(i)+bxz2(i)*vx2(i)
292 + +bxz3(i)*vx3(i)+bxz4(i)*vx4(i)
293 + +bxz5(i)*vx5(i)+bxz6(i)*vx6(i)
294 + +bxz7(i)*vx7(i)+bxz8(i)*vx8(i)
295 dxx(i) =dxx(i)+byx1(i)*vy1(i)+byx2(i)*vy2(i)
296 + +byx3(i)*vy3(i)+byx4(i)*vy4(i)
297 + +byx5(i)*vy5(i)+byx6(i)*vy6(i)
298 + +byx7(i)*vy7(i)+byx8(i)*vy8(i)
299 dzz(i) =dzz(i)+byz1(i)*vy1(i)+byz2(i)*vy2(i)
300 + +byz3(i)*vy3(i)+byz4(i)*vy4(i)
301 + +byz5(i)*vy5(i)+byz6(i)*vy6(i)
302 + +byz7(i)*vy7(i)+byz8(i)*vy8(i)
303 dxx(i) =dxx(i)+bzx1(i)*vz1(i)+bzx2(i)*vz2(i)
304 + +bzx3(i)*vz3(i)+bzx4(i)*vz4(i)
305 + +bzx5(i)*vz5(i)+bzx6(i)*vz6(i)
306 + +bzx7(i)*vz7(i)+bzx8(i)*vz8(i)
307 dyy(i) =dyy(i)+bzy1(i)*vz1(i)+bzy2(i)*vz2(i)
308 + +bzy3(i)*vz3(i)+bzy4(i)*vz4(i)
309 + +bzy5(i)*vz5(i)+bzy6(i)*vz6(i)
310 + +bzy7(i)*vz7(i)+bzy8(i)*vz8(i)
311 dvc(i) =(dxx(i)+dyy(i)+dzz(i)-dvc(i))*dt1
312 ENDDO
313 END IF
314
315 IF (icp==2.AND.i_sh<=1) THEN
316 DO i=1,nel
317 dvc(i)=(dsv(i)-dvc(i))*fac(i)*dt1
318 ENDDO
319 ELSEIF (icp==1) THEN
320 DO i=1,nel
321 dvc(i)=(dsv(i)-dvc(i))*dt1
322 ENDDO
323 ENDIF
324 IF ((icp>0.AND.ismstr/=10.AND.ismstr/=12).OR.i_sh>1) THEN
325 DO i=1,nel
326 dv =dvc(i)*off(i)
327 IF(
idege(i)>10) dv = zero
328 sdv(i) =dv
329 IF (dv>tol) THEN
330 dv =zero
331 ENDIF
332 IF(offs(i)==two.OR.ismstr==11) cycle
333 dv1 = one- dv
334 volo(i) = volo(i)*dv1
335 IF (iresp==1) vol0dp(i) = vol0dp(i)*dv1
336 eint(i) = eint(i)/dv1
337
338 ENDDO
339 ELSE
340 DO i=1,nel
341 sdv(i) =zero
342 ENDDO
343 ENDIF
344
345 dt1d2=half*dt1
346 IF (iscau>0)dt1d2=dt1
347 dt1d=two*dt1d2
348 IF (jcvt/=0) THEN
349
350 IF (ismdisp>0.AND.iscau==0) THEN
351 DO i=1,nel
352 d4(i) = dxy(i)+dyx(i)
353 d5(i) = dyz(i)+dzy(i)
354 d6(i) = dxz(i)+dzx(i)
355 wxx(i)=zero
356 wyy(i)=zero
357 wzz(i)=zero
358 ENDDO
359 ELSE
360 DO i=1,nel
361 d4(i) = dxy(i)+dyx(i)
362 . -dt1d*(dxx(i)*dxy(i)+dyx(i)*dyy(i)+dzx(i)*dzy(i))
363 d5(i) = dyz(i)+dzy(i)
364 . -dt1d*(dyy(i)*dyz(i)+dzy(i)*dzz(i)+dxy(i)*dxz(i))
365 d6(i) = dxz(i)+dzx(i)
366 . -dt1d*(dzz(i)*dzx(i)+dxz(i)*dxx(i)+dyz(i)*dyx(i))
367 dxx(i) = dxx(i)
368 . -dt1d2*(dxx(i)*dxx(i)+dyx(i)*dyx(i)+dzx(i)*dzx(i))
369 dyy(i) = dyy(i)
370 . -dt1d2*(dyy(i)*dyy(i)+dzy(i)*dzy(i)+dxy(i)*dxy(i))
371 dzz(i) = dzz(i)
372 . -dt1d2*(dzz(i)*dzz(i)+dxz(i)*dxz(i)+dyz(i)*dyz(i))
373 wxx(i)=zero
374 wyy(i)=zero
375 wzz(i)=zero
376 ENDDO
377 ENDIF
378 ELSE
379 DO i=1,nel
380 d4(i)=dxy(i)+dyx(i)
381 d5(i)=dyz(i)+dzy(i)
382 d6(i)=dxz(i)+dzx(i)
383 wzz(i)=dt1d2*(dyx(i)-dxy(i))
384 wyy(i)=dt1d2*(dxz(i)-dzx(i))
385 wxx(i)=dt1d2*(dzy(i)-dyz(i))
386 ENDDO
387 ENDIF
388
389 RETURN
subroutine idege(x1, x2, x3, x4, y1, y2, y3, y4, z1, z2, z3, z4, a, amax, fac, it4, it, indx, n_indx)