38 4 DPX, DPY, DPZ, DPX2,
39 5 DPY2, DPZ2, FXEP, FYEP,
41 7 XMOM, YMOM, ZMOM, RX,
43 9 RPZ, XMEP, RMEP, ZMEP,
44 A RPX2, RPY2, RPZ2, ANIM,
45 B POSX, POSY, POSZ, POSXX,
47 D NEL, AL2DP, EXX2, EYX2,
48 E EZX2, EXY2, EYY2, EZY2,
49 F EXZ2, EYZ2, EZZ2, IGEO,
50 G X0_ERR, ALDP, YIELDX, YIELDY,
51 H YIELDX2, YIELDY2, NGL, MGN,
56 M VY2, VZ1, VZ2, NUVAR,
57 N UVAR, DX0, DY0, DZ0,
59 P FY0, FZ0, XMOM0, YMOM0,
60 Q ZMOM0, CRITNEW, NFT, STF,
61 R SANIN, IRESP, IMPL_S, IDYNA,
68#include "implicit_f.inc"
87 TYPE(python_),
intent(inout) :: PYTHON
88 INTEGER,
INTENT(IN) :: STF
89 INTEGER,
INTENT(IN) :: SANIN
90 INTEGER,
INTENT(IN) :: IRESP
91 INTEGER,
INTENT(IN) :: IMPL_S
92 INTEGER,
INTENT(IN) :: IDYNA
93 INTEGER,
INTENT(IN) :: SNPC
94 INTEGER,
INTENT(IN) :: NFT
95 INTEGER NPF(SNPC), IGEO(NPROPGI,*),NEL,NGL(*),MGN(*),NUVAR
98 . SKEW(LSKEW,*), GEO(NPROPG
100(*), X0(*), Y0(*), Z0(
105(MVSIZ), EYX2(MVSIZ), EZX2(MVSIZ),
106 . EXY2(MVSIZ), EYY2(MVSIZ), EZY2(MVSIZ),
107 . EXZ2(MVSIZ), EYZ2(MVSIZ), EZZ2(MVSIZ),
108 . FR(MVSIZ), MR(MVSIZ), X0_ERR(MVSIZ),YIELDX(*),YIELDY(*),
109 . YIELDX2(*),YIELDY2(*),(MVSIZ), RX1(MVSIZ), RX2(MVSIZ),
110 . RY1(MVSIZ), RY2(MVSIZ), RZ1(MVSIZ), RZ2(),XIN(MVSIZ),
111 . AK(MVSIZ),XM(MVSIZ),XKM(MVSIZ),XCM(MVSIZ),XKR(MVSIZ),
112 . VX1(MVSIZ),VX2(MVSIZ),VY1(MVSIZ),VY2(MVSIZ),
113 . VZ1(MVSIZ),VZ2(MVSIZ),UVAR(NUVAR,*),DX0(*),DY0(*),DZ0(*),
114 . RX0(*),RY0(*),RZ0(*),FX0(*),FY0(*),FZ0(*),XMOM0(
115DOUBLE PRECISION ALDP(MVSIZ),AL2DP(MVSIZ)
116 my_real,
INTENT(INOUT) :: critnew(nel)
122 . iecrou(mvsiz), ifunc(mvsiz), ifv(mvsiz), ifunc2(mvsiz),
123 . i, ileng, j, kk, ifail(mvsiz),ifail2(mvsiz
124 . nindx,ifunc3(mvsiz)
127 . xk(mvsiz) , yk(mvsiz),
128 . xc(mvsiz) , yc(mvsiz) ,xh(mvsiz),xhr(mvsiz),
129 . dxold(mvsiz), dyold(mvsiz), dzold(mvsiz), drold(mvsiz),
130 . b(mvsiz), d(mvsiz), epla(mvsiz),
131 . dv(mvsiz),vrt(mvsiz),vrr(mvsiz),ff(mvsiz),ee(mvsiz),
132 . dmn(mvsiz),dmx(mvsiz),xl0(mvsiz),crit(mvsiz),rmom(mvsiz),
133 . xn(mvsiz) ,dr(mvsiz),st(mvsiz),ct(mvsiz),bid(mvsiz),
134 . lscale(mvsiz),gf3(mvsiz),hx(mvsiz), hy(mvsiz), hz(mvsiz)
136 . at,c,cp,dt05,cc,cn,xa,xb,dlim,vfail,xka,yka,x21,y21,z21,
137 . vx21,vy21,vz21, epxy,epxz,eyzp,exzp,ryav,rzav,ryav1,rzav1,
138 . not_used,not_used2(2)
139 DOUBLE PRECISION X0DP(MVSIZ)
140 my_real ,
DIMENSION(:),
POINTER :: XX_OLD
154 xka =geo(41,mgn(i))*xk(i)
155 yka =geo(45,mgn(i))*yk(i)
157 hx(i) = geo(141,mgn(i))
158 hy(i) = geo(142,mgn(i))
160 xh(i)=
max(hx(i),hy(i))
162 xcm(i)=
max(xc(i),yc(i))
165 xkr(i)= yka*aldp(i)*aldp(i)
166 xcr(i)= (yc(i)+ hy(i))*aldp(i)* aldp(i)
170 vrt(i) = geo(101,mgn(i))
171 vrr(i) = geo(102,mgn(i))
172 ifail(i) = nint(geo(79,mgn(i)))
173 ifail2(i)= nint(geo(95,mgn(i)))
176 IF (inispri /= 0 .and. tt == zero)
THEN
180 IF (xl0(i) == zero) xl0(i) = aldp(i)
190 IF (scodver >= 101)
THEN
193 x0_err(i)= aldp(i)-x0(i)
198 IF ( inispri /= 0 .and. tt == zero)
THEN
208 IF (scodver >= 101)
THEN
210 x0dp(i)= x0(i) + x0_err(i)
222 IF (inispri /= 0 .and. tt == zero)
THEN
237 epxy = (vx21*exy2(i)+vy21*eyy2(i)+vz21*ezy2(i))*dt05
238 epxz = (vx21*exz2(i)+vy21*eyz2(i)+vz21*ezz2(i))*dt05
240 x21 = (rx2(i)+rx1(i))
241 y21 = (ry2(i)+ry1(i))
242 z21 = (rz2(i)+rz1(i))
244 ryav1 = (x21*exy2(i)+y21*eyy2(i)+z21*ezy2(i))
245 rzav1 = (x21*exz2(i)+y21*eyz2(i)+z21*ezz2(i))
247 at=epxz/
max(al2dp(i),em30)
249 ryav = dt05 * (ryav1) + two * at
250 at=epxy/
max(al2dp(i),em30)
252 rzav = dt05 * (rzav1) - two * at
255 dx(i) = aldp(i) - x0dp(i)
256 dy(i) = dyold(i) - rzav * al2dp(i)
257 dz(i) = dzold(i) + ryav * al2dp(i)
262 ileng=nint(geo(93,mgn(i)))
273 iecrou(i)= igeo(101,mgn(i))
274 ifunc(i) = igeo(102,mgn(i))
275 ifunc2(i)= igeo(103,mgn(i))
276 ifv(i) = igeo(104,mgn(i))
277 ifunc3(i)= igeo(119,mgn(i))
278 ak(i) = geo(41,mgn(i))
279 b(i) = geo(42,mgn(i))
280 d(i) = geo(43,mgn(i))
281 ee(i) = geo(40 ,mgn(i))
282 gf3(i) = geo(132,mgn(i))
283 ff(i) = geo(44,mgn(i))
284 lscale(i)= geo(39 ,mgn(i))
285 dmn(i) = geo(65,mgn(i))
286 dmx(i) = geo(66,mgn(i))
290 xx_old => uvar(1,1:nel)
296 2 dxold, dpx, tf, npf,
297 3 xc, off, e6(1,1), dpx2,
298 4 anim, anim_e(11),posx,
300 6 ff, lscale, ee, gf3,
301 7 ifunc3, yieldx, x0dp, ak,
302 8 b, d, iecrou, ifunc,
303 9 ifv, ifunc2, epla, xx_old,
304 a nel, nft, stf, sanin,
305 b dt1, iresp, impl_s, idyna,
313 IF (off(i) == one .AND. dmx(i) /= zero .AND. dmn(i) /= zero)
THEN
314 IF (ifail2(i) == 0)
THEN
318 dlim = dx(i) / dmx(i)
320 dlim = dx(i) / dmn(i)
324 IF (ifail2(i) == 1)
THEN
325 IF (dx(i) > zero)
THEN
326 dlim = dx(i) / (dmx(i) + vfail)
328 dlim = dx(i) / (dmx(i) - vfail)
330 ELSEIF (ifail2(i) == 2)
THEN
331 IF (fx(i) > zero)
THEN
332 dlim = fx(i) / (dmx(i) + vfail)
334 dlim = fx(i) / (dmn(i) - vfail)
336 ELSEIF (ifail2(i) == 3)
THEN
337 dlim =
max(zero,e6(i,1)) / (dmx(i) + vfail)
340 IF (ifail(i) == 0)
THEN
342 crit(i) =
max(crit(i),xa*dlim)
343 IF ((xa*dlim) > one)
THEN
352 crit(i)= crit(i) + xa * dlim**xb
358 iecrou(i)= igeo(105,mgn(i))
359 ifunc(i) = igeo(106,mgn(i))
360 ifunc2(i)= igeo(107,mgn(i))
361 ifv(i) = igeo(108,mgn(i))
362 ifunc3(i)= igeo(120,mgn(i))
363 ak(i) = geo(45,mgn(i))
364 b(i) = geo(46,mgn(i))
365 d(i) = geo(47,mgn(i))
366 ee(i) = geo(180,mgn(i))
367 gf3(i) = geo(133,mgn(i))
368 ff(i) = geo(48,mgn(i))
369 lscale(i)= geo(174,mgn(i))
370 dmn(i) = geo(67,mgn(i))
371 dmx(i) = geo(68,mgn(i))
372 dr(i) = sqrt(dy(i)**2 + dz(i)**2)
373 drold(i) = sqrt(dyold(i)**2 + dzold(i)**2)
376 IF (dr(i) > zero)
THEN
377 st(i) = dy(i) / dr(i)
378 ct(i) = dz(i) / dr(i)
380 fr(i) = sqrt(fy(i)**2 + fz(i)**2)
382 kk = 1 + numelr * anim_e(11)
383 IF (nuvar > 0) xx_old => uvar(2,1:nel)
386 2 drold, dpy, tf, npf,
387 3 yc, off, e6(1,2), dpy2,
388 4 anim(kk), anim_e(12),posy,
390 6 ff, lscale, ee, gf3,
391 7 ifunc3, yieldy, x0dp, ak,
392 8 b, d, iecrou, ifunc,
393 9 ifv, ifunc2, epla, xx_old,
394 a nel, nft, stf, sanin,
395 b dt1, iresp, impl_s, idyna,
402 IF (off(i) == one .AND. dmx(i) /= zero .AND. dmn(i) /= zero)
THEN
403 IF (ifail2(i) == 0)
THEN
406 dlim = dr(i) / dmx(i)
408 vfail = cc * (abs(dv(i)/vrt(i)))**cn
409 IF (ifail2(i) == 1)
THEN
410 dlim = dr(i) / (dmx(i) + vfail)
411 ELSEIF (ifail2(i) == 2)
THEN
412 IF (fr(i) > zero)
THEN
413 dlim = fr(i) / (dmx(i) + vfail)
415 dlim = fr(i) / (dmn(i) - vfail)
417 ELSEIF (ifail2(i) == 3)
THEN
418 dlim =
max(zero,e6(i,2)) / (dmx(i) + vfail)
421 IF (ifail(i) == 0)
THEN
423 crit(i) =
max(crit(i),xa*dlim)
424 IF ((xa*dlim) > one)
THEN
433 crit(i)= crit(i) + xa * dlim**xb
444 xin(i)= geo(9,mgn(i))
445 xk(i) = geo(19,mgn(i))
446 xc(i) = geo(20,mgn(i))
447 yk(i) = geo(23,mgn(i))
448 yc(i) = geo(24,mgn(i))
449 hx(i) = geo(143,mgn(i))
450 hy(i) = geo(144,mgn(i))
451 xhr(i)=
max(hx(i),hy(i))
453 xkr(i)=
max(xk(i)*geo(53,mgn(i)),yk(i)*geo(57,mgn(i)))+xkr(i)
454 xcr(i)=
max(xc(i),yc(i))+xcr(i)+xhr(i)+xh(i)
463 IF ( inispri /= 0 .AND. tt == zero)
THEN
472 x21 = (rx2(i)-rx1(i))*dt1
473 y21 = (ry2(i)-ry1(i))*dt1
474 z21 = (rz2(i)-rz1(i))*dt1
475 rx(i) = dxold(i) + x21*exx2(i)+y21*eyx2(i)+z21*ezx2(i)
476 ry(i) = dyold(i) + x21*exy2(i)+y21*eyy2(i)+z21*ezy2(i)
477 rz(i) = dzold(i) + x21*exz2(i)+y21*eyz2(i)+z21*ezz2(i)
483 iecrou(i)= igeo(109,mgn(i))
484 ifunc(i) = igeo(110,mgn(i))
485 ifunc2(i)= igeo(111,mgn(i))
486 ifunc3(i)= igeo(121,mgn(i))
487 ifv(i) = igeo(112,mgn(i))
488 ak(i) = geo(53,mgn(i))
489 b(i) = geo(54,mgn(i))
490 d(i) = geo(55,mgn(i))
491 ee(i) = geo(182,mgn(i))
492 gf3(i) = geo(135,mgn(i))
493 ff(i) = geo(56,mgn(i))
494 lscale(i)= geo(176,mgn(i))
495 dmn(i) = geo(71,mgn(i))
496 dmx(i) = geo(72,mgn(i))
499 IF (nuvar > 0) xx_old => uvar(4,1:nel)
501 1 xmom, xk, rx, xmep,
503 3 xc, off, e6(1,3), rpx2,
506 6 ff, lscale, ee, gf3,
507 7 ifunc3, yieldx2, x0dp, ak,
508 8 b, d, iecrou, ifunc,
509 9 ifv, ifunc2, epla, xx_old,
510 a nel, nft, stf, sanin,
511 b dt1, iresp, impl_s, idyna,
518 IF (off(i) == one .AND. dmx(i)/=zero .AND. dmn(i)/=zero)
THEN
519 IF (ifail2(i) == 0)
THEN
522 IF (rx(i) > zero)
THEN
523 dlim = rx(i) / dmx(i)
525 dlim = rx(i) / dmn(i)
528 vfail = cc * (abs(dv(i)/vrr(i)))**cn
529 IF (ifail2(i) == 1)
THEN
531 dlim = rx(i) / (dmx(i) + vfail)
533 dlim = rx(i) / (dmn(i) - vfail)
535 ELSEIF (ifail2(i) == 2)
THEN
536 IF (xmom(i) > zero)
THEN
537 dlim = xmom(i)/(dmx(i) + vfail)
539 dlim = xmom(i)/(dmn(i) - vfail)
541 ELSEIF (ifail2(i) == 3)
THEN
542 dlim =
max(zero,e6(i,3)) / (dmx(i) + vfail)
545 IF (ifail(i) == 0)
THEN
548 IF ((xa*dlim) > one)
THEN
557 crit(i)= crit(i) + xa * dlim**xb
565 iecrou(i)= igeo(113,mgn(i))
566 ifunc(i) = igeo(114,mgn(i))
567 ifunc2(i)= igeo(115,mgn(i))
568 ifunc3(i)= igeo(122,mgn(i))
569 ifv(i) = igeo(116,mgn(i))
570 ak(i) = geo(57,mgn(i))
571 b(i) = geo(58,mgn(i))
572 d(i) = geo(59,mgn(i))
573 ee(i) = geo(183,mgn(i))
574 gf3(i) = geo(136,mgn(i))
575 ff(i) = geo(60,mgn(i))
576 lscale(i)= geo(177,mgn(i))
577 dmn(i) = geo(73,mgn(i))
578 dmx(i) = geo(74,mgn(i))
579 dr(i) = sqrt(ry(i)**2 + rz(i)**2)
580 drold(i) = sqrt(dyold(i)**2 + dzold(i)**2)
583 IF (dr(i) > zero)
THEN
584 st(i) = ry(i) / dr(i)
585 ct(i) = rz(i) / dr(i)
587 rmom(i) = sqrt(ymom(i)**2 + zmom(i)**2)
589 IF (nuvar > 0) xx_old => uvar(5,1:nel)
591 1 rmom, yk, dr, rmep,
592 2 drold, rpy, tf, npf,
593 3 yc, off, e6(1,4), rpy2,
596 6 ff, lscale, ee, gf3,
597 7 ifunc3, yieldy2, x0dp, ak,
598 8 b, d, iecrou, ifunc,
599 9 ifv, ifunc2, epla, xx_old,
600 a nel, nft, stf, sanin,
601 b dt1, iresp, impl_s, idyna,
608 IF (off(i) == one .AND. dmx(i)/=zero .AND. dmn(i)/=zero)
THEN
609 IF (ifail2(i) == 0)
THEN
612 dlim = dr(i) / dmx(i)
614 vfail = cc * (abs(dv(i)/vrr(i)))**cn
615 IF (ifail2(i) == 1)
THEN
616 dlim = dr(i) / (dmx(i) + vfail)
617 ELSEIF (ifail2(i) == 2)
THEN
618 IF (rmom(i) > zero)
THEN
619 dlim = rmom(i)/(dmx(i) + vfail)
621 dlim = rmom(i)/(dmn(i) - vfail)
623 ELSEIF (ifail2(i) == 3)
THEN
624 dlim =
max(zero,e6(i,4)) / (dmx(i) + vfail)
627 IF (ifail(i) == 0)
THEN
629 crit(i) =
max(crit(i),xa*dlim)
630 IF ((xa*dlim) > one)
THEN
639 crit(i)= crit(i) + xa * dlim**xb
643 ymom(i) = rmom(i)*st(i)
644 zmom(i) = rmom(i)*ct(i)
648 e(i) = e6(i,1)+e6(i,2)+e6(i,3)+e6(i,4)
654 IF (ifail(i) == 0)
THEN
655 IF (critnew(i) < one)
THEN
656 critnew(i) =
min(crit(i),one)
660 ELSEIF (ifail(i) == 1)
THEN
661 IF (critnew(i) < one)
THEN
662 critnew(i) =
min(crit(i)/(xl0(i)*xl0(i)),one)
667 IF (off(i) == one .AND. ifail(i) == 1)
THEN
668 IF (crit(i)/(xl0(i)*xl0(i)) > one)
THEN
682 WRITE(istdo,1100) ngl(i),tt
683#include "lockoff.inc"
690 2 iecrou, ifunc, ifv, epla,
694 2 iecrou, ifunc, ifv, epla,
704 2 iecrou, ifunc, ifv, epla,
708 2 iecrou, ifunc, ifv, epla,
720 1000
FORMAT(1x,
'-- RUPTURE OF SPRING ELEMENT NUMBER ',i10)
721 1100
FORMAT(1x,
'-- RUPTURE OF SPRING ELEMENT :',i10,
' AT TIME :',g11.4)
subroutine r6def3(python, 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, rmep, zmep, rpx2, rpy2, rpz2, anim, posx, posy, posz, posxx, posyy, poszz, e6, nel, al2dp, exx2, eyx2, ezx2, exy2, eyy2, ezy2, exz2, eyz2, ezz2, igeo, x0_err, aldp, yieldx, yieldy, yieldx2, yieldy2, ngl, mgn, xcr, rx1, ry1, rz1, rx2, ry2, rz2, xin, ak, xm, xkm, xcm, xkr, vx1, vx2, vy1, vy2, vz1, vz2, nuvar, uvar, dx0, dy0, dz0, rx0, ry0, rz0, fx0, fy0, fz0, xmom0, ymom0, zmom0, critnew, nft, stf, sanin, iresp, impl_s, idyna, snpc)