35 1 IPM, IGEO, MID, PID,
36 2 UPARAM, SKEW, GEO, FX,
40 6 DPX2, DPY2, DPZ2, FXEP,
42 8 Z0, XMOM, YMOM, ZMOM,
44 A RPY, RPZ, XMEP, YMEP,
45 B ZMEP, RPX2, RPY2, RPZ2,
46 C ANIM, IPOSX, IPOSY, IPOSZ,
47 D IPOSXX, IPOSYY, IPOSZZ,
48 E V, E6, CRITNEW, NEL,
49 F X0_ERR, X1DP, X2DP, YIELDX,
50 G YIELDY, YIELDZ, YIELDX2, YIELDY2,
51 H YIELDZ2, NGL, XKR, EXX,
57 N NC1, NC2, NUVAR, UVAR,
58 O MASS, DX0, DY0, DZ0,
59 P RX0, RY0, RZ0, IEQUIL,
60 Q SKEW_ID, NFT, STF, SANIN,
61 R IRESP, SNPC, SZYIELD_COMP,SZXXOLD_COMP,
62 S YIELDXC, YIELDYC, YIELDZC, YIELDRXC,
63 T YIELDRYC,YIELDRZC,DXOLDC, DYOLDC ,
64 U DZOLDC ,DRXOLDC, DRYOLDC, DRZOLDC)
70#include "implicit_f.inc"
90 type(python_),
INTENT(INOUT) :: PYTHON
91 INTEGER,
INTENT(IN) :: STF
92 INTEGER,
INTENT(IN) :: SANIN
93 INTEGER,
INTENT(IN) :: IRESP
94 INTEGER,
INTENT(IN) :: SNPC
95 INTEGER,
INTENT(IN) :: NFT
96 INTEGER NPF(*), IGEO(NPROPGI,*),NEL,(*),NC1(*),NC2(*),NUVAR,
97 . IPM(NPROPMI,*),MID(*),PID(*),IEQUIL(*),SKEW_ID(*)
98 INTEGER,
INTENT(IN) :: SZYIELD_COMP,SZXXOLD_COMP
101 . SKEW(LSKEW,*), GEO(NPROPG,*), FX(*), FY(*), FZ(*), E(*), DX(*),
102 . (*), DZ(*), TF(STF), OFF(*), DPX(*), DPY(*), DPZ(*), FXEP(*),
103 . FYEP(*), FZEP(*), X0(*), Y0(*), Z0(*), XMOM(*), YMOM(*),
104 . ZMOM(*), RX(*), RY(*), RZ(*), RPX(*), RPY(*), RPZ(*), XMEP(*),
105 . YMEP(*), ZMEP(*), DPX2(*), DPY2(*), DPZ2(*), RPX2(*), RPY2(*),
106 . RPZ2(*), ANIM(SANIN),IPOSX(*),IPOSY(*),IPOSZ(*),IPOSXX(*),
107 . IPOSYY(*),IPOSZZ(*),V(3,*),
108 . CRITNEW(*),E6(NEL,6),X0_ERR(3,*),YIELDX(*),YIELDY(*) ,
109 . YIELDZ(*),YIELDX2(*),YIELDY2(*),YIELDZ2(*),
110 . EXX(MVSIZ), (MVSIZ), EZX(MVSIZ),
111 . EXY(MVSIZ), EYY(MVSIZ), EZY(MVSIZ),
112 . EXZ(MVSIZ), EYZ(MVSIZ), EZZ(MVSIZ),
113 . XCR(MVSIZ),RX1(MVSIZ),RX2(MVSIZ),RY1(MVSIZ),
114 . RY2(MVSIZ),RZ1(MVSIZ),RZ2(MVSIZ),XIN(MVSIZ),
115 . AK(MVSIZ),XM(MVSIZ),XKM(MVSIZ),XCM(MVSIZ),XKR(MVSIZ),
116 . UVAR(NUVAR,*),DX0(*),DY0(*),DZ0(*),RX0(*),RY0(*),RZ0(*),
118 my_real,
INTENT(INOUT) :: YIELDXC(SZYIELD_COMP),YIELDYC(SZYIELD_COMP),
119 . (SZYIELD_COMP),YIELDRXC(SZYIELD_COMP),YIELDRYC(SZYIELD_COMP),
120 . yieldrzc(szyield_comp)
121 my_real,
INTENT(INOUT) :: dxoldc(szxxold_comp),dyoldc(szxxold_comp),
122 . dzoldc(szxxold_comp),drxoldc(szxxold_comp),dryoldc(szxxold_comp),
123 . drzoldc(szxxold_comp)
125 DOUBLE PRECISION X1DP(3,*),X2DP(3,*)
129 INTEGER IFUNC2(MVSIZ),
130 . iecrou(mvsiz), ifunc(mvsiz), ifv(mvsiz),
131 . indx(mvsiz),ifunc3(mvsiz),
132 . i,j,isk, kk,nindx,ifail(mvsiz),ifail2(mvsiz),israte,
133 . i1,i2,i3,i4,i5,i6,i7,i8,i9,i10,i11,i12,i13,i14,i15,
134 . nupar,iadbuf,if1,if2,if3,if4
137 . xk(mvsiz), yk(mvsiz), zk(mvsiz),
138 . xc(mvsiz), yc(mvsiz), zc(mvsiz),
139 . xhr(mvsiz),xh(mvsiz),
140 . dxold(mvsiz), dyold(mvsiz), dzold(mvsiz),dv(mvsiz),
141 . epla(mvsiz),xl0(mvsiz),rscale(mvsiz),
142 . b(mvsiz), d(mvsiz),dmn(mvsiz),dmx(mvsiz),crit(mvsiz),
143 . x21(mvsiz), y21(mvsiz), z21(mvsiz),lscale(mvsiz),ee(mvsiz),
144 . gf3(mvsiz),hx(mvsiz), hy(mvsiz), hz(mvsiz),
145 . x0_ini(mvsiz),y0_ini(mvsiz),z0_ini(mvsiz)
146 my_real :: max_slope(mvsiz)
148 . sx,sy,sz,xx,yy,zz,xka,yka,zka,aa,bb,cc,x21phi,y21phi,z21phi,
149 . asrate,dlim,not_used(2)
150 DOUBLE PRECISION X21DP(MVSIZ),Y21DP(MVSIZ),Z21DP(MVSIZ),
151 . x0dp(mvsiz),y0dp(mvsiz),z0dp(mvsiz)
152 my_real ,
DIMENSION(:),
POINTER :: coord_old
176 iadbuf= ipm(7,mid(i)) - 1
179 xk(i)=uparam(iadbuf + i11 + 1)
180 xc(i)=uparam(iadbuf + i12 + 1)
181 yk(i)=uparam(iadbuf + i11 + 2)
182 yc(i)=uparam(iadbuf + i12 + 2)
183 zk(i)=uparam(iadbuf + i11 + 3)
184 zc(i)=uparam(iadbuf + i12 + 3)
185 ifail(i) = nint(uparam(iadbuf + 1 ))
186 ifail2(i)= nint(uparam(iadbuf + 3 ))
187 xka=xk(i)*uparam(iadbuf + i1 + 1)
188 yka=yk(i)*uparam(iadbuf + i1 + 2)
189 zka=zk(i)*uparam(iadbuf + i1 + 3)
190 xkm(i)=
max(xka,yka,zka)
191 hx(i) = uparam(iadbuf + i14 + 1)
192 hy(i) = uparam(iadbuf + i14 + 2)
193 hz(i) = uparam(iadbuf + i14 + 3)
194 xh(i)=
max(hx(i),hy(i),hz(i))
195 xcm(i)=
max(xc(i),yc(i),zc(i))
209 iequil(i) = uparam(iadbuf + 2)
220 IF (inispri /= 0 .and. tt == zero)
THEN
228 IF (inispri /= 0 .and. tt == zero)
THEN
237 x21dp(i)= x2dp(1,i)-x1dp(1,i)
238 y21dp(i)= x2dp(2,i)-x1dp(2,i)
239 z21dp(i)= x2dp(3,i)-x1dp(3,i)
247 x0dp(i)= x21dp(i)*exx(i)+y21dp(i)*eyx(i)+z21dp(i)*ezx(i)
248 y0dp(i)= x21dp(i)*exy(i)+y21dp(i)*eyy(i)+z21dp(i)*ezy(i)
249 z0dp(i)= x21dp(i)*exz(i)+y21dp(i)*eyz(i)+z21dp(i)*ezz(i)
255 IF (inispri /= 0)
THEN
256! condition needed
for spring
type 8, which are not concerned by /inispri,
259 IF (x0_ini(i) == zero .and. dx0
260 IF (y0_ini(i) == zero .and. dy0(i) == zero) y0_ini(i) = y0dp(i)
261 IF (z0_ini(i) == zero .and. dz0(i) == zero) z0_ini(i) = z0dp(i)
267 IF (scodver >= 101)
THEN
270 x0_err(1,i)= x0dp(i)-x0(i)
271 x0_err(2,i)= y0dp(i)-y0(i)
272 x0_err(3,i)= z0dp(i)-z0(i)
277 IF (inispri /= 0 .and. tt == zero)
THEN
291 IF (scodver >= 101)
THEN
293 x0dp(i)= x0dp(i) + x0_err(1,i)
294 y0dp(i)= y0dp(i) + x0_err(2,i)
295 z0dp(i)= z0dp(i) + x0_err(3,i)
299 IF (ismdisp > 0)
THEN
301 IF (iequil(i) == 1)
THEN
302 sx= half*(rx2(i)+rx1(i))
303 sy= half*(ry2(i)+ry1(i))
304 sz= half*(rz2(i)+rz1(i))
305 xx = y21(i)*sz - z21(i)*sy
306 yy = z21(i)*sx - x21(i)*sz
307 zz = x21(i)*sy - y21(i)*sx
308 xx= (v(1,nc2(i)) - v(1,nc1(i)) + xx)*dt1
309 yy= (v(2,nc2(i)) - v(2,nc1(i)) + yy)*dt1
310 zz= (v(3,nc2(i)) - v(3,nc1(i)) + zz)*dt1
312 xx= (v(1,nc2(i)) - v(1,nc1(i)))*dt1
313 yy= (v(2,nc2(i)) - v(2,nc1(i)))*dt1
314 zz= (v(3,nc2(i)) - v(3,nc1(i)))*dt1
316 dx(i) = dxold(i)+xx*exx(i)+yy*eyx(i)+zz*ezx(i)
317 dy(i) = dyold(i)+xx*exy(i)+yy*eyy(i)+zz*ezy(i)
318 dz(i) = dzold(i)+xx*exz(i)+yy*eyz(i)+zz*ezz(i)
324 IF (iequil(i) == 1)
THEN
325 sx= half*(rx2(i)+rx1(i))
326 sy= half*(ry2(i)+ry1(i))
327 sz= half*(rz2(i)+rz1(i))
328 xx = y21(i)*sz - z21(i)*sy
329 yy = z21(i)*sx - x21(i)*sz
330 zz = x21(i)*sy - y21(i)*sx
331 xx= (v(1,nc2(i)) - v(1,nc1(i)) + xx)*dt1
332 yy= (v(2,nc2(i)) - v(2,nc1(i)) + yy)*dt1
333 zz= (v(3,nc2(i)) - v(3,nc1(i)) + zz)*dt1
334 dx(i)= dxold(i) + xx*exx(i)+yy*eyx(i)+zz*ezx(i)
335 dy(i)= dyold(i) + xx*exy(i)+yy*eyy(i)+zz*ezy(i)
336 dz(i)= dzold(i) + xx*exz(i)+yy*eyz(i)+zz*ezz(i)
338 dx(i)= x21dp(i)*exx(i)+y21dp(i)*eyx(i)+z21dp(i)*ezx(i)-x0dp(i)
339 dy(i)= x21dp(i)*exy(i)+y21dp(i)*eyy(i)+z21dp(i)*ezy(i)-y0dp(i)
340 dz(i)= x21dp(i)*exz(i)+y21dp(i)*eyz(i)+z21dp(i)*ezz(i)-z0dp(i)
352 iadbuf = ipm(7,mid(i)) - 1
353 ifunc(i) = ipm(10 + if1 + 1,mid(i))
354 ifv(i) = ipm(10 + if2 + 1,mid(i))
355 ifunc2(i)= ipm(10 + if3 + 1,mid(i))
356 ifunc3(i)= ipm(10 + if4 + 1,mid(i))
357 iecrou(i)= nint(uparam(iadbuf + i13 + 1))
358 ak(i) = uparam(iadbuf + i1 + 1)
359 b(i) = uparam(iadbuf + i2 + 1)
360 d(i) = uparam(iadbuf + i3 + 1)
361 ee(i) = uparam(iadbuf + i4 + 1)
362 gf3(i) = uparam(iadbuf + i5 + 1)
363 rscale(i)= uparam(iadbuf + i6 + 1)
364 lscale(i)= uparam(iadbuf + i7 + 1)
365 dmn(i) = uparam(iadbuf + i8 + 1)
366 dmx(i) = uparam(iadbuf + i9 + 1)
369 coord_old => uvar(1,1:nel)
371 coord_old => not_used
376 2 dxold, dpx, tf, npf,
377 3 xc, off, e6(1,1), dpx2,
378 4 anim, anim_fe(11),iposx,
380 6 rscale, lscale, ee, gf3,
381 7 ifunc3, yieldx, x0dp, ak,
382 8 b, d, iecrou, ifunc,
383 9 ifv, ifunc2, epla, coord_old,
384 a nel, nft, stf, sanin,
385 b dt1, iresp, impl_s, idyna,
386 c snpc, max_slope, yieldc=yieldxc, xx_oldc=dxoldc,
387 d fx0=uparam(iadbuf+i15+1))
390 IF (ifail2(i) == 0)
THEN
391 IF (dx(i) > zero)
THEN
392 dlim = dx(i) / dmx(i)
394 dlim = dx(i) / dmn(i)
396 ELSEIF (ifail2(i) == 1)
THEN
397 IF (fx(i) > zero)
THEN
398 dlim = fx(i) / dmx(i)
400 dlim = fx(i) / dmn(i)
402 ELSEIF (ifail2(i) == 2)
THEN
403 dlim =
max(zero, e6(i,1)) / dmx(i)
405 IF (off(i) == one .AND. dmx(i) /= zero .AND. dmn(i) /= zero)
THEN
406 IF( ifail(i) == 0 )
THEN
408 crit(i) =
max(crit(i),dlim)
411 crit(i) = crit(i) + dlim**2
416 iadbuf = ipm(7,mid(i)) - 1
417 ifunc(i) = ipm(10 + if1 + 2,mid(i))
418 ifv(i) = ipm(10 + if2 + 2,mid(i))
419 ifunc2(i)= ipm(10 + if3 + 2,mid(i))
420 ifunc3(i)= ipm(10 + if4 + 2,mid(i))
421 iecrou(i)= nint(uparam(iadbuf + i13 + 2))
422 ak(i) = uparam(iadbuf + i1 + 2)
423 b(i) = uparam(iadbuf + i2 + 2)
424 d(i) = uparam(iadbuf + i3 + 2)
425 ee(i) = uparam(iadbuf + i4 + 2)
426 gf3(i) = uparam(iadbuf + i5 + 2)
427 rscale(i)= uparam(iadbuf + i6 + 2)
428 lscale(i)= uparam(iadbuf + i7 + 2)
429 dmn(i) = uparam(iadbuf + i8 + 2)
430 dmx(i) = uparam(iadbuf + i9 + 2)
432 kk = 1 + numelr * anim_fe(11)
435 coord_old => uvar(2,1:nel)
437 coord_old => not_used
442 2 dyold, dpy, tf, npf,
443 3 yc, off, e6(1,2), dpy2,
444 4 anim(kk), anim_fe(12),iposy,
446 6 rscale, lscale, ee, gf3,
447 7 ifunc3, yieldy, y0dp, ak,
448 8 b, d, iecrou, ifunc,
449 9 ifv, ifunc2, epla, coord_old,
450 a nel, nft, stf, sanin,
451 b dt1, iresp, impl_s, idyna,
452 c snpc, max_slope, yieldc=yieldyc, xx_oldc=dyoldc,
453 d fx0=uparam(iadbuf+i15+2))
456 IF (ifail2(i) == 0 )
THEN
457 IF (dy(i) > zero)
THEN
458 dlim = dy(i) / dmx(i)
460 dlim = dy(i) / dmn(i)
462 ELSEIF (ifail2(i) == 1)
THEN
463 IF (fy(i) > zero)
THEN
464 dlim = fy(i) / dmx(i)
466 dlim = fy(i) / dmn(i)
468 ELSEIF (ifail2(i) == 2)
THEN
469 dlim =
max(zero, e6(i,2)) / dmx(i)
471 IF (off(i) == one .AND. dmx(i) /= zero .AND. dmn(i) /= zero)
THEN
472 IF (ifail(i) == 0)
THEN
474 crit(i) =
max(crit(i),dlim)
477 crit(i) = crit(i) + dlim**2
482 iadbuf = ipm(7,mid(i)) - 1
483 ifunc(i) = ipm(10 + if1 + 3,mid(i))
485 ifunc2(i)= ipm(10 + if3 + 3,mid(i))
486 ifunc3(i)= ipm(10 + if4 + 3,mid(i))
487 iecrou(i)= nint(uparam(iadbuf + i13 + 3))
488 ak(i) = uparam(iadbuf + i1 + 3)
489 b(i) = uparam(iadbuf + i2 + 3)
490 d(i) = uparam(iadbuf + i3 + 3)
491 ee(i) = uparam(iadbuf + i4 + 3)
492 gf3(i) = uparam(iadbuf
493 rscale(i)= uparam(iadbuf + i6 + 3)
494 lscale(i)= uparam(iadbuf + i7 + 3)
495 dmn(i) = uparam(iadbuf + i8 + 3)
496 dmx(i) = uparam(iadbuf + i9 + 3)
498 kk = 1 + numelr * (anim_fe(11)+anim_fe(12))
500 coord_old => uvar(3,1:nel)
502 coord_old => not_used
506 2 dzold, dpz, tf, npf,
507 3 zc, off, e6(1,3), dpz2,
508 4 anim(kk), anim_fe(13),iposz,
510 6 rscale, lscale, ee, gf3,
511 7 ifunc3, yieldz, z0dp, ak,
512 8 b, d, iecrou, ifunc,
513 9 ifv, ifunc2, epla, coord_old,
514 a nel, nft, stf, sanin,
515 b dt1, iresp, impl_s, idyna,
516 c snpc, max_slope, yieldc=yieldzc, xx_oldc=dzoldc,
517 d fx0=uparam(iadbuf+i15+3))
520 IF (ifail2(i) == 0)
THEN
521 IF (dz(i) > zero)
THEN
522 dlim = dz(i) / dmx(i)
524 dlim = dz(i) / dmn(i)
526 ELSEIF (ifail2(i) == 1)
THEN
527 IF (fz(i) > zero)
THEN
528 dlim = fz(i) / dmx(i)
530 dlim = fz(i) / dmn(i)
532 ELSEIF (ifail2(i) == 2)
THEN
533 dlim =
max(zero, e6(i,3)) / dmx(i)
535 IF (off(i) == one .AND. dmx(i) /= zero .AND. dmn(i) /= zero)
THEN
536 IF (ifail(i) == 0)
THEN
538 crit(i) =
max(crit(i),dlim)
541 crit(i) = crit(i) + dlim**2
549 iadbuf= ipm(7,mid(i)) - 1
550 xin(i)= geo(2,pid(i))
551 xk(i) = uparam(iadbuf + i11 + 4)
552 xc(i) = uparam(iadbuf + i12 + 4)
553 yk(i) = uparam(iadbuf + i11 + 5)
554 yc(i) = uparam(iadbuf + i12 + 5)
555 zk(i) = uparam(iadbuf + i11 + 6)
556 zc(i) = uparam(iadbuf + i12 + 6)
557 hx(i) = uparam(iadbuf + i14 + 4)
558 hy(i) = uparam(iadbuf + i14 + 5)
559 hz(i) = uparam(iadbuf + i14 + 6)
561 xhr(i)=
max(hx(i),hy(i),hz(i))
562 xkr(i)=
max(xk(i)*uparam(iadbuf + i1 + 4),
563 . yk(i)*uparam(iadbuf + i1 + 5),
564 . zk(i)*uparam(iadbuf + i1 + 6))
565 xcr(i)=
max(xc(i),yc(i),zc(i)) + xhr(i)
574 IF (inispri /= 0 .and. tt == zero)
THEN
583 x21(i)= (rx2(i)-rx1(i))*dt1
584 y21(i)= (ry2(i)-ry1(i))*dt1
585 z21(i)= (rz2(i)-rz1(i))*dt1
586 rx(i)= dxold(i)+x21(i)*exx(i)+y21(i)*eyx(i)+z21(i)*ezx(i)
587 ry(i)= dyold(i)+x21(i)*exy(i)+y21(i)*eyy(i)+z21(i)*ezy(i)
588 rz(i)= dzold(i)+x21(i)*exz(i)+y21(i)*eyz(i)+z21(i)*ezz(i)
592 iadbuf = ipm(7,mid(i)) - 1
593 ifunc(i) = ipm(10 + if1 + 4,mid(i))
594 ifv(i) = ipm(10 + if2 + 4,mid(i))
595 ifunc2(i)= ipm(10 + if3 + 4,mid(i))
596 ifunc3(i)= ipm(10 + if4 + 4,mid(i))
597 iecrou(i)= nint(uparam(iadbuf + i13 + 4))
598 ak(i) =uparam(iadbuf + i1 + 4)
599 b(i) =uparam(iadbuf + i2 + 4)
600 d(i) =uparam(iadbuf + i3 + 4)
601 ee(i) =uparam(iadbuf + i4 + 4)
602 gf3(i) =uparam(iadbuf + i5 + 4)
603 rscale(i)=uparam(iadbuf + i6 + 4)
605 dmn(i) =uparam(iadbuf + i8 + 4)
606 dmx(i) =uparam(iadbuf + i9 + 4)
609 coord_old => uvar(4,1:nel)
611 coord_old => not_used
614 1 xmom, xk, rx, xmep,
615 2 dxold, rpx, tf, npf,
616 3 xc, off, e6(1,4), rpx2,
620 7 ifunc3, yieldx2, x0dp, ak,
621 8 b, d, iecrou, ifunc,
622 9 ifv, ifunc2, epla, coord_old,
623 a nel, nft, stf, sanin,
624 b dt1, iresp, impl_s, idyna,
625 c snpc, max_slope, yieldc=yieldrxc, xx_oldc=drxoldc,
626 d fx0=uparam(iadbuf+i15+4))
629 IF (ifail2(i) == 0)
THEN
630 IF (rx(i) > zero)
THEN
631 dlim = rx(i) / dmx(i)
633 dlim = rx(i) / dmn(i)
635 ELSEIF (ifail2(i) == 1)
THEN
636 IF (xmom(i) > zero)
THEN
637 dlim = xmom(i) / dmx(i)
639 dlim = xmom(i) / dmn(i)
641 ELSEIF (ifail2(i) == 2)
THEN
642 dlim =
max(zero, e6(i,4)) / dmx(i)
644 IF (off(i) == one .AND. dmx(i) /= zero .AND. dmn(i) /= zero)
THEN
645 IF (ifail(i) == 0)
THEN
647 crit(i) =
max(crit(i),dlim)
650 crit(i) = crit(i) + dlim**2
656 iadbuf= ipm(7,mid(i)) - 1
657 ifunc(i) = ipm(10 + if1 + 5,mid(i))
658 ifv(i) = ipm(10 + if2 + 5,mid(i))
659 ifunc2(i)= ipm(10 + if3 + 5,mid(i))
660 ifunc3(i)= ipm(10 + if4 + 5,mid(i))
661 iecrou(i)= nint(uparam(iadbuf + i13 + 5))
662 ak(i) = uparam(iadbuf + i1 + 5)
663 b(i) = uparam(iadbuf + i2 + 5)
664 d(i) = uparam(iadbuf + i3 + 5)
665 ee(i) = uparam(iadbuf + i4 + 5)
666 gf3(i) = uparam(iadbuf + i5 + 5)
667 rscale(i)= uparam(iadbuf + i6 + 5)
668 lscale(i)= uparam(iadbuf + i7 + 5)
669 dmn(i) = uparam(iadbuf + i8 + 5)
670 dmx(i) = uparam(iadbuf + i9 + 5)
673 coord_old => uvar(5,1:nel)
675 coord_old => not_used
679 1 ymom, yk, ry, ymep,
680 2 dyold, rpy, tf, npf,
681 3 yc, off, e6(1,5), rpy2,
684 6 rscale, lscale, ee, gf3,
685 7 ifunc3, yieldy2, y0dp, ak,
686 8 b, d, iecrou, ifunc,
687 9 ifv, ifunc2, epla, coord_old,
688 a nel, nft, stf, sanin,
689 b dt1, iresp, impl_s, idyna,
690 c snpc, max_slope, yieldc=yieldryc, xx_oldc=dryoldc,
691 d fx0=uparam(iadbuf+i15+5))
694 IF (ifail2(i) == 0)
THEN
695 IF (ry(i) > zero)
THEN
696 dlim = ry(i) / dmx(i)
698 dlim = ry(i) / dmn(i)
700 ELSEIF (ifail2(i) == 1)
THEN
701 IF (ymom(i) > zero)
THEN
702 dlim = ymom(i) / dmx(i)
704 dlim = ymom(i) / dmn(i)
706 ELSEIF (ifail2(i) == 2)
THEN
707 dlim =
max(zero,e6(i,5)) / dmx(i)
709 IF (off(i) == one .AND. dmx(i) /= zero .AND. dmn(i) /= zero)
THEN
710 IF (ifail(i) == 0)
THEN
712 crit(i) =
max(crit(i),dlim)
715 crit(i) = crit(i) + dlim**2
721 iadbuf = ipm(7,mid(i)) - 1
722 ifunc(i) = ipm(10 + if1 + 6,mid(i))
723 ifv(i) = ipm(10 + if2 + 6,mid(i))
724 ifunc2(i)= ipm(10 + if3 + 6,mid(i))
725 ifunc3(i)= ipm(10 + if4 + 6,mid(i))
726 iecrou(i)= nint(uparam(iadbuf + i13 + 6))
727 ak(i) = uparam(iadbuf + i1 + 6)
728 b(i) = uparam(iadbuf + i2 + 6)
729 d(i) = uparam(iadbuf + i3 + 6)
730 ee(i) = uparam(iadbuf + i4 + 6)
731 gf3(i) = uparam(iadbuf + i5 + 6)
732 rscale(i)= uparam(iadbuf + i6 + 6)
733 lscale(i)= uparam(iadbuf + i7 + 6)
734 dmn(i) = uparam(iadbuf + i8 + 6)
735 dmx(i) = uparam(iadbuf + i9 + 6)
738 coord_old => uvar(6,1:nel)
740 coord_old => not_used
744 1 zmom, zk, rz, zmep,
745 2 dzold, rpz, tf, npf,
746 3 zc, off, e6(1,6), rpz2,
749 6 rscale, lscale, ee, gf3,
750 7 ifunc3, yieldz2, z0dp, ak,
751 8 b, d, iecrou, ifunc,
752 9 ifv, ifunc2, epla, coord_old,
753 a nel, nft, stf, sanin,
754 b dt1, iresp, impl_s, idyna,
755 c snpc, max_slope, yieldc=yieldrzc, xx_oldc=drzoldc,
756 d fx0=uparam(iadbuf+i15+6))
759 IF (ifail2(i) == 0)
THEN
760 IF (rz(i) > zero)
THEN
761 dlim = rz(i) / dmx(i)
763 dlim = rz(i) / dmn(i)
765 ELSEIF (ifail2(i) == 1)
THEN
766 IF (zmom(i) > zero)
THEN
767 dlim = zmom(i) / dmx(i)
769 dlim = zmom(i) / dmn(i)
771 ELSEIF (ifail2(i) == 2)
THEN
772 dlim =
max(zero,e6(i,6)) / dmx(i)
774 IF (off(i) == one .AND. dmx(i) /= zero .AND. dmn(i) /= zero)
THEN
775 IF (ifail(i) == 0)
THEN
777 crit(i) =
max(crit(i),dlim)
780 crit(i) = crit(i) + dlim**2
789 iadbuf = ipm(7,mid(i)) - 1
790 israte = nint(uparam(iadbuf + nupar + 1))
792 asrate = uparam(iadbuf + nupar + 2)
793 asrate = (2*pi*asrate*dt1)/(one+2*pi*asrate*dt1)
794 IF (israte /= 0)
THEN
795 IF (critnew(i) < one)
THEN
796 crit(i) =
min(crit(i),one+em3)
797 crit(i) = asrate*crit(i) + (one - asrate)*critnew(i)
798 critnew(i) =
min(crit(i),one)
803 IF (critnew(i) < one)
THEN
804 critnew(i) =
min(crit(i),one)
809 IF (off(i) == one .AND. crit(i) >= one)
THEN
820 WRITE(iout, 1000) ngl(i)
821 WRITE(istdo,1100) ngl(i),tt
822#include "lockoff.inc"
829 2 iecrou, ifunc, ifv, epla,
833 2 iecrou, ifunc, ifv, epla,
837 2 iecrou, ifunc, ifv, epla,
841 iadbuf= ipm(7,mid(i)) - 1
842 xk(i)=uparam(iadbuf + i11 + 1)
843 yk(i)=uparam(iadbuf + i11 + 2)
844 zk(i)=uparam(iadbuf + i11 + 3)
845 e(i) = e6(i,1)+e6(i,2)+e6(i,3)+e6(i,4)+e6(i,5)+e6(i,6)
850 2 iecrou, ifunc, ifv, epla,
854 2 iecrou, ifunc, ifv, epla,
858 2 iecrou, ifunc, ifv, epla,
861 1000
FORMAT(1x,
'-- RUPTURE OF SPRING ELEMENT NUMBER ',i10)
862 1100
FORMAT(1x,
'-- RUPTURE OF SPRING ELEMENT :',i10,
' AT TIME :',g11.4)
subroutine r23l108def3(python, ipm, igeo, mid, pid, uparam, skew, geo, fx, fy, fz, e, dx, dy, dz, npf, tf, off, dpx, dpy, dpz, dpx2, dpy2, dpz2, fxep, fyep, fzep, x0, y0, z0, xmom, ymom, zmom, rx, ry, rz, rpx, rpy, rpz, xmep, ymep, zmep, rpx2, rpy2, rpz2, anim, iposx, iposy, iposz, iposxx, iposyy, iposzz, v, e6, critnew, nel, x0_err, x1dp, x2dp, yieldx, yieldy, yieldz, yieldx2, yieldy2, yieldz2, ngl, xkr, exx, eyx, ezx, exy, eyy, ezy, exz, eyz, ezz, xcr, rx1, ry1, rz1, rx2, ry2, rz2, xin, ak, xm, xkm, xcm, nc1, nc2, nuvar, uvar, mass, dx0, dy0, dz0, rx0, ry0, rz0, iequil, skew_id, nft, stf, sanin, iresp, snpc, szyield_comp, szxxold_comp, yieldxc, yieldyc, yieldzc, yieldrxc, yieldryc, yieldrzc, dxoldc, dyoldc, dzoldc, drxoldc, dryoldc, drzoldc)