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