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