40 1 SKEW, IPM, IGEO, MID,
41 2 PID, GEO, UPARAM, FX,
45 6 DPX2, DPY2, DPZ2, FXEP,
47 8 Z0, XMOM, YMOM, ZMOM,
49 A RPY, RPZ, XMEP, YMEP,
50 B ZMEP, RPX2, RPY2, RPZ2,
51 C ANIM, POSX, POSY, POSZ,
52 D POSXX, POSYY, POSZZ, FR_WAVE,
53 E E6, NEL, EXX2, EYX2,
54 F EZX2, EXY2, EYY2, EZY2,
55 G EXZ2, EYZ2, EZZ2, AL2DP,
56 H NGL, CRIT_NEW, X0_ERR, ALDP,
57 I YIELDX, YIELDY, YIELDZ, YIELDX2,
58 J YIELDY2, YIELDZ2, EXX, EYX,
65 Q VZ1, VZ2, NUVAR, UVAR,
66 R MASS, DX0, DY0, DZ0,
67 S RX0, RY0, RZ0, SLIPRING_STRAND,
68 T DFS, RING_SLIP, X02, LMIN,
69 U SLIPRING_ID, UPDATE_FLAG, RETRACTOR_ID, ADD_NODE1,
70 V ADD_NODE2, NC1, NC2, NC3,
71 W X1DP, X2DP, X3DP, VX3,
72 X VY3, VZ3, FLAG_SLIPRING_UPDATE, FLAG_RETRACTOR_UPDATE,
73 Y SENSOR_TAB, UINER, FR_ID, FRAM_FACTOR,
74 Z EPS_OLD, FX_B2, DPX_B2, YIELDX_B2,
75 1 XX_OLD_B2, FXEP_B2, POSX_B2, EPS_OLD_B2,
76 2 NFT , NSENSOR, STF, SANIN,
84 USE redef_seatbelt_mod
89#include "implicit_f.inc"
100#include "com08_c.inc"
101#include "scr14_c.inc"
102#include "scr17_c.inc"
103#include "units_c.inc"
104#include "com01_c.inc"
105#include "impl1_c.inc"
109 TYPE(python_) :: PYTHON
110 INTEGER,
INTENT(IN) :: STF
111 INTEGER,
INTENT(IN) :: SANIN
112 INTEGER,
INTENT(IN) :: IRESP
113 INTEGER,
INTENT(IN) :: SNPC
114 INTEGER,
INTENT(IN) :: NFT,NSENSOR
115 INTEGER NPF(*),IGEO(NPROPGI,*),NEL,NGL(*),PID(*),MID(*),NUVAR,
116 . IPM(NPROPMI,*),NC1(*),NC2(*),NC3(*),ADD_NODE1(*),ADD_NODE2(*),
117 . SLIPRING_ID(*),UPDATE_FLAG(*),RETRACTOR_ID(*),SLIPRING_STRAND(*),
118 . FLAG_SLIPRING_UPDATE,FLAG_RETRACTOR_UPDATE,FR_ID(*)
121 . skew(lskew,*), geo(npropg,*), fx(*), fy(*), fz(*), e(*), dx(*),
122 . dy(*), dz(*), tf(stf), off(*), dpx(*), dpy(*), dpz(*), fxep(*),
123 . fyep(*), fzep(*), x0(*), y0(*), z0(*), xmom(*), ymom(*),
124 . zmom(*), rx(*), ry(*), rz(*), rpx(*), rpy(*), rpz(*), xmep(*),
125 . ymep(*), zmep(*), dpx2(*), dpy2(*), dpz2(*),rpx2(*), rpy2(*),
126 . rpz2(*),anim(sanin),posx(*),posy(*),posz(*),posxx(*),
127 . posyy(*),poszz(*),fr_wave(*),e6(nel,6),
128 . exx2(mvsiz), eyx2(mvsiz), ezx2(mvsiz),
129 . exy2(mvsiz), eyy2(mvsiz), ezy2(mvsiz),
130 . exz2(mvsiz), eyz2(mvsiz), ezz2(mvsiz),
131 . crit_new(*), x0_err(mvsiz),yieldx(*),yieldy(*),
132 . yieldz(*),yieldx2(*),yieldy2(*),yieldz2(*),
133 . exx(mvsiz), eyx(mvsiz), ezx(mvsiz), exy(mvsiz),
134 . eyy(mvsiz), ezy(mvsiz), exz(mvsiz), eyz(mvsiz),
135 . ezz(mvsiz), xcr(mvsiz), rx1(mvsiz), rx2(mvsiz),
136 . ry1(mvsiz), ry2(mvsiz), rz1(mvsiz), rz2(mvsiz),
137 . xin(mvsiz),ak(mvsiz),xm(mvsiz),xkm(mvsiz),xcm(mvsiz),
138 . xkr(mvsiz),vx1(mvsiz),vx2(mvsiz),vy1(mvsiz),vy2(mvsiz),
139 . vz1(mvsiz),vz2(mvsiz),uvar
140 . dx0(*),dy0(*),dz0(*),rx0(*),ry0(*),rz0(*),lmin(*),dfs(*),
141 . ring_slip(*),x02(*),vx3(mvsiz),vy3(mvsiz),vz3(mvsiz),
142 . uiner(*),fram_factor(*)
143 my_real ,
INTENT(INOUT) :: eps_old(mvsiz),fx_b2(mvsiz),dpx_b2(mvsiz),yieldx_b2(mvsiz),
144 . xx_old_b2(mvsiz),fxep_b2(mvsiz),posx_b2(mvsiz),eps_old_b2(mvsiz)
146 DOUBLE PRECISION ALDP(MVSIZ),AL2DP(MVSIZ),X1DP(3,*),X2DP(3,*),X3DP(3,*)
147 TYPE (SENSOR_STR_) ,
DIMENSION(NSENSOR) :: SENSOR_TAB
152 . iecrou(mvsiz), ifunc(mvsiz), ifv(mvsiz), ifunc2(mvsiz),
153 . i,k,ileng, j, kk, ifail(mvsiz),ifail2(mvsiz),adher(mvsiz),
154 . nindx,israte, ifunc3(mvsiz),i1,i2,i3,i4,i5,i6,i7,i8,
155 . i9,i10,i11,i12,i13,i14,if1,if2,if3,if4,iadbuf,nupar,nn1,nn2,ret
156 . flag_retractor_update_old,flag,index1(mvsiz),index2
157 . dir,strd,ii,index_slip(mvsiz),compt2
160 . xk(mvsiz), yk(mvsiz),
161 . zk(mvsiz),xc(mvsiz), yc(mvsiz), zc(mvsiz),xh(mvsiz),
162 . xhr(mvsiz),dxold(mvsiz), dyold(mvsiz), dzold(mvsiz),
163 . b(mvsiz), d(mvsiz), epla(mvsiz),
164 . dv(mvsiz),vrt(mvsiz),vrr(mvsiz),
165 . dmn(mvsiz),dmx(mvsiz),xl0(mvsiz),crit(mvsiz),
166 . xn(mvsiz),ff(mvsiz),lscale(mvsiz),ee(mvsiz),gf3(mvsiz),
167 . hx(mvsiz), hy(mvsiz), hz(mvsiz),fx_max(mvsiz),e_offset(mvsiz),
168 . xk_comp(mvsiz),mx_max(mvsiz),dfs_old(mvsiz),not_used,xl02(mvsiz),
169 . xkp(mvsiz),dfx(mvsiz)
171 . at,dt05,xka,yka,zka,cc,cn,xa,xb,dlim,vfail,
172 . x21, y21, z21, epxy, epxz,
173 . vx21, vy21, vz21, ryavp, rzavp,eyzp,exzp,
174 . ryav, rzav,den, c, cp, exyp,
175 . x21phi, y21phi, z21phi, vx21phi, vy21phi, vz21phi,
176 . ryav1, rzav1, ryav1p, rzav1p,asrate,
norm,gap,lmin_b2(mvsiz),
177 . eb(mvsiz),dxoldb(mvsiz),xkp_b2(mvsiz),dx_b2(mvsiz),a1
178 DOUBLE PRECISION X0DP(MVSIZ),X0DP_B2(MVSIZ),EX2DP(MVSIZ),EY2DP(MVSIZ),EZ2DP(MVSIZ),
180DIMENSION(:),
POINTER :: COORD_OLD
211 iadbuf= ipm(7,mid(i)) - 1
216 xk(i)=uparam(iadbuf + i11 + 1)
217 yk(i)=uparam(iadbuf + i11 + 2)
218 zk(i)=uparam(iadbuf + i11 + 3)
220 xc(i)=uparam(iadbuf + i12 + 1) * fram_factor(i)
221 yc(i)=uparam(iadbuf + i12 + 2) * fram_factor(i)
222 zc(i)=uparam(iadbuf + i12 + 3) * fram_factor(i)
224 xk_comp(i) = uparam(iadbuf + 117)*geo(1,pid(i))
226 xka=xk(i)*uparam(iadbuf + i1 + 1)*fram_factor(i)
227 yka=yk(i)*uparam(iadbuf + i1 + 2)*fram_factor(i)
228 zka=zk(i)*uparam(iadbuf + i1 + 3)*fram_factor(i)
229 xkm(i)=
max(xka,yka,zka,xk_comp(i))
231 hx(i) = uparam(iadbuf + i14 + 1)
232 hy(i) = uparam(iadbuf + i14 + 2)
233 hz(i) = uparam(iadbuf + i14 + 3)
235 xh(i)=
max(hx(i),hy(i),hz(i))
236 xcm(i)=
max(xc(i),yc(i),zc(i))
239 xkr(i)=
max(yka,zka) * aldp(i) * aldp(i)
240 xcr(i)= (
max(yc(i),zc(i)) +
max(hy(i),hz(i))) * aldp(i) * aldp(i)
241 vrt(i) = uparam(iadbuf + nupar + 1)
242 vrr(i) = uparam(iadbuf + nupar + 2)
243 ifail(i) = nint(uparam(iadbuf + 1 ))
244 ifail2(i)= nint(uparam(iadbuf + 3 ))
246 e_offset(i) = uparam(iadbuf + 118)
247 IF (tt == zero) lmin(i) = uparam(iadbuf + 119)
248 fx_max(i) = uparam(iadbuf + 120)
249 mx_max(i) = uparam(iadbuf + 121)
252 IF (inispri /= 0 .and. tt == zero)
THEN
256 IF (xl0(i) == zero) xl0(i) = aldp(i)
266 IF (scodver >= 101)
THEN
269 x0_err(i)= aldp(i)-x0(i)
274 IF ( inispri /= 0 .and. tt == zero)
THEN
284 IF (scodver >= 101)
THEN
286 x0dp(i)= x0(i) + x0_err(i)
298 IF (inispri /= 0 .and. tt == zero)
THEN
307 IF (ismdisp > 0)
THEN
312 dx(i) = dxold(i)+(vx21*exx(i)+vy21*eyx(i)+vz21*ezx(i))*dt1
313 dy(i) = dyold(i)+(vx21*exy(i)+vy21*eyy(i)+vz21*ezy(i))*dt1
314 dz(i) = dzold(i)+(vx21*exz(i)+vy21*eyz(i)+vz21*ezz(i))*dt1
316 x21 = (rx2(i)+rx1(i))
317 y21 = (ry2(i)+ry1(i))
318 z21 = (rz2(i)+rz1(i))
320 ryav1 = (x21*exy2(i)+y21*eyy2(i)+z21*ezy2(i))
321 rzav1 = (x21*exz2(i)+y21*eyz2(i)+z21*ezz2(i))
326 dy(i) = dy(i) - rzav * al2dp(i)
327 dz(i) = dz(i) + ryav * al2dp(i)
337 epxy = (vx21*exy2(i)+vy21*eyy2(i)+vz21*ezy2(i))*dt05
338 epxz = (vx21*exz2(i)+vy21*eyz2(i)+vz21*ezz2(i))*dt05
340 x21 = (rx2(i)+rx1(i))
341 y21 = (ry2(i)+ry1(i))
342 z21 = (rz2(i)+rz1(i))
344 ryav1 = (x21*exy2(i)+y21*eyy2(i)+z21*ezy2(i))
345 rzav1 = (x21*exz2(i)+y21*eyz2(i)+z21*ezz2(i))
347 at=epxz/
max(al2dp(i),em30)
349 ryav = dt05 * (ryav1) + two * at
350 at=epxy/
max(al2dp(i),em30)
352 rzav = dt05 * (rzav1) - two * at
354 dx(i) = aldp(i) - x0dp(i)
355 dy(i) = dyold(i) - rzav * al2dp(i)
356 dz(i) = dzold(i) + ryav * al2dp(i)
363 iadbuf = ipm(7,mid(i)) - 1
364 ileng = nint(uparam(iadbuf + 2))
366 xl0(i)=
max(x0dp(i),lmin(i))
380 iadbuf = ipm(7,mid(i)) - 1
381 ifunc(i) = ipm(10 + if1 + 1,mid(i))
382 ifv(i) = ipm(10 + if2 + 1,mid(i))
384 IF (yieldx(i) > uparam(iadbuf + 125))
THEN
385 ifunc2(i)= ipm(10 + if3 + 1,mid(i))
389 ifunc3(i)= ipm(10 + if4 + 1,mid(i))
390 iecrou(i)= nint(uparam(iadbuf + i13 + 1))
393 ak(i) = uparam(iadbuf + i1 + 1) * fram_factor(i)
394 b(i) = uparam(iadbuf + i2 + 1)
395 d(i) = uparam(iadbuf + i3 + 1)
396 ee(i) = uparam(iadbuf + i4 + 1)
397 gf3(i) = uparam(iadbuf + i5 + 1)
398 ff(i) = uparam(iadbuf + i6 + 1)
399 lscale(i)= uparam(iadbuf + i7 + 1)
400 dmn(i) = uparam(iadbuf + i8 + 1)
401 dmx(i) = uparam(iadbuf + i9 + 1)
403 IF (update_flag(i) /= 0)
THEN
409 IF (nslipring + nretractor > 0)
THEN
420 IF (slipring_id(i) > 0)
THEN
424 IF (slipring_strand(i) == 1)
THEN
425 lmin(i) = uparam(iadbuf + 119)
426 xl0(i)=
max(x0dp(i),lmin(i))
428 x02(i) =
slipring(j)%FRAM(k)%RESIDUAL_LENGTH(2)
429 fx_b2(i) =
slipring(j)%FRAM(k)%INTVAR_STR2(1)
430 dpx_b2(i) =
slipring(j)%FRAM(k)%INTVAR_STR2(2)
431 yieldx_b2(i) =
slipring(j)%FRAM(k)%INTVAR_STR2(3)
432 xx_old_b2(i) =
slipring(j)%FRAM(k)%INTVAR_STR2(4)
433 fxep_b2(i) =
slipring(j)%FRAM(k)%INTVAR_STR2(5)
434 posx_b2(i) =
slipring(j)%FRAM(k)%INTVAR_STR2(6)
435 eps_old_b2(i) =
slipring(j)%FRAM(k)%INTVAR_STR2(7)
437 ELSEIF (slipring_strand(i) ==
THEN
438 lmin(i) = uparam(iadbuf
439 xl0(i)=
max(x0dp(i),lmin(i))
442 fx_b2(i) =
slipring(j)%FRAM(k)%INTVAR_STR1(1)
443 dpx_b2(i) =
slipring(j)%FRAM(k)%INTVAR_STR1(2)
444 yieldx_b2(i) =
slipring(j)%FRAM(k)%INTVAR_STR1(3)
446 fxep_b2(i) =
slipring(j)%FRAM(k)%INTVAR_STR1(5)
447 posx_b2(i) =
slipring(j)%FRAM(k)%INTVAR_STR1(6)
448 eps_old_b2(i) =
slipring(j)%FRAM(k)%INTVAR_STR1(7)
451 ELSEIF ((retractor_id(i) > 0).AND.(update_flag(i) == -1))
THEN
455 ELSEIF ((retractor_id(i) > 0).AND.(update_flag(i) == -2))
THEN
471 IF (slipring_strand(i) > 0)
THEN
475 index_slip(compt2) = i
476 IF (
slipring(slipring_id(i))%NFRAM > 1)
THEN
487 xcm(i)=
max(xc(i),yc(i),zc(i))+xh(i)
490 ELSEIF (slipring_strand(i) == -1)
THEN
497 xcm(i)=
max(xc(i),yc(i),zc(i))+xh(i)
505 IF (nuvar >=1) coord_old => uvar(1,1:nel)
508 CALL redef_seatbelt(python,
510 2 dxold, dpx, tf, npf,
511 3 xc, off, e6(1,1), anim,
512 4 anim_fe(11),posx(1), xl0, dmn,
513 5 dmx, lscale, yieldx, ak,
514 6 iecrou, ifunc, ifunc2, coord_old,
515 7 fx_max, xk_comp, nel, index1,
516 8 flag, xkp, eps_old, fram_factor,
517 9 nft, snpc, stf, sanin,
518 a dt1, impl_s, idyna, nel)
522 IF (nslipring + nretractor > 0)
THEN
530 strd = slipring_strand(i)
531 dir =
slipring(slipring_id(i))%FRAM(fr_id(i))%STRAND_DIRECTION(strd)
533 IF (((strd==1).AND.(dir ==1)).OR.((strd==2).AND.(dir==-1)))
THEN
534 ex2dp(i)=x2dp(1,i)-x3dp(1,i)
535 ey2dp(i)=x2dp(2,i)-x3dp(2,i)
536 ez2dp(i)=x2dp(3,i)-x3dp(3,i)
538 ex2dp(i)=x3dp(1,i)-x1dp(1,i)
539 ey2dp(i)=x3dp(2,i)-x1dp(2,i)
540 ez2dp(i)=x3dp(3,i)-x1dp(3,i)
542 norm=
max(em15,sqrt(ex2dp(i)*ex2dp(i)+ey2dp(i)*ey2dp(i)+ez2dp(i)*ez2dp(i)))
543 ex2dp(i)= ex2dp(i)/
norm
544 ey2dp(i)= ey2dp(i)/
norm
545 ez2dp(i)= ez2dp(i)/
norm
560 dx_b2(i) = aldp_b2(i) - x0dp_b2(i)
562 IF (yieldx_b2(i) > uparam(iadbuf + 125))
THEN
563 ifunc2(i)= ipm(10 + if3 + 1,mid(i))
572 dxoldb(1:mvsiz) = zero
573 CALL redef_seatbelt(python,
574 1 fx_b2, xk, dx_b2, fxep_b2,
575 2 dxoldb, dpx_b2, tf, npf,
577 4 anim_fe(11),posx_b2, xl02, dmn,
578 5 dmx, lscale, yieldx_b2, ak,
579 6 iecrou, ifunc, ifunc2, xx_old_b2,
580 7 fx_max, xk_comp, compt2, index_slip,
581 8 flag, xkp_b2, eps_old_b2, fram_factor,
582 9 nft, snpc, stf, sanin,
583 a dt1, impl_s, idyna, mvsiz)
587 IF (aldp(i) > aldp_b2(i)) xkp_b2(i) = xkp(i)
588 IF (aldp_b2(i) > aldp(i)) xkp(i) = xkp_b2(i)
593 1 off,x0,x02,lmin,update_flag,
594 2 ring_slip,slipring_id,xl0,dx,dxold,
595 3 exx,eyx,ezx,x1dp,x2dp,
596 4 x3dp,adher,nc1,nc2,nc3,
597 5 flag_slipring_update,add_node1,add_node2,vx1,vy1,
598 6 vz1,vx2,vy2,vz2,vx3,
599 7 vy3,vz3,xc,retractor_id,flag_retractor_update,
600 8 sensor_tab,x0dp,fr_id,dfx,fx,fx_b2,
601 9 aldp_b2,x0dp_b2,ex2dp,ey2dp,ez2dp,xl02,
602 a xkp_b2,compt,index2,nsensor)
605 IF (slipring_strand(i) > 0)
THEN
606 fx(i) = fx(i) + dfx(i)
607 e6(i,1) = e6(i,1) + (dx(i)-dxold(i))*dfx(i)*half
608 dx(i) = aldp(i)-x0dp(i)
609 xkm(i) =
max(xkm(i),fram_factor(i)*xk(i)*(one + xl0(i)/xl02(i)))
610 slipring(slipring_id(i))%FRAM(fr_id(i))%SLIP_FORCE(slipring_strand(i)) = fx(i)
611 ELSEIF (slipring_strand(i) < 0)
THEN
612 fx(i) = fx(i) + dfx(i)
613 e6(i,1) = e6(i,1) + (dx(i)-dxold(i))*dfx(i)*half
614 dx(i) = aldp(i)-x0dp(i)
615 retractor(retractor_id(i))%RET_FORCE = fx(i)
624 cc = uparam(iadbuf + nupar +
625 cn = uparam(iadbuf + nupar + 9)
626 xa = uparam(iadbuf + nupar + 15)
627 xb = uparam(iadbuf + nupar
628 IF (off(i) == one .AND. dmx(i) /= zero .AND. dmn(i)/= zero)
THEN
629 IF (ifail2(i) == 0)
THEN
632 IF (dx(i) > zero)
THEN
635 dlim = dx(i) / dmn(i)
638 vfail = cc * (abs(dv(i)/vrt(i)))**cn
639 IF (ifail2(i) == 1)
THEN
640 IF (dx(i) > zero)
THEN
641 dlim = dx(i) / (dmx(i) + vfail)
643 dlim = dx(i) / (dmn(i) - vfail)
645 ELSEIF (ifail2(i) == 2)
THEN
646 IF (fx(i) > zero)
THEN
647 dlim = fx(i) / (dmx(i) + vfail)
649 dlim = fx(i) / (dmn(i) - vfail)
651 ELSEIF (ifail2(i) == 3)
THEN
652 dlim =
max(zero,e6(i,1)) / (dmx(i) + vfail)
655 IF (ifail(i) == 0)
THEN
657 IF ((xa*dlim) > one)
THEN
665 crit(i)= crit(i) + xa *(dlim/xl0(i))**xb
671 iadbuf = ipm(7,mid(i)) - 1
673 ifv(i) = ipm(10 + if2 + 2,mid(i))
674 ifunc2(i)= ipm(10 + if3 + 2,mid(i))
675 ifunc3(i)= ipm(10 + if4 + 2,mid(i))
676 iecrou(i)= nint(uparam(iadbuf + i13 + 2))
677 IF (iecrou(i) > 0) ifunc(i) = -1
678 ak(i) = uparam(iadbuf + i1 + 2)
679 b(i) = uparam(iadbuf + i2 + 2)
680 d(i) = uparam(iadbuf + i3 + 2)
681 ee(i) = uparam(iadbuf + i4 + 2)
682 gf3(i) = uparam(iadbuf + i5 + 2)
683 ff(i) = uparam(iadbuf + i6 + 2)
684 lscale(i)= uparam(iadbuf + i7 + 2)
685 dmn(i) = uparam(iadbuf + i8 + 2)
686 dmx(i) = uparam(iadbuf + i9 + 2)
689 kk = 1 + numelr * anim_fe(11)
690 IF (nuvar >= 2) coord_old => uvar(2,1:nel)
693 2 dyold, dpy, tf, npf,
694 3 yc, off, e6(1,2), dpy2,
695 4 anim(kk), anim_fe(12),posy,
697 6 ff, lscale, ee, gf3,
698 7 ifunc3, yieldy, aldp, ak,
699 8 b, d, iecrou, ifunc,
700 9 ifv, ifunc2, epla, coord_old,
701 a nel, nft, stf, sanin, dt1,
702 b iresp, impl_s, idyna, snpc,
706 iadbuf = ipm(7,mid(i)) - 1
707 cc = uparam(iadbuf + nupar + 4)
708 cn = uparam(iadbuf + nupar + 10)
709 xa = uparam(iadbuf + nupar + 16)
710 xb = uparam(iadbuf + nupar + 22)
711 IF (off(i) == one .AND. dmx(i) /= zero .AND. dmn(i) /= zero)
THEN
712 IF (ifail2(i) == 0)
THEN
715 IF (dy(i) > zero)
THEN
716 dlim = dy(i) / dmx(i)
718 dlim = dy(i) / dmn(i)
721 vfail = cc * (abs(dv(i)/vrt(i)))**cn
722 IF (ifail2(i) == 1)
THEN
723 IF (dy(i) > zero)
THEN
724 dlim = dy(i) / (dmx(i) + vfail)
726 dlim = dy(i) / (dmn(i) - vfail)
728 ELSEIF (ifail2(i) == 2)
THEN
729 IF (fy(i) > zero)
THEN
730 dlim = fy(i) / (dmx(i) + vfail)
732 dlim = fy(i) / (dmn(i) - vfail)
734 ELSEIF (ifail2(i) == 3)
THEN
735 dlim =
max(zero,e6(i,2)) / (dmx(i) + vfail)
738 IF (ifail(i) == 0)
THEN
740 IF ((xa*dlim) > one)
THEN
748 crit(i)= crit(i) + xa *(dlim/xl0(i))**xb
754 iadbuf = ipm(7,mid(i)) - 1
756 ifv(i) = ipm(10 + if2 + 3,mid(i))
757 ifunc2(i)= ipm(10 + if3 + 3,mid(i))
758 ifunc3(i)= ipm(10 + if4 + 3,mid(i))
759 iecrou(i)= nint(uparam(iadbuf + i13 + 3))
760 IF (iecrou(i) > 0) ifunc(i) = -1
761 ak(i) = uparam(iadbuf + i1 + 3)
762 b(i) = uparam(iadbuf + i2 + 3)
763 d(i) = uparam(iadbuf + i3 + 3)
764 ee(i) = uparam(iadbuf + i4 + 3)
765 gf3(i) = uparam(iadbuf + i5 + 3)
766 ff(i) = uparam(iadbuf + i6 + 3)
767 lscale(i)= uparam(iadbuf + i7 + 3)
768 dmn(i) = uparam(iadbuf + i8 + 3)
769 dmx(i) = uparam(iadbuf + i9 + 3)
772 kk = 1 + numelr * (anim_fe(11)+anim_fe(12))
773 IF (nuvar >= 3) coord_old => uvar(3,1:nel)
777 2 dzold, dpz, tf, npf,
778 3 zc, off, e6(1,3), dpz2,
779 4 anim(kk), anim_fe(13),posz,
781 6 ff, lscale, ee, gf3,
782 7 ifunc3, yieldz, aldp, ak,
783 8 b, d, iecrou, ifunc,
784 9 ifv, ifunc2, epla, coord_old,
785 a nel, nft, stf, sanin, dt1,
786 b iresp, impl_s, idyna, snpc,
790 iadbuf = ipm(7,mid(i)) - 1
791 cc = uparam(iadbuf + nupar + 5)
792 cn = uparam(iadbuf + nupar + 11)
793 xa = uparam(iadbuf + nupar + 17)
794 xb = uparam(iadbuf + nupar + 23)
795 IF (off(i) == one .AND. dmx(i) /= zero .AND. dmn(i) /= zero)
THEN
796 IF (ifail2(i) == 0)
THEN
799 IF (dz(i) > zero)
THEN
800 dlim = dz(i) / dmx(i)
802 dlim = dz(i) / dmn(i)
805 vfail = cc * (abs(dv(i)/vrt(i)))**cn
806 IF (ifail2(i) == 1)
THEN
807 IF (dz(i) > zero)
THEN
808 dlim = dz(i) / (dmx(i) + vfail)
810 dlim = dz(i) / (dmn(i) - vfail)
812 ELSEIF (ifail2(i) == 2)
THEN
813 IF (fz(i) > zero)
THEN
814 dlim = fz(i) / (dmx(i) + vfail)
816 dlim = fz(i) / (dmn(i) - vfail)
818 ELSEIF (ifail2(i) == 3)
THEN
819 dlim =
max(zero,e6(i,3)) / (dmx(i) + vfail)
822 IF (ifail(i) == 0)
THEN
824 IF ((xa*dlim) > one)
THEN
832 crit(i)= crit(i) + xa *(dlim/xl0(i))**xb
840 iadbuf= ipm(7,mid(i)) - 1
843 xc(i) = uparam(iadbuf + i12 + 4)
844 yk(i) = uparam(iadbuf + i11 + 5)
845 yc(i) = uparam(iadbuf + i12 + 5)
846 zk(i) = uparam(iadbuf + i11 + 6)
847 zc(i) = uparam(iadbuf + i12 +
848 hx(i) = uparam(iadbuf + i14 + 4)
849 hy(i) = uparam(iadbuf + i14 + 5)
850 hz(i) = uparam(iadbuf + i14 + 6)
852 xhr(i)=
max(hx(i),hy(i),hz(i))
854 xkr(i)=
max(xk(i)*uparam(iadbuf + i1 + 4),
855 . yk(i)*uparam(iadbuf + i1 + 5),
856 . zk(i)*uparam(iadbuf + i1 + 6))+xkr(i)
866 IF ( inispri /= 0 .AND. tt == zero)
THEN
875 x21 = (rx2(i)-rx1(i))*dt1
876 y21 = (ry2(i)-ry1(i))*dt1
877 z21 = (rz2(i)-rz1(i))*dt1
878 rx(i) = dxold(i) + x21*exx2(i)+y21*eyx2(i)+z21*ezx2(i)
879 ry(i) = dyold(i) + x21*exy2(i)+y21*eyy2(i)+z21*ezy2(i)
880 rz(i) = dzold(i) + x21*exz2(i)+y21*eyz2(i)+z21*ezz2(i)
884 iadbuf = ipm(7,mid(i)) - 1
886 ifv(i) = ipm(10 + if2 + 4,mid(i))
887 ifunc2(i)= ipm(10 + if3 + 4,mid(i))
888 ifunc3(i)= ipm(10 + if4 + 4,mid(i))
889 iecrou(i)= nint(uparam(iadbuf + i13 + 4))
890 IF (iecrou(i) > 0) ifunc(i) = -1
891 ak(i) = uparam(iadbuf + i1 + 4)
892 b(i) = uparam(iadbuf + i2 + 4)
893 d(i) = uparam(iadbuf + i3 + 4)
894 ee(i) = uparam(iadbuf + i4 + 4)
895 gf3(i) = uparam(iadbuf + i5 + 4)
896 ff(i) = uparam(iadbuf + i6 + 4)
897 lscale(i)= uparam(iadbuf + i7 + 4)
898 dmn(i) = uparam(iadbuf + i8 + 4)
899 dmx(i) = uparam(iadbuf + i9 + 4)
901 IF (nuvar >= 4) coord_old => uvar(4,1:nel)
904 1 xmom, xk, rx, xmep,
905 2 dxold, rpx, tf, npf,
906 3 xc, off, e6(1,4), rpx2,
909 6 ff, lscale, ee, gf3,
910 7 ifunc3, yieldx2, aldp, ak,
911 8 b, d, iecrou, ifunc,
912 9 ifv, ifunc2, epla, coord_old,
913 a nel, nft, stf, sanin, dt1,
914 b iresp, impl_s, idyna, snpc,
918 iadbuf= ipm(7,mid(i)) - 1
919 cc = uparam(iadbuf + nupar + 6)
920 cn = uparam(iadbuf + nupar + 12)
921 xa = uparam(iadbuf + nupar + 18)
922 xb = uparam(iadbuf + nupar + 24)
923 IF (off(i) == one .AND. dmx(i) /= zero .AND. dmn(i) /= zero)
THEN
924 IF (ifail2(i) == 0)
THEN
927 IF (rx(i) > zero)
THEN
928 dlim = rx(i) / dmx(i)
930 dlim = rx(i) / dmn(i)
933 vfail = cc * (abs(dv(i)/vrr(i)))**cn
934 IF (ifail2(i) == 1)
THEN
935 IF (rx(i) > zero)
THEN
936 dlim = rx(i) / (dmx(i) + vfail)
938 dlim = rx(i) / (dmn(i) - vfail)
940 ELSEIF (ifail2(i) == 2)
THEN
942 dlim = xmom(i)/(dmx(i) + vfail)
944 dlim = xmom(i)/(dmn(i) - vfail)
946 ELSEIF (ifail2(i) == 3)
THEN
947 dlim =
max(zero,e6(i,4)) / (dmx(i) + vfail)
950 IF (ifail(i) == 0)
THEN
952 IF ((xa*dlim) > one)
THEN
960 crit(i)= crit(i) + xa *(dlim/xl0(i))**xb
966 iadbuf = ipm(7,mid(i)) - 1
968 ifv(i) = ipm(10 + if2 + 5,mid(i))
969 ifunc2(i)= ipm(10 + if3 + 5,mid(i))
970 ifunc3(i)= ipm(10 + if4 + 5,mid(i))
971 iecrou(i)= nint(uparam(iadbuf + i13 + 5))
972 IF (iecrou(i) > 0) ifunc(i) = -1
973 ak(i) = uparam(iadbuf + i1 + 5)
974 b(i) = uparam(iadbuf + i2 + 5)
975 d(i) = uparam(iadbuf + i3 + 5)
976 ee(i) = uparam(iadbuf + i4 + 5)
977 gf3(i) = uparam(iadbuf + i5 + 5)
978 ff(i) = uparam(iadbuf + i6 + 5)
979 lscale(i)= uparam(iadbuf + i7 + 5)
980 dmn(i) = uparam(iadbuf + i8 + 5)
981 dmx(i) = uparam(iadbuf + i9 + 5)
983 IF (nuvar >= 5) coord_old => uvar(5,1:nel)
986 1 ymom, yk, ry, ymep,
987 2 dyold, rpy, tf, npf,
988 3 yc, off, e6(1,5), rpy2,
991 6 ff, lscale, ee, gf3,
992 7 ifunc3, yieldy2, aldp, ak,
993 8 b, d, iecrou, ifunc,
994 9 ifv, ifunc2, epla, coord_old,
995 a nel, nft, stf, sanin, dt1,
996 b iresp, impl_s, idyna, snpc,
1000 iadbuf= ipm(7,mid(i)) - 1
1001 cc = uparam(iadbuf + nupar + 7)
1002 cn = uparam(iadbuf + nupar + 13)
1003 xa = uparam(iadbuf + nupar + 19)
1004 xb = uparam(iadbuf + nupar + 25)
1005 IF (off(i) == one .AND. dmx(i) /= zero .AND. dmn(i) /= zero)
THEN
1006 IF (ifail2(i) == 0)
THEN
1009 IF (ry(i) > zero)
THEN
1010 dlim = ry(i) / dmx(i)
1012 dlim = ry(i) / dmn(i)
1015 vfail = cc * (abs(dv(i)/vrr(i)))**cn
1016 IF (ifail2(i) == 1)
THEN
1017 IF (ry(i) > zero)
THEN
1018 dlim = ry(i) / (dmx(i) + vfail)
1020 dlim = ry(i) / (dmn(i) - vfail)
1022 ELSEIF (ifail2(i) == 2)
THEN
1023 IF (ymom(i) > zero)
THEN
1024 dlim = ymom(i)/(dmx(i) + vfail)
1026 dlim = ymom(i)/(dmn(i) - vfail)
1028 ELSEIF (ifail2(i) == 3)
THEN
1029 dlim =
max(zero,e6(i,5)) / (dmx(i) + vfail)
1032 IF (ifail(i) == 0)
THEN
1034 IF ((xa*dlim) > 1)
THEN
1042 crit(i)= crit(i) + xa *(dlim/xl0(i))**xb
1048 iadbuf = ipm(7,mid(i)) - 1
1050 ifv(i) = ipm(10 + if2 + 6,mid(i))
1051 ifunc2(i)= ipm(10 + if3 + 6,mid(i))
1052 ifunc3(i)= ipm(10 + if4 + 6,mid(i))
1053 iecrou(i)= nint(uparam(iadbuf + i13 + 6))
1054 IF (iecrou(i) > 0) ifunc(i) = -1
1055 ak(i) = uparam(iadbuf + i1 + 6)
1056 b(i) = uparam(iadbuf + i2 + 6)
1057 d(i) = uparam(iadbuf + i3 + 6)
1058 ee(i) = uparam(iadbuf + i4 + 6)
1059 gf3(i) = uparam(iadbuf + i5 + 6)
1060 ff(i) = uparam(iadbuf + i6 + 6)
1061 lscale(i)= uparam(iadbuf + i7 + 6)
1062 dmn(i) = uparam(iadbuf + i8 + 6)
1063 dmx(i) = uparam(iadbuf + i9 + 6)
1065 IF (nuvar >= 6) coord_old => uvar(6,1:nel)
1067 1 zmom, zk, rz, zmep,
1068 2 dzold, rpz, tf, npf,
1069 3 zc, off, e6(1,6), rpz2,
1071 5 xl0, dmn, dmx, dv,
1072 6 ff, lscale, ee, gf3,
1073 7 ifunc3, yieldz2, aldp, ak,
1074 8 b, d, iecrou, ifunc,
1075 9 ifv, ifunc2, epla, coord_old,
1076 a nel, nft, stf, sanin, dt1,
1077 b iresp, impl_s, idyna, snpc,
1081 iadbuf= ipm(7,mid(i)) - 1
1082 cc = uparam(iadbuf + nupar + 8)
1083 cn = uparam(iadbuf + nupar + 14)
1084 xa = uparam(iadbuf + nupar + 20)
1085 xb = uparam(iadbuf + nupar + 26)
1086 IF (off(i) == one .AND. dmx(i) /= zero .AND. dmn(i) /= zero)
THEN
1087 IF (ifail2(i) == 0)
THEN
1090 IF (rz(i) > zero)
THEN
1091 dlim = rz(i) / dmx(i)
1093 dlim = rz(i) / dmn(i)
1096 vfail = cc * (abs(dv(i)/vrr(i)))**cn
1097 IF (ifail2(i) == 1)
THEN
1098 IF (rz(i) > zero)
THEN
1099 dlim = rz(i) / (dmx(i) + vfail)
1101 dlim = rz(i) / (dmn(i) - vfail)
1103 ELSEIF (ifail2(i) == 2)
THEN
1104 IF (zmom(i) > zero)
THEN
1105 dlim = zmom(i)/(dmx(i) + vfail)
1107 dlim = zmom(i)/(dmn(i) - vfail)
1109 ELSEIF (ifail2(i) == 3)
THEN
1110 dlim =
max(zero,e6(i,6)) / (dmx(i) + vfail)
1113 IF (ifail(i) == 0)
THEN
1115 IF ((xa*dlim) > 1)
THEN
1123 crit(i)= crit(i) + xa *(dlim/xl0(i))**xb
1129 e(i) = e6(i,1)+e6(i,2)+e6(i,3)+e6(i,4)+e6(i,5)+e6(i,6)
1135 iadbuf = ipm(7,mid(i)) - 1
1136 israte = nint(uparam(iadbuf + nupar + 27))
1138 asrate = (2*pi*uparam(iadbuf + nupar + 28)*dt1)/(one+2*pi*uparam(iadbuf + nupar + 28)*dt1)
1139 IF (israte /= 0)
THEN
1140 crit(i) = asrate*crit(i) + (one - asrate)*crit_new(i)
1141 crit_new(i) = crit(i)
1143 IF (off(i) == one .AND. ifail(i) == 1)
THEN
1144 IF (crit(i) > one)
THEN
1155#include "lockon.inc"
1156 WRITE(iout, 1000) ngl(i)
1157 WRITE(istdo,1100) ngl(i),tt
1158#include "lockoff.inc"
1165 2 iecrou, ifunc, ifv, epla,
1169 2 iecrou, ifunc, ifv, epla,
1173 2 iecrou, ifunc, ifv, epla,
1177 iadbuf= ipm(7,mid(i)) - 1
1178 xk(i)=uparam(iadbuf + i11 + 1)
1179 yk(i)=uparam(iadbuf + i11 + 2)
1180 zk(i)=uparam(iadbuf + i11 + 3)
1185 2 iecrou, ifunc, ifv, epla,
1189 2 iecrou, ifunc, ifv, epla,
1193 2 iecrou, ifunc, ifv, epla,
1197 xkm(i)=xkm(i)/xl0(i)
1198 xcm(i)=xcm(i)/xl0(i)
1200 xkr(i)=xkr(i)/xl0(i)
1201 xcr(i)=xcr(i)/xl0(i)
1204 1000
FORMAT(1x,
'-- RUPTURE OF SPRING ELEMENT NUMBER ',i10)
1205 1100
FORMAT(1x,
'-- RUPTURE OF SPRING ELEMENT :',i10,
' AT TIME :',g11.4)