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(python_),
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(*), XMOM(*), YMOM(*),
109 . ZMOM(*), RX(*), RY(*), RZ(*), RPX(*), RPY(*), RPZ(*), XMEP(*),
110 . YMEP(*), ZMEP(*), DPX2(*), DPY2(*), DPZ2(*),RPX2(*), RPY2(*),
111 . RPZ2(*),ANIM(*),FR_WAVE(*),E6(NEL,6),
112 . EXX2(MVSIZ), EYX2(MVSIZ), EZX2(MVSIZ),
113 . EXY2(MVSIZ), EYY2(MVSIZ), EZY2(MVSIZ),
114 . EXZ2(MVSIZ), EYZ2(MVSIZ), EZZ2(MVSIZ),
115 . CRIT_NEW(*), X0_ERR(MVSIZ),YIELDX(*),YIELDY(*),
116 . YIELDZ(*),YIELDX2(*),YIELDY2(*),YIELDZ2(*),
117 . EXX(MVSIZ), EYX(MVSIZ), EZX(MVSIZ), EXY(MVSIZ),
118 . EYY(MVSIZ), EZY(MVSIZ), EXZ(MVSIZ), EYZ(MVSIZ),
119 . EZZ(MVSIZ), XCR(MVSIZ), RX1(MVSIZ), RX2(MVSIZ),
120 . RY1(MVSIZ), 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),VY2(MVSIZ),
123 . VZ1(MVSIZ),VZ2(MVSIZ),UVAR(NUVAR,*),UPARAM(*),MASS(*),
124 . DX0(*),DY0(*),DZ0(*),RX0(*),RY0(*),RZ0(*)
125 my_real,
DIMENSION(6,NEL),
INTENT(INOUT) :: POSX,POSY,POSZ,POSXX,POSYY,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),dryoldc(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,
141 . i9,i10,i11,i12,i13,i14,i15,if1,if2,if3,if4,iadbuf,nupar,
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*eyy(i)+vz21*ezy(i))*dt1
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
309 rzav1 = (x21*exz2(i)+y21*eyz2(i)+z21*ezz2(i))
311 at=epxz/
max(al2dp(i),em30)
313 ryav = dt05 * (ryav1) + two * at
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)
324 ENDIF !(ismdisp > 0)
THEN
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
552 IF (ifail2(i) == 0)
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)*dmn(i) - vfail)
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))
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)