35 1 SKEW, IPM, IGEO, MID,
36 2 PID, GEO, UPARAM, 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, POSX, POSY, POSZ,
47 D POSXX, POSYY, POSZZ, FR_WAVE,
48 E E6, NEL, EXX2, EYX2,
49 F EZX2, EXY2, EYY2, EZY2,
50 G EXZ2, EYZ2, EZZ2, AL2DP,
51 H NGL, CRIT_NEW,X0_ERR, ALDP,
52 I YIELDX, YIELDY, YIELDZ, YIELDX2,
53 J YIELDY2, YIELDZ2, EXX, EYX,
60 Q VZ1, VZ2, NUVAR, UVAR,
61 R MASS, DX0, DY0, DZ0,
63 T STF, SANIN, IRESP, SNPC,
64 U SZYIELD_COMP,SZXXOLD_COMP,YIELDXC,YIELDYC,
65 V YIELDZC, YIELDRXC,YIELDRYC,YIELDRZC,
66 W DXOLDC, DYOLDC, DZOLDC, DRXOLDC,
74#include "implicit_f.inc"
94 type(),
intent(inout) :: PYTHON
95 INTEGER,
INTENT(IN) :: NFT
96 INTEGER NPF(*),IGEO(NPROPGI,*),NEL,NGL(*),PID(*),MID(*),NUVAR,
98 INTEGER,
INTENT(IN) :: STF
99 INTEGER,
INTENT(IN) :: SANIN
100 INTEGER,
INTENT(IN) :: IRESP
101 INTEGER,
INTENT(IN) :: SNPC
102 INTEGER,
INTENT(IN) :: SZYIELD_COMP
103 INTEGER,
INTENT(IN) :: SZXXOLD_COMP
106 . SKEW(LSKEW,*), GEO(NPROPG,*), FX(*), FY(*), FZ(*), E(*), DX(*),
107 . DY(*), DZ(*), TF(*), OFF(*), DPX(*), DPY(*), DPZ(*), FXEP(*),
108 . FYEP(*), FZEP(*), X0(*), Y0(*), Z0(*), (*), YMOM(*),
109 . ZMOM(*), (*), RY(*), RZ(*), RPX(*), RPY(*), RPZ(*), XMEP(*),
110 . YMEP(*), ZMEP(*), DPX2(*), DPY2(*), DPZ2(*),RPX2(*), (*),
111 . RPZ2(*),ANIM(*),FR_WAVE(*),E6(,6),
112 . EXX2(MVSIZ), EYX2(MVSIZ), EZX2(MVSIZ),
113 . EXY2(MVSIZ), EYY2(MVSIZ), EZY2(MVSIZ),
114 . EXZ2(), EYZ2(MVSIZ), EZZ2(),
115 . CRIT_NEW(*), X0_ERR(MVSIZ),YIELDX(*),YIELDY(*),
116 . YIELDZ(*),YIELDX2(*),YIELDY2(*),YIELDZ2(
119 . EZZ(MVSIZ), XCR(MVSIZ), RX1(MVSIZ), RX2(MVSIZ),
120 . RY1(), RY2(MVSIZ), RZ1(MVSIZ), RZ2(MVSIZ),
121 . XIN(MVSIZ),AK(MVSIZ),XM(MVSIZ),XKM(MVSIZ),XCM(MVSIZ),
122 . XKR(MVSIZ),VX1(MVSIZ),VX2(MVSIZ),VY1(MVSIZ)
125DIMENSION(6,NEL),
INTENT(INOUT) :: POSX,POSY,POSZ,POSXX,,POSZZ
126 my_real,
INTENT(INOUT) :: YIELDXC(SZYIELD_COMP),YIELDYC(SZYIELD_COMP),
127 . yieldzc(szyield_comp),yieldrxc(szyield_comp),yieldryc(szyield_comp),
128 . yieldrzc(szyield_comp)
129 my_real,
INTENT(INOUT) :: dxoldc(szxxold_comp),dyoldc(szxxold_comp),
130 . dzoldc(szxxold_comp),drxoldc(szxxold_comp
131 . drzoldc(szxxold_comp)
133 DOUBLE PRECISION ALDP(MVSIZ),AL2DP(MVSIZ)
138 . iecrou(mvsiz), ifunc(mvsiz), ifv(mvsiz), ifunc2(mvsiz),
139 . i, ileng, j, kk, ifail(mvsiz),ifail2(mvsiz),
140 . nindx,israte, ifunc3(mvsiz),i1,i2,i3,i4,i5,i6,i7,i8,
145 . xk(mvsiz), yk(mvsiz),
146 . zk(mvsiz),xc(mvsiz), yc(mvsiz), zc(mvsiz),xh(mvsiz),
147 . xhr(mvsiz),dxold(mvsiz), dyold(mvsiz), dzold(mvsiz),
148 . b(mvsiz), d(mvsiz), epla(mvsiz),
149 . dv(mvsiz),vrt(mvsiz),vrr(mvsiz),
150 . dmn(mvsiz),dmx(mvsiz),xl0(mvsiz),crit(mvsiz),
151 . xn(mvsiz),ff(mvsiz),lscale(mvsiz),ee(mvsiz),gf3(mvsiz),
152 . hx(mvsiz), hy(mvsiz), hz(mvsiz)
154 . at,dt05,xka,yka,zka,cc,cn,xa,xb,dlim,vfail,
155 . x21, y21, z21, epxy, epxz,
156 . vx21, vy21, vz21, ryavp, rzavp,eyzp,exzp,
157 . ryav, rzav,den, c, cp, exyp,
158 . x21phi, y21phi, z21phi, vx21phi, vy21phi, vz21phi,
159 . ryav1, rzav1, ryav1p, rzav1p,asrate,not_used(2)
160 my_real :: max_slope(mvsiz)
161 DOUBLE PRECISION X0DP(MVSIZ)
162 my_real ,
DIMENSION(:),
POINTER :: coord_old
163 LOGICAL :: ANY_PYTHON_FUNCTION
187 iadbuf= ipm(7,mid(i)) - 1
190 xk(i)=uparam(iadbuf + i11 + 1)
191 xc(i)=uparam(iadbuf + i12 + 1)
192 yk(i)=uparam(iadbuf + i11 + 2)
193 yc(i)=uparam(iadbuf + i12 + 2)
194 zk(i)=uparam(iadbuf + i11 + 3)
195 zc(i)=uparam(iadbuf + i12 + 3)
196 xka=xk(i)*uparam(iadbuf + i1 + 1)
197 yka=yk(i)*uparam(iadbuf + i1 + 2)
198 zka=zk(i)*uparam(iadbuf + i1 + 3)
199 xkm(i)=
max(xka,yka,zka)
200 hx(i) = uparam(iadbuf + i14 + 1)
201 hy(i) = uparam(iadbuf + i14 + 2)
202 hz(i) = uparam(iadbuf + i14 + 3)
204 xh(i)=
max(hx(i),hy(i),hz(i))
205 xcm(i)=
max(xc(i),yc(i),zc(i))
208 xkr(i)=
max(yka,zka) * aldp(i) * aldp(i)
209 xcr(i)= (
max(yc(i),zc(i)) +
max(hy(i),hz(i))) * aldp(i) * aldp(i)
210 vrt(i) = uparam(iadbuf + nupar + 1)
211 vrr(i) = uparam(iadbuf + nupar + 2)
212 ifail(i) = nint(uparam(iadbuf + 1 ))
213 ifail2(i)= nint(uparam(iadbuf + 3 ))
216 IF (inispri /= 0 .and. tt == zero)
THEN
220 IF (xl0(i) == zero) xl0(i) = aldp(i)
230 IF (scodver >= 101)
THEN
233 x0_err(i)= aldp(i)-x0(i)
238 IF ( inispri /= 0 .and. tt == zero)
THEN
248 IF (scodver >= 101)
THEN
250 x0dp(i)= x0(i) + x0_err(i)
262 IF (inispri /= 0 .and. tt == zero)
THEN
271 IF (ismdisp > 0)
THEN
276 dx(i) = dxold(i)+(vx21*exx(i)+vy21*eyx(i)+vz21*ezx(i))*dt1
277 dy(i) = dyold(i)+(vx21*exy(i)+vy21
278 dz(i) = dzold(i)+(vx21*exz(i)+vy21*eyz(i)+vz21*ezz(i))*dt1
280 x21 = (rx2(i)+rx1(i))
281 y21 = (ry2(i)+ry1(i))
282 z21 = (rz2(i)+rz1(i))
284 ryav1 = (x21*exy2(i)+y21*eyy2(i)+z21*ezy2(i))
285 rzav1 = (x21*exz2(i)+y21*eyz2(i)+z21*ezz2(i))
290 dy(i) = dy(i) - rzav * al2dp(i)
291 dz(i) = dz(i) + ryav * al2dp(i)
301 epxy = (vx21*exy2(i)+vy21*eyy2(i)+vz21*ezy2(i))*dt05
302 epxz = (vx21*exz2(i)+vy21*eyz2(i)+vz21*ezz2(i))*dt05
304 x21 = (rx2(i)+rx1(i))
305 y21 = (ry2(i)+ry1(i))
306 z21 = (rz2(i)+rz1(i))
308 ryav1 = (x21*exy2(i)+y21*eyy2(i)+z21*ezy2(i))
309 rzav1 = (x21*exz2(i)+y21*eyz2(i)+z21*ezz2(i))
311 at=epxz/
max(al2dp(i),em30)
314 at=epxy/
max(al2dp(i),em30)
316 rzav = dt05 * (rzav1) - two * at
318 dx(i) = aldp(i) - x0dp(i)
319 dy(i) = dyold(i) - rzav * al2dp(i)
320 dz(i) = dzold(i) + ryav * al2dp(i)
327 iadbuf = ipm(7,mid(i)) - 1
328 ileng = nint(uparam(iadbuf + 2))
343 iadbuf = ipm(7,mid(i)) - 1
344 ifunc(i) = ipm(10 + if1 + 1,mid(i))
345 ifv(i) = ipm(10 + if2 + 1,mid(i))
346 ifunc2(i)= ipm(10 + if3 + 1,mid(i))
347 ifunc3(i)= ipm(10 + if4 + 1,mid(i))
348 ifunc4(i)= ipm(10 + if5 + 1,mid(i))
349 iecrou(i)= nint(uparam(iadbuf + i13 + 1))
350 ak(i) = uparam(iadbuf + i1 + 1)
351 b(i) = uparam(iadbuf + i2 + 1)
352 d(i) = uparam(iadbuf + i3 + 1)
353 ee(i) = uparam(iadbuf + i4 + 1)
354 gf3(i) = uparam(iadbuf + i5 + 1)
355 ff(i) = uparam(iadbuf + i6 + 1)
356 lscale(i)= uparam(iadbuf + i7 + 1)
357 dmn(i) = uparam(iadbuf + i8 + 1)
358 dmx(i) = uparam(iadbuf + i9 + 1)
361 coord_old => uvar(1,1:nel)
363 coord_old => not_used
367 . dxold, dpx, tf, npf,
368 . xc, off, e6(1,1), dpx2,
369 . anim, anim_fe(11),posx,
371 . ff, lscale, ee, gf3,
372 . ifunc3, yieldx, aldp, ak,
373 . b, d, iecrou, ifunc,
374 . ifv, ifunc2, epla, coord_old,
375 . nel, nft, stf, sanin,
376 . dt1, iresp, impl_s, idyna,
377 . snpc, yieldc=yieldxc, xx_oldc=dxoldc,
378 . fx0=uparam(iadbuf+i15+1),ifunc4=ifunc4,pos6=posx(6,1))
381 cc = uparam(iadbuf + nupar + 3)
382 cn = uparam(iadbuf + nupar + 9)
383 xa = uparam(iadbuf + nupar + 15)
384 xb = uparam(iadbuf + nupar + 21)
385 IF (off(i) == one .AND. dmx(i) /= zero .AND. dmn(i)/= zero)
THEN
386 IF (ifail2(i) == 0)
THEN
389 IF (dx(i) > zero)
THEN
390 dlim = dx(i) / (xl0(i)*dmx(i))
392 dlim = dx(i) / (xl0(i)*dmn(i))
395 vfail = cc * (abs(dv(i)/vrt(i)))**cn
396 IF (ifail2(i) == 1)
THEN
397 IF (dx(i) > zero)
THEN
398 dlim = dx(i) / (xl0(i)*dmx(i) + vfail)
400 dlim = dx(i) / (xl0(i)*dmn(i) - vfail)
402 ELSEIF (ifail2(i) == 2)
THEN
403 IF (fx(i) > zero)
THEN
404 dlim = fx(i) / (dmx(i) + vfail)
406 dlim = fx(i) / (dmn(i) - vfail)
408 ELSEIF (ifail2(i) == 3)
THEN
409 dlim =
max(zero,e6(i,1)) / (dmx(i) + vfail)
412 IF (ifail(i) == 0)
THEN
414 crit(i) =
max(crit(i),xa*dlim)
417 crit(i)= crit(i) + xa*dlim**xb
423 iadbuf = ipm(7,mid(i)) - 1
424 ifunc(i) = ipm(10 + if1 + 2,mid(i))
425 ifv(i) = ipm(10 + if2 + 2,mid(i))
426 ifunc2(i)= ipm(10 + if3 + 2,mid(i))
427 ifunc3(i)= ipm(10 + if4 + 2,mid(i))
428 ifunc4(i)= ipm(10 + if5 + 2,mid(i))
429 iecrou(i)= nint(uparam(iadbuf + i13 + 2))
430 ak(i) = uparam(iadbuf + i1 + 2)
431 b(i) = uparam(iadbuf + i2 + 2)
432 d(i) = uparam(iadbuf + i3 + 2)
433 ee(i) = uparam(iadbuf + i4 + 2)
434 gf3(i) = uparam(iadbuf + i5 + 2)
435 ff(i) = uparam(iadbuf + i6 + 2)
436 lscale(i)= uparam(iadbuf + i7 + 2)
437 dmn(i) = uparam(iadbuf + i8 + 2)
438 dmx(i) = uparam(iadbuf + i9 + 2)
441 kk = 1 + numelr * anim_fe(11)
443 coord_old => uvar(2,1:nel)
445 coord_old => not_used
449 . dyold, dpy, tf, npf,
450 . yc, off, e6(1,2), dpy2,
451 . anim(kk), anim_fe(12),posy,
453 . ff, lscale, ee, gf3,
454 . ifunc3, yieldy, aldp, ak,
455 . b, d, iecrou, ifunc,
456 . ifv, ifunc2, epla, coord_old,
457 . nel, nft, stf, sanin,
458 . dt1, iresp, impl_s, idyna,
459 . snpc, yieldc=yieldyc, xx_oldc=dyoldc,
460 . fx0=uparam(iadbuf+i15+2),ifunc4=ifunc4, pos6=posy(6,1))
463 iadbuf = ipm(7,mid(i)) - 1
464 cc = uparam(iadbuf + nupar + 4)
465 cn = uparam(iadbuf + nupar + 10)
466 xa = uparam(iadbuf + nupar + 16)
467 xb = uparam(iadbuf + nupar + 22)
468 IF (off(i) == one .AND. dmx(i) /= zero .AND. dmn(i) /= zero)
THEN
469 IF (ifail2(i) == 0)
THEN
472 IF (dy(i) > zero)
THEN
473 dlim = dy(i) / (xl0(i)*dmx(i))
475 dlim = dy(i) / (xl0(i)*dmn(i))
478 vfail = cc * (abs(dv(i)/vrt(i)))**cn
479 IF (ifail2(i) == 1)
THEN
480 IF (dy(i) > zero)
THEN
481 dlim = dy(i) / (xl0(i)*dmx(i) + vfail)
483 dlim = dy(i) / (xl0(i)*dmn(i) - vfail)
485 ELSEIF (ifail2(i) == 2)
THEN
486 IF (fy(i) > zero)
THEN
487 dlim = fy(i) / (dmx(i) + vfail)
489 dlim = fy(i) / (dmn(i) - vfail)
491 ELSEIF (ifail2(i) == 3)
THEN
492 dlim =
max(zero,e6(i,2)) / (dmx(i) + vfail)
495 IF (ifail(i) == 0)
THEN
497 crit(i) =
max(crit(i),xa*dlim)
500 crit(i)= crit(i) + xa*dlim**xb
506 iadbuf = ipm(7,mid(i)) - 1
507 ifunc(i) = ipm(10 + if1 + 3,mid(i))
508 ifv(i) = ipm(10 + if2 + 3,mid(i))
509 ifunc2(i)= ipm(10 + if3 + 3,mid(i))
510 ifunc3(i)= ipm(10 + if4 + 3,mid(i))
511 ifunc4(i)= ipm(10 + if5 + 3,mid(i))
512 iecrou(i)= nint(uparam(iadbuf + i13 + 3))
513 ak(i) = uparam(iadbuf + i1 + 3)
514 b(i) = uparam(iadbuf + i2 + 3)
515 d(i) = uparam(iadbuf + i3 + 3)
516 ee(i) = uparam(iadbuf + i4 + 3)
517 gf3(i) = uparam(iadbuf + i5 + 3)
518 ff(i) = uparam(iadbuf + i6 + 3)
519 lscale(i)= uparam(iadbuf + i7 + 3)
520 dmn(i) = uparam(iadbuf + i8 + 3)
521 dmx(i) = uparam(iadbuf + i9 + 3)
524 kk = 1 + numelr * (anim_fe(11)+anim_fe(12))
526 coord_old => uvar(3,1:nel)
528 coord_old => not_used
532 . dzold, dpz, tf, npf,
533 . zc, off, e6(1,3), dpz2,
534 . anim(kk), anim_fe(13),posz,
536 . ff, lscale, ee, gf3,
537 . ifunc3, yieldz, aldp, ak,
538 . b, d, iecrou, ifunc,
539 . ifv, ifunc2, epla, coord_old,
540 . nel, nft, stf, sanin,
541 . dt1, iresp, impl_s, idyna,
542 . snpc, yieldc=yieldzc, xx_oldc=dzoldc,
543 . fx0=uparam(iadbuf+i15+3),ifunc4=ifunc4, pos6=posz(6,1))
546 iadbuf = ipm(7,mid(i)) - 1
547 cc = uparam(iadbuf + nupar + 5)
548 cn = uparam(iadbuf + nupar + 11)
549 xa = uparam(iadbuf + nupar + 17)
550 xb = uparam(iadbuf + nupar + 23)
551 IF (off(i) == one .AND. dmx(i) /= zero .AND. dmn(i) /= zero)
THEN
555 IF (dz(i) > zero)
THEN
556 dlim = dz(i) / (xl0(i)*dmx(i))
558 dlim = dz(i) / (xl0(i)*dmn(i))
561 vfail = cc * (abs(dv(i)/vrt(i)))**cn
562 IF (ifail2(i) == 1)
THEN
563 IF (dz(i) > zero)
THEN
564 dlim = dz(i) / (xl0(i)*dmx(i) + vfail)
566 dlim = dz(i) / (xl0(i
568 ELSEIF (ifail2(i) == 2)
THEN
569 IF (fz(i) > zero)
THEN
570 dlim = fz(i) / (dmx(i) + vfail)
572 dlim = fz(i) / (dmn(i) - vfail)
574 ELSEIF (ifail2(i) == 3)
THEN
575 dlim =
max(zero,e6(i,3)) / (dmx(i) + vfail)
578 IF (ifail(i) == 0)
THEN
580 crit(i) =
max(crit(i),xa*dlim)
583 crit(i)= crit(i) + xa*dlim**xb
591 iadbuf= ipm(7,mid(i)) - 1
592 xin(i)= geo(2,pid(i))
593 xk(i) = uparam(iadbuf + i11 + 4)
594 xc(i) = uparam(iadbuf + i12 + 4)
595 yk(i) = uparam(iadbuf + i11 + 5)
596 yc(i) = uparam(iadbuf + i12 + 5)
597 zk(i) = uparam(iadbuf + i11 + 6)
598 zc(i) = uparam(iadbuf + i12 + 6)
599 hx(i) = uparam(iadbuf + i14 + 4)
600 hy(i) = uparam(iadbuf + i14 + 5)
601 hz(i) = uparam(iadbuf + i14 + 6)
603 xhr(i)=
max(hx(i),hy(i),hz(i))
605 xkr(i)=
max(xk(i)*uparam(iadbuf + i1 + 4),
606 . yk(i)*uparam(iadbuf + i1 + 5),
607 . zk(i)*uparam(iadbuf + i1 + 6))+xkr(i)
608 xcr(i)=
max(xc(i),yc(i),zc(i)) + xhr(i) +xcr(i)+xh(i)
617 IF ( inispri /= 0 .AND. tt == zero)
THEN
626 x21 = (rx2(i)-rx1(i))*dt1
627 y21 = (ry2(i)-ry1(i))*dt1
628 z21 = (rz2(i)-rz1(i))*dt1
629 rx(i) = dxold(i) + x21*exx2(i)+y21*eyx2(i)+z21*ezx2(i)
630 ry(i) = dyold(i) + x21*exy2(i)+y21*eyy2(i)+z21*ezy2(i)
631 rz(i) = dzold(i) + x21*exz2(i)+y21*eyz2(i)+z21*ezz2(i)
635 iadbuf = ipm(7,mid(i)) - 1
636 ifunc(i) = ipm(10 + if1 + 4,mid(i))
637 ifv(i) = ipm(10 + if2 + 4,mid(i))
638 ifunc2(i)= ipm(10 + if3 + 4,mid(i))
639 ifunc3(i)= ipm(10 + if4 + 4,mid(i))
640 ifunc4(i)= ipm(10 + if5 + 4,mid(i))
641 iecrou(i)= nint(uparam(iadbuf + i13 + 4))
642 ak(i) = uparam(iadbuf + i1 + 4)
643 b(i) = uparam(iadbuf + i2 + 4)
644 d(i) = uparam(iadbuf + i3 + 4)
645 ee(i) = uparam(iadbuf + i4 + 4)
646 gf3(i) = uparam(iadbuf + i5 + 4)
647 ff(i) = uparam(iadbuf + i6 + 4)
648 lscale(i)= uparam(iadbuf + i7 + 4)
649 dmn(i) = uparam(iadbuf + i8 + 4)
650 dmx(i) = uparam(iadbuf + i9 + 4)
653 coord_old => uvar(4,1:nel)
655 coord_old => not_used
658 . xmom, xk, rx, xmep,
659 . dxold, rpx, tf, npf,
660 . xc, off, e6(1,4), rpx2,
663 . ff, lscale, ee, gf3,
664 . ifunc3, yieldx2, aldp, ak,
665 . b, d, iecrou, ifunc,
666 . ifv, ifunc2, epla, coord_old,
667 . nel, nft, stf, sanin,
668 . dt1, iresp, impl_s, idyna,
669 . snpc, yieldc=yieldrxc, xx_oldc=drxoldc,
670 . fx0=uparam(iadbuf+i15+4),ifunc4=ifunc4, pos6=posxx(6,1))
673 iadbuf= ipm(7,mid(i)) - 1
674 cc = uparam(iadbuf + nupar + 6)
675 cn = uparam(iadbuf + nupar + 12)
676 xa = uparam(iadbuf + nupar + 18)
677 xb = uparam(iadbuf + nupar + 24)
678 IF (off(i) == one .AND. dmx(i) /= zero .AND. dmn(i) /= zero)
THEN
679 IF (ifail2(i) == 0)
THEN
682 IF (rx(i) > zero)
THEN
683 dlim = rx(i) / (xl0(i)*dmx(i))
685 dlim = rx(i) / (xl0(i)*dmn(i))
688 vfail = cc * (abs(dv(i)/vrr(i)))**cn
689 IF (ifail2(i) == 1)
THEN
690 IF (rx(i) > zero)
THEN
691 dlim = rx(i) / (xl0(i)*dmx(i) + vfail)
693 dlim = rx(i) / (xl0(i)*dmn(i) - vfail)
695 ELSEIF (ifail2(i) == 2)
THEN
697 dlim = xmom(i)/(dmx(i) + vfail)
699 dlim = xmom(i)/(dmn(i) - vfail)
701 ELSEIF (ifail2(i) == 3)
THEN
702 dlim =
max(zero,e6(i,4)) / (dmx(i) + vfail)
705 IF (ifail(i) == 0)
THEN
707 crit(i) =
max(crit(i),xa*dlim)
710 crit(i)= crit(i) + xa*dlim**xb
716 iadbuf = ipm(7,mid(i)) - 1
717 ifunc(i) = ipm(10 + if1 + 5,mid(i))
718 ifv(i) = ipm(10 + if2 + 5,mid(i))
719 ifunc2(i)= ipm(10 + if3 + 5,mid(i))
720 ifunc3(i)= ipm(10 + if4 + 5,mid(i))
721 ifunc4(i)= ipm(10 + if5 + 5,mid(i))
722 iecrou(i)= nint(uparam(iadbuf + i13 + 5))
723 ak(i) = uparam(iadbuf + i1 + 5)
724 b(i) = uparam(iadbuf + i2 + 5)
725 d(i) = uparam(iadbuf + i3 + 5)
726 ee(i) = uparam(iadbuf + i4 + 5)
727 gf3(i) = uparam(iadbuf + i5 + 5)
728 ff(i) = uparam(iadbuf + i6 + 5)
729 lscale(i)= uparam(iadbuf + i7 + 5)
730 dmn(i) = uparam(iadbuf + i8 + 5)
731 dmx(i) = uparam(iadbuf + i9 + 5)
734 coord_old => uvar(5,1:nel)
736 coord_old => not_used
739 . ymom, yk, ry, ymep,
740 . dyold, rpy, tf, npf,
741 . yc, off, e6(1,5), rpy2,
744 . ff, lscale, ee, gf3,
745 . ifunc3, yieldy2, aldp, ak,
746 . b, d, iecrou, ifunc,
747 . ifv, ifunc2, epla, coord_old,
748 . nel, nft, stf, sanin,
749 . dt1, iresp, impl_s, idyna,
750 . snpc, yieldc=yieldryc, xx_oldc=dryoldc,
751 . fx0=uparam(iadbuf+i15+5),ifunc4=ifunc4, pos6=posyy(6,1))
754 iadbuf= ipm(7,mid(i)) - 1
755 cc = uparam(iadbuf + nupar + 7)
756 cn = uparam(iadbuf + nupar + 13)
757 xa = uparam(iadbuf + nupar + 19)
758 xb = uparam(iadbuf + nupar + 25)
759 IF (off(i) == one .AND. dmx(i) /= zero .AND. dmn(i) /= zero)
THEN
760 IF (ifail2(i) == 0)
THEN
763 IF (ry(i) > zero)
THEN
764 dlim = ry(i) / (xl0(i)*dmx(i))
766 dlim = ry(i) / (xl0(i)*dmn(i))
769 vfail = cc * (abs(dv(i)/vrr(i)))**cn
770 IF (ifail2(i) == 1)
THEN
771 IF (ry(i) > zero)
THEN
772 dlim = ry(i) / (xl0(i)*dmx(i) + vfail)
774 dlim = ry(i) / (xl0(i)*dmn(i) - vfail)
776 ELSEIF (ifail2(i) == 2)
THEN
777 IF (ymom(i) > zero)
THEN
778 dlim = ymom(i)/(dmx(i) + vfail)
780 dlim = ymom(i)/(dmn(i) - vfail)
782 ELSEIF (ifail2(i) == 3)
THEN
783 dlim =
max(zero,e6(i,5)) / (dmx(i) + vfail)
786 IF (ifail(i) == 0)
THEN
788 crit(i) =
max(crit(i),xa*dlim)
791 crit(i)= crit(i) + xa*dlim**xb
797 iadbuf = ipm(7,mid(i)) - 1
798 ifunc(i) = ipm(10 + if1 + 6,mid(i))
799 ifv(i) = ipm(10 + if2 + 6,mid(i))
800 ifunc2(i)= ipm(10 + if3 + 6,mid(i))
801 ifunc3(i)= ipm(10 + if4 + 6,mid(i))
802 ifunc4(i)= ipm(10 + if5 + 6,mid(i))
803 iecrou(i)= nint(uparam(iadbuf + i13 + 6))
804 ak(i) = uparam(iadbuf + i1 + 6)
805 b(i) = uparam(iadbuf + i2 + 6)
806 d(i) = uparam(iadbuf + i3 + 6)
807 ee(i) = uparam(iadbuf + i4 + 6)
808 gf3(i) = uparam(iadbuf + i5 + 6)
809 ff(i) = uparam(iadbuf + i6 + 6)
810 lscale(i)= uparam(iadbuf + i7 + 6)
811 dmn(i) = uparam(iadbuf + i8 + 6)
812 dmx(i) = uparam(iadbuf + i9 + 6)
815 coord_old => uvar(6,1:nel)
817 coord_old => not_used
820 . zmom, zk, rz, zmep,
821 . dzold, rpz, tf, npf,
822 . zc, off, e6(1,6), rpz2,
825 . ff, lscale, ee, gf3,
826 . ifunc3, yieldz2, aldp, ak,
827 . b, d, iecrou, ifunc,
828 . ifv, ifunc2, epla, coord_old,
829 . nel, nft, stf, sanin,
830 . dt1, iresp, impl_s, idyna,
831 . snpc, yieldc=yieldrzc, xx_oldc=drzoldc,
832 . fx0=uparam(iadbuf+i15+6),ifunc4=ifunc4,pos6=poszz(6,1))
835 iadbuf= ipm(7,mid(i)) - 1
836 cc = uparam(iadbuf + nupar + 8)
837 cn = uparam(iadbuf + nupar + 14)
838 xa = uparam(iadbuf + nupar + 20)
839 xb = uparam(iadbuf + nupar + 26)
840 IF (off(i) == one .AND. dmx(i) /= zero .AND. dmn(i) /= zero)
THEN
841 IF (ifail2(i) == 0)
THEN
844 IF (rz(i) > zero)
THEN
845 dlim = rz(i) / (xl0(i)*dmx(i))
847 dlim = rz(i) / (xl0(i)*dmn(i))
850 vfail = cc * (abs(dv(i)/vrr(i)))**cn
851 IF (ifail2(i) == 1)
THEN
852 IF (rz(i) > zero)
THEN
853 dlim = rz(i) / (xl0(i)*dmx(i) + vfail)
855 dlim = rz(i) / (xl0(i)*dmn(i) - vfail)
857 ELSEIF (ifail2(i) == 2)
THEN
858 IF (zmom(i) > zero)
THEN
859 dlim = zmom(i)/(dmx(i) + vfail)
861 dlim = zmom(i)/(dmn(i) - vfail)
863 ELSEIF (ifail2(i) == 3)
THEN
864 dlim =
max(zero,e6(i,6)) / (dmx(i) + vfail)
867 IF (ifail(i) == 0)
THEN
869 crit(i) =
max(crit(i),xa*dlim)
872 crit(i)= crit(i) + xa *dlim**xb
878 e(i) = e6(i,1)+e6(i,2)+e6(i,3)+e6(i,4)+e6(i,5)+e6(i,6)
884 iadbuf = ipm(7,mid(i)) - 1
885 israte = nint(uparam(iadbuf + nupar + 27))
887 asrate = (2*pi*uparam(iadbuf + nupar + 28)*dt1)/(one+2*pi*uparam(iadbuf + nupar + 28)*dt1)
888 IF (israte /= 0)
THEN
889 IF (crit_new(i) < one)
THEN
890 crit(i) =
min(crit(i),one+em3)
891 crit(i) = asrate*crit(i) + (one - asrate)*crit_new(i)
892 crit_new(i) =
min(crit(i),one)
897 IF (crit_new(i) < one)
THEN
898 crit_new(i) =
min(crit(i),one)
903 IF (off(i) == one)
THEN
904 IF (crit(i) >= one)
THEN
916 WRITE(iout, 1000) ngl(i)
917 WRITE(istdo,1100) ngl(i),tt
918#include "lockoff.inc"
925 2 iecrou, ifunc, ifv, epla,
929 2 iecrou, ifunc, ifv, epla,
933 2 iecrou, ifunc, ifv, epla,
937 iadbuf= ipm(7,mid(i)) - 1
938 xk(i)=uparam(iadbuf + i11 + 1)
939 yk(i)=uparam(iadbuf + i11 + 2)
940 zk(i)=uparam(iadbuf + i11 + 3)
945 2 iecrou, ifunc, ifv, epla,
949 2 iecrou, ifunc, ifv, epla,
953 2 iecrou, ifunc, ifv, epla,
963 1000
FORMAT(1x,
'-- RUPTURE OF SPRING ELEMENT NUMBER ',i10)
964 1100
FORMAT(1x,
'-- RUPTURE OF SPRING ELEMENT :',i10,' at time :
',G11.4)
subroutine r23l113def3(python, skew, ipm, igeo, mid, pid, geo, uparam, 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, posx, posy, posz, posxx, posyy, poszz, fr_wave, e6, nel, exx2, eyx2, ezx2, exy2, eyy2, ezy2, exz2, eyz2, ezz2, al2dp, ngl, crit_new, x0_err, aldp, yieldx, yieldy, yieldz, yieldx2, yieldy2, yieldz2, exx, eyx, ezx, exy, eyy, ezy, exz, eyz, ezz, xcr, rx1, ry1, rz1, rx2, ry2, rz2, xin, ak, xm, xkm, xcm, xkr, vx1, vx2, vy1, vy2, vz1, vz2, nuvar, uvar, mass, dx0, dy0, dz0, rx0, ry0, rz0, nft, stf, sanin, iresp, snpc, szyield_comp, szxxold_comp, yieldxc, yieldyc, yieldzc, yieldrxc, yieldryc, yieldrzc, dxoldc, dyoldc, dzoldc, drxoldc, dryoldc, drzoldc)