35 1 NEL0 ,NUPARAM,NUVAR ,MFUNC ,KFUNC ,
36 2 NPF ,NPT0 ,IPT ,NSENSOR,
37 2 TF ,TIME ,TIMESTEP,UPARAM ,RHO0 ,
38 3 AREA ,EINT ,THKLY ,NIPARAM ,IPARAM ,
39 4 DEPSXX ,DEPSYY ,DEPSXY ,DEPSYZ ,DEPSZX ,
40 5 EPSXX ,EPSYY ,EPSXY ,EPSYZ ,EPSZX ,
41 6 SIGOXX ,SIGOYY ,SIGOXY ,SIGOYZ ,SIGOZX ,
42 7 SIGNXX ,SIGNYY ,SIGNXY ,SIGNYZ ,SIGNZX ,
43 8 SIGVXX ,SIGVYY ,SIGVXY ,SIGVYZ ,SIGVZX ,
44 9 SOUNDSP,VISCMAX,THK ,PLA ,UVAR ,
45 A OFF ,NGL ,PM ,MAT ,ETSE ,
46 B SHF ,YLD ,TAN_PHI ,ALDT ,
47 C SENSOR_TAB,ISMSTR,TABLE ,OFFGG )
57#include "implicit_f.inc"
109#include "param_c.inc"
110#include "com04_c.inc"
111#include "com01_c.inc"
112#include "com08_c.inc"
116 INTEGER ,
INTENT(IN) :: NSENSOR
117 INTEGER ,
INTENT(IN) :: NIPARAM
118 INTEGER ,
INTENT(IN) :: NUPARAM
119 INTEGER :: NEL0, NUVAR,NPT0,IPT,ISMSTR
120 INTEGER :: NGL(NEL0),MAT(NEL0)
121 INTEGER ,
DIMENSION(NIPARAM) ,
INTENT(IN) :: IPARAM
122 my_real ,
DIMENSION(NUPARAM) ,
INTENT(IN) :: UPARAM
123 my_real TIME,TIMESTEP(NEL0),
124 . AREA(NEL0),RHO0(NEL0),EINT(NEL0,2),
125 . THKLY(NEL0),PLA(NEL0),OFFGG(NEL0),(NEL0),
126 . DEPSXX(NEL0),DEPSYY(NEL0),
127 . DEPSXY(NEL0),DEPSYZ(NEL0),(NEL0),
128 . EPSXX(NEL0) ,EPSYY(NEL0) ,
129 . epsxy(nel0) ,epsyz(nel0) ,epszx(nel0) ,
130 . sigoxx(nel0),sigoyy(nel0),
131 . sigoxy(nel0),sigoyz(nel0),sigozx(nel0),
132 . pm(npropm,*),shf(*),aldt(nel0)
137 . signxx(nel0),signyy(nel0),
138 . signxy(nel0),signyz(nel0),signzx(nel0),
139 . sigvxx(nel0),sigvyy(nel0),
140 . sigvxy(nel0),sigvyz(nel0),sigvzx(nel0),
141 . soundsp(nel0),viscmax(nel0),etse(nel0)
145 my_real uvar(nel0,nuvar), off(nel0),thk(nel0),yld(nel0)
147 my_real,
DIMENSION(1) :: XX
148 TYPE (SENSOR_STR_) ,
DIMENSION(NSENSOR) ,
INTENT(IN) :: SENSOR_TAB
152 INTEGER NPF(*), MFUNC, KFUNC(MFUNC)
153 my_real FINTER ,TF(*)
165 INTEGER I,J,NC,NT,ISENS,ITER,NITER,NINDX,NUMOFF,UNLOAD,IERR,
166 . ifuncc,ifunct,idxcnt,idx1,idx2,ierrt,ierrc,index(mvsiz),
167 . indxoff(mvsiz),tagoldc,tagoldt,tagc(0:1),tagt(0:1)
169 . kc,kt,kfc,kft,g0,gt,gb,tan_lock,visce,viscg,lc0,lt0,
170 . kbc,kbt,dc0,dt0,hc0,ht0,ec0,et0,dc,dt,trace,gfrot,gsh,
171 . ac,at,bc,bt,bc2,bt2,dcc,dtt,func,funt,deric,derit,dtinv,
172 . tfrot,sigg,y,ec2,et2,sigc,sigt,sig0,udc,udt,fc,ft,
173 . fpc,fpt,ccl,ttl,dec,det,hc,ht,kf,kg,kmax,hdc,hdt,
174 . sinn,tan2,damp,rfac,rfat,v1,v2,areamin,dareamin,
175 . aa,vv,zerostress,dsig,lmin,tstart,yfac(6),yy,phi,gxy,
176 . flex1,flex2,facc,fact,kfc0,kft0,etc,ett,phin,phii,sxyi,
177 . ddec,ddet,coeful,coefrl,dcc1,dtt1,dcc0,dtt0,phii2,sxyi2,
178 . epsi1,sigi1,epsi2,sigi2,kkc,kkt,eminc,emaxc,sminc,smaxc,
179 . emint,emaxt,smint,smaxt,face_c,face_t,facs_c,facs_t,
180 . face,facf,fate,fatf,fcl,ftl,fclp,ftlp,test,dphi,phio,kc0,kt0,
183 . ec(mvsiz),et(mvsiz),lc(mvsiz),lt(mvsiz),fn(mvsiz),sigg0(mvsiz),
184 . dtang(mvsiz),tfold(mvsiz),yc(mvsiz),yt(mvsiz),
185 . eminrlc(mvsiz),emaxrlc(mvsiz),epsmaxc(mvsiz),
186 . eminrlt(mvsiz),emaxrlt(mvsiz),epsmaxt(mvsiz),
187 . epsnc(mvsiz),epsnt(mvsiz),epsns(mvsiz),
188 . epsnrlc(mvsiz),epsnrlt(mvsiz),smaxrlc(mvsiz),smaxrlt(mvsiz),
189 . sminrlc(mvsiz),sigmaxc(mvsiz),sminrlt(mvsiz),sigmaxt(mvsiz),
190 . phimin(mvsiz),phimax(mvsiz),phirlmax(mvsiz),sxymax(mvsiz),
191 . sxymin(mvsiz),sxymaxrl(mvsiz),cvisc(mvsiz),cvist(mvsiz)
236 tan_lock = uparam(16)
243 dareamin = uparam(23)
244 zerostress = uparam(24)
247 gsh = uparam(32)*shf(1)
248 IF (zerostress > zero .and. isens > 0)
THEN
249 tstart = sensor_tab(isens)%TSTART
254 yfac(1) = uparam(27 + 1 )
255 yfac(2) = uparam(27 + 2 )
256 yfac(3) = uparam(27 + 3 )
272 IF (uvar(i,40)==one) cycle
273 depsxx(i) = depsxx(i)*uvar(i,40)
274 depsyy(i) = depsyy(i)*uvar(i,40)
276 depsxy(i) = aa*(one-uvar(i,40))+depsxy(i)*uvar(i,40)
280 IF (unload == 0)
THEN
284 IF (kbc == zero)
THEN
290 IF (kbt == zero)
THEN
296 IF(offgg(i) > zero)
THEN
304#include "vectorize.inc"
310 mass = rho0(i)*area(i)*thkly(i)*fourth
311 dtinv = timestep(i)/
max(timestep(i)*timestep(i),em20)
312 cvisc(i) = sqrt(mass*kfc0)*dtinv*third
313 cvist(i) = sqrt(mass*kft0)*dtinv*third
317#include "vectorize.inc"
320 etc =uvar(i,4)+depsxx(i)
321 ett =uvar(i,5)+depsyy(i)
324 ec(i) = exp(etc) - one
325 et(i) = exp(ett) - one
327#include "vectorize.inc"
330 lc(i) = lc0 * (one + ec(i))
331 lt(i) = lt0 * (one + et(i))
339#include "vectorize.inc"
349 dc = sqrt(lc(i)*lc(i) + hc*hc)
350 dt = sqrt(lt(i)*lt(i) + ht*ht)
357 IF (kfunc(1) /= 0)
THEN
358 fc = yfac(1)*finter(kfunc(1),dcc,npf,tf,fpc)
361 kfc = flex1*fpc*hc0/dc0
362 IF(kfc == zero)kfc=kfc0
364 ELSEIF (dcc >= ccl )
THEN
368 fc = (kc - half*kbc * dcc) * dcc
369 fpc = (kc - kbc*dcc) * hdc
371 IF (kfunc(2) /= 0)
THEN
372 ft = yfac(2)*finter(kfunc(2),dtt,npf,tf,fpt)
375 kft = flex2*fpt*ht0/dt0
376 IF(kft == zero)kft=kft0
378 ELSEIF (dtt >= ttl )
THEN
382 ft = (kt - half*kbt * dtt) * dtt
383 fpt = (kt - kbt*dtt) * hdt
385 func = kfc*yc(i) + fc*hc/dc + cvisc(i)*dyc
386 funt = kft*yt(i) + ft*ht/dt + cvist(i)*dyt
387 deric= kfc + fpc*hdc + fc*udc*(one - hdc*hdc) + cvisc(i)
388 derit= kft + fpt*hdt + ft*udt*(one - hdt*hdt) + cvist(i)
390 yc(i) = yc(i) - func / deric
391 yt(i) = yt(i) - funt / derit
392 dyc = yc(i) - uvar(i,7)
393 dyt = yt(i) - uvar(i,8)
399 IF ((yc(i) + yt(i)) < zero)
THEN
400 y = half * (uvar(i,7) - uvar(i,8))
404 dc = sqrt(lc(i)*lc(i) + hc*hc)
405 dt = sqrt(lt(i)*lt(i) + ht*ht)
412 IF (kfunc(1) /= 0)
THEN
413 fc =yfac(1)* finter(kfunc(1),dcc,npf,tf,fpc)
416 kfc = flex1*fpc*hc0/dc0
417 IF(kfc == zero)kfc=kfc0
419 ELSEIF (dcc >= ccl )
THEN
423 fc = (kc - half*kbc * dcc) * dcc
424 fpc = (kc - kbc*dcc) * hdc
426 IF (kfunc(2) /= 0)
THEN
427 ft = yfac(2)*finter(kfunc(2),dtt,npf,tf,fpt)
430 kft = flex2*fpt*ht0/dt0
431 IF(kft == zero)kft=kft0
433 ELSEIF (dtt >= ttl )
THEN
437 ft = (kt - half*kbt * dtt) * dtt
438 fpt = (kt - kbt*dtt) * hdt
442 func = kf*y + fc * hdc - ft * hdt
443 . + (cvisc(i) + cvist(i))*dyc
444 deric = kf + fpc*hdc + fc*udc*(one - hdc*hdc)
445 . + fpt*hdt + ft*udt*(one - hdt*hdt)
446 . + cvisc(i) + cvist(i)
448 dyc = y - half * (uvar(i,7) - uvar(i,8))
459 fn(i) = fc*hc/dc + ft*ht/dt
463 dc = sqrt(lc(i)*lc(i) + hc*hc)
464 dt = sqrt(lt(i)*lt(i) + ht*ht)
467#include "vectorize.inc"
472 dc = sqrt(lc(i)*lc(i) + hc*hc)
473 dt = sqrt(lt(i)*lt(i) + ht*ht)
476 IF (kfunc(1) /= 0)
THEN
477 fc =yfac(1)* finter(kfunc(1),dcc,npf,tf,fpc)
480 ELSEIF (dcc >= ccl )
THEN
483 fc = (kc - half*kbc * dcc) * dcc
485 IF(kfunc(2) /= 0)
THEN
489 ELSEIF (dtt >= ttl )
THEN
492 ft = (kt - half*kbt * dtt) * dtt
501 trace = exp(epsxx(i) + epsyy(i))
502 ec2 =
max(trace / (ec(i) + one), em6)
503 et2 =
max(trace / (et(i) + one), em6)
509 signxx(i) = sigc * rfac
525 tan_phi(i)= depsxy(i)
526 tan2 = tan_phi(i)*tan_phi(i)
527 IF (kfunc(3) /= 0)
THEN
528 phi = atan(tan_phi(i))*hundred80/pi
529 signxy(i) = yfac(3)* finter(kfunc(3),phi,npf,tf,gxy)
530 kg = gxy*yfac(3)*tan2
531 ELSEIF (tan_phi(i) > tan_lock)
THEN
532 signxy(i) = gt*tan_phi(i) + gb - sig0
534 ELSEIF (tan_phi(i) < -tan_lock)
THEN
535 signxy(i) = gt*tan_phi(i) - gb - sig0
538 signxy(i) = g0*tan_phi(i) - sig0
542 dtinv = timestep(i)/
max(timestep(i)*timestep(i),em20)
543 damp = sqrt(rho0(i)*area(i)*thkly(i)*half)
544 v1 = visce*damp*sqrt(nc*kc)
546 sigvxx(i) = dtinv*(depsxx(i))*v1
547 sigvyy(i) = dtinv*(depsyy(i))*v2
549 IF (fn(i) > zero)
THEN
550 tfrot = two_third*viscg*fn(i)*(hc0+ht0)/(lc(i)+lt(i))
551 dtang(i) = depsxy(i) - tan_phi(i)
552 sigg = tfold(i) + gfrot*dtang(i)
553 IF (abs(sigg) > tfrot)
THEN
554 sigvxy(i) = sign(tfrot,sigg)
560 sinn = tan_phi(i) / sqrt(one + tan2)
561 kmax =
max(kc0*rfac,kt0*rfat)*(one+sinn) + kg
562 lmin =
min(dc/dc0,dt/dt0)*uvar(i,14)
564 soundsp(i) = sqrt(kmax/(rho0(i)))*aldt(i)/lmin
565 viscmax(i) =
max(v1,v2)
569#include "vectorize.inc"
572 uvar(i,3) = signxy(i) + sigvxy(i)
573 tan_phi(i)= depsxy(i)
574 uvar(i,6) = depsxy(i)
577 uvar(i,9) = sigvxy(i)
579 signyz(i) = sigoyz(i) + gsh *depsyz(i)
580 signzx(i) = sigozx(i) + gsh *depszx(i)
597 IF (time == zero)
THEN
605 IF(offgg(i) > zero)
THEN
613#include "vectorize.inc"
621#include "vectorize.inc"
624 etc =uvar(i,4)+depsxx(i)
625 ett =uvar(i,5)+depsyy(i)
628 ec(i) = exp(etc) - one
629 et(i) = exp(ett) - one
631#include "vectorize.inc"
636 epsmaxc(i) = uvar(i,17)
637 eminrlc(i) = uvar(i,18)
638 emaxrlc(i) = uvar(i,19)
639 sigmaxc(i) = uvar(i,20)
640 sminrlc(i) = uvar(i,25)
641 smaxrlc(i) = uvar(i,2
642 epsmaxt(i) = uvar(i,21)
643 eminrlt(i) = uvar(i,22)
644 emaxrlt(i) = uvar(i,23)
645 sigmaxt(i) = uvar(i,24)
646 sminrlt(i) = uvar(i,26)
647 smaxrlt(i) = uvar(i,28)
649#include "vectorize.inc"
656 dc = sqrt(lc(i)*lc(i) + hc*hc)
657 dt = sqrt(lt(i)*lt(i) + ht*ht)
658 dcc = uvar(i,15) - dc0
659 dtt = uvar(i,16) - dt0
660 ddec = dc - uvar(i,15)
661 ddet = dt - uvar(i,16)
663 IF ((ddec >=zero .AND. dcc> = uvar(i,17)) .OR.
664 . (ddec >=zero .AND. uvar(i,17)==uvar(i,18)) )
THEN
668 dc = sqrt(lc(i)*lc(i) + hc*hc)
670 dcc =
max(uvar(i,18),dcc)
674 IF (kfunc(1) == 0)
THEN
678 fc = yfac(1) * finter(kfunc(1),dcc,npf,tf,fpc)
685 smaxrlc(i) = sigmaxc(i)
686 emaxrlc(i) = epsmaxc(i)
687 func = kfc*yc(i) + fc*hc/dc
688 deric= kfc + fpc*hdc + fc*udc*(one - hdc*hdc)
689 yc(i) = yc(i) - func / deric
694 ELSEIF(ddec >=zero )
THEN
698 dc = sqrt(lc(i)*lc(i) + hc*hc)
700 dcc =
max(uvar(i,18),dcc)
704 epsnrlc(i) = uvar(i,17)*(dcc - uvar(i,18)) /(uvar(i,17)-uvar(i,18))
705 IF (kfunc(1) == 0)
THEN
710 coefrl = (uvar(i,20) - uvar(i,25))/uvar(i,20)
711 fc = uvar(i,25) + coefrl * fc
713 fpc = fpc * uvar(i,17)* (uvar(i,20) - uvar(i,25))
714 . /(uvar(i,17)-uvar(i,18))/uvar(i,20)
720 func = kfc*yc(i) + fc*hc/dc
721 deric= kfc + fpc*hdc + fc*udc*(one - hdc*hdc)
722 yc(i) = yc(i) - func / deric
724 IF(dcc>uvar(i,17))then
731 IF (uvar(i,19) > zero)
THEN
734 dc = sqrt(lc(i)*lc(i) + hc*hc)
740 epsnc(i) = dcc*epsi1/uvar(i,19)
741 IF (kfunc(1) == 0)
THEN
745 fc = yfac(4) * finter(kfunc(4),epsnc(i),npf,tf,fpc)
748 fc = coeful *uvar(i,27)
749 fpc = fpc*uvar(i,27)*epsi1/uvar(i,19)/sigi1
755 func = kfc*yc(i) + fc*hc/dc
756 deric= kfc + fpc*hdc + fc*udc*(one - hdc*hdc)
757 yc(i) = yc(i) - func / deric
762 dc = sqrt(lc(i)*lc(i) + hc*hc)
769 func = kfc*yc(i) + fc*hc/dc
770 deric= kfc + fpc*hdc + fc*udc*(one - hdc*hdc)
771 yc(i) = yc(i) - func / deric
786 dc = sqrt(lc(i)*lc(i) + hc*hc)
793 fpc = kkc * hdc! derivee % yc
794 func = kfc*yc(i) + fc*hc/dc
795 deric= kfc + fpc*hdc + fc*udc*(one - hdc*hdc)
796 yc(i) = yc(i) - func / deric
810 IF((ddet >=zero .AND.dtt>uvar(i,21))
811 . .OR.(ddet >=zero .AND.uvar(i,21)==uvar(i,22)))
THEN
815 dt = sqrt(lt(i)*lt(i) + ht*ht)
817 dtt =
max(uvar(i,22),dtt)
821 IF (kfunc(2) == 0)
THEN
825 ft = yfac(2)*finter(kfunc(2),dtt,npf,tf,fpt)
832 smaxrlt(i) = sigmaxt(i)
833 emaxrlt(i)= epsmaxt(i)
836 funt = kft*yt(i) + ft*ht/dt
837 derit= kft + fpt*hdt + ft*udt*(one - hdt*hdt)
838 yt(i) = yt(i) - funt / derit
843 ELSEIF(ddet >=zero)
THEN
847 dt = sqrt(lt(i)*lt(i) + ht*ht)
849 dtt =
max(uvar(i,22),dtt)
853 epsnrlt(i) = uvar(i,21)*(dtt - uvar(i,22)) /(uvar(i,21)-uvar(i,22))
854 IF (kfunc(2) == 0)
THEN
858 ft = yfac(2)*finter(kfunc(2),epsnrlt(i),npf,tf,fpt)
859 coefrl = (uvar(i,24) - uvar(i,26))/ uvar(i,24)
860 ft = uvar(i,26) + coefrl * ft
863 fpt = fpt * uvar(i,21) * (uvar(i,24) - uvar(i,26))
864 . /(uvar(i,21)-uvar(i,22))/uvar(i,24)
868 funt = kft*yt(i) + ft*ht/dt
869 derit= kft + fpt*hdt + ft*udt*(one - hdt*hdt)
870 yt(i) = yt(i) - funt / derit
874 IF(dtt>uvar(i,21))
THEN
883 IF (uvar(i,23)>zero)
THEN
886 dt = sqrt(lt(i)*lt(i) + ht*ht)
892 epsnt(i) = epsi2*dtt/uvar(i,23)
893 IF (kfunc(2) == 0)
THEN
897 ft = yfac(5)*finter(kfunc(5),epsnt(i),npf,tf,fpt)
900 ft = coeful * uvar(i,28)
901 fpt = fpt * epsi2*uvar(i,28)/uvar(i,23)/sigi2
908 derit= kft + fpt*hdt + ft*udt*(one - hdt*hdt)
909 yt(i) = yt(i) - funt / derit
921 funt = kft*yt(i) + ft*ht/dt
922 derit= kft + fpt*hdt + ft*udt*(one - hdt*hdt)
923 yt(i) = yt(i) - funt / derit
934 ELSE ! dtt < zero domaine de compression
937 dt = sqrt(lt(i)*lt(i) + ht*ht)
944 funt = kft*yt(i) + ft*ht/dt
945 derit= kft + fpt*hdt + ft*udt*(one - hdt*hdt)
946 yt(i) = yt(i) - funt / derit
961 IF ((yc(i) + yt(i)) < zero)
THEN
962 epsmaxc(i) = uvar(i,17)
963 eminrlc(i) = uvar(i,18)
964 emaxrlc(i) = uvar(i,19)
965 sigmaxc(i) = uvar(i,20)
966 sminrlc(i) = uvar(i,25)
967 smaxrlc(i) = uvar(i,27)
968 epsmaxt(i) = uvar(i,21)
969 eminrlt(i) = uvar(i,22)
970 emaxrlt(i) = uvar(i,23)
971 sigmaxt(i) = uvar(i,24)
972 sminrlt(i) = uvar(i,26)
973 smaxrlt(i) = uvar(i,28)
974 tagoldc = nint(uvar(i,30))
975 tagoldt = nint(uvar(i,31))
978 dc = sqrt(lc(i)*lc(i) + hc*hc)
979 dt = sqrt(lt(i)*lt(i) + ht*ht)
980 ddec = dc - uvar(i,15)
981 ddet = dt - uvar(i,16)
983 y = half * (uvar(i,7) - uvar(i,8))
986 dc = sqrt(lc(i)*lc(i) + hc*hc)
987 dt = sqrt(lt(i)*lt(i) + ht*ht)
990 dcc1 = uvar(i,15) - dc0
991 dtt1 = uvar(i,16) - dt0
996 idx2 = mod(idxcnt+1,2)
998 IF(dcc1 >=zero )
THEN
1000 IF((ddec >=zero .AND.dcc0>uvar(i,17))
1001 . .OR.(ddec >=zero .AND.uvar(i,17)==uvar(i,18)) )
THEN
1011 ELSEIF(ddec >=zero)
THEN
1018 face = uvar(i,17)/(uvar(i,17)-uvar(i,18))
1019 facf = (uvar(i,20) - uvar(i,25))/uvar(i,20)
1020 IF (face <= zero)
THEN
1025 IF (facf <= zero)
THEN
1032 IF(uvar(i,19) >zero)
THEN
1039 face = epsi1 /uvar(i,19)
1040 facf = uvar(i,27)/sigi1
1051 IF(dtt1 >=zero )
THEN
1052 IF((ddet >=zero .AND.dtt0>uvar(i,21))
1053 . .OR.(ddet >=zero .AND.uvar(i,21)==uvar(i,22)) )
THEN
1063 ELSEIF(ddet >=zero)
THEN
1071 fate = uvar(i,21) /(uvar(i,21)-uvar(i,22))
1072 fatf = (uvar(i,24) - uvar(i,26))/uvar(i,24)
1073 IF (fate <= zero)
THEN
1078 IF (fatf <= zero)
THEN
1085 IF(uvar(i,23) >zero)
THEN
1092 fate = epsi2 /uvar(i,23)
1093 fatf = uvar(i,28)/sigi2
1106 DO WHILE (ierr == 1)
1112 dc = sqrt(lc(i)*lc(i) + hc*hc)
1113 dt = sqrt(lt(i)*lt(i) + ht*ht)
1117 SELECT CASE (tagc(idx1))
1119 dcc =
max(uvar(i,18),dcc)
1123 epsnrlc(i) = (dcc -eminc) *face
1124 IF (ifuncc == 0)
THEN
1128 fc = facc * finter(ifuncc,epsnrlc(i),npf,tf,fpc)
1129 fc = sminc + fc *facf
1131 fpc = fpc *facf * face
1135 IF ( iter==niter) then
1150 dcc =
max(uvar(i,18),dcc)
1154 epsnrlc(i) = (dcc -eminc) *face
1155 IF (ifuncc == 0)
THEN
1159 fc = facc * finter(ifuncc,epsnrlc(i),npf,tf,fpc)
1160 fc = sminc + fc *facf
1162 fpc = fpc *facf * face
1166 IF ( iter==niter)
THEN
1170 IF (dcc > uvar(i,17) .AND. iter==niter)
THEN
1181 epsnrlc(i) = (dcc -eminc) *face
1182 IF (ifuncc == 0)
THEN
1186 fc = facc * finter(ifuncc,epsnrlc(i),npf,tf,fpc)
1187 fc = sminc + fc *facf
1189 fpc = fpc *facf * face
1193 IF (dcc < uvar(i,18))
THEN
1212 SELECT CASE (tagt(idx1))
1214 dtt =
max(uvar(i,22),dtt)
1218 epsnrlt(i) = (dtt - emint)*fate
1219 IF (ifunct == 0)
THEN
1223 ft = fact*finter(ifunct,epsnrlt(i),npf,tf,fpt)
1224 ft = smint + ft * fatf
1226 fpt = fpt *fatf * fate
1230 IF (iter==niter)
THEN
1246 dtt =
max(uvar(i,22),dtt)
1250 epsnrlt(i) = (dtt - emint)*fate
1251 IF (ifunct == 0)
THEN
1255 ft = fact*finter(ifunct,epsnrlt(i),npf,tf,fpt)
1256 ft = smint + ft * fatf
1258 fpt = fpt *fatf * fate
1262 IF (iter==niter)
THEN
1266 IF(dtt > uvar(i,21).AND.iter==niter)
THEN
1274 dtt =
max (zero,dtt)
1278 epsnrlt(i) = (dtt - emint)*fate
1279 IF (ifunct == 0)
THEN
1283 ft = fact*finter(ifunct,epsnrlt(i),npf,tf,fpt)
1284 ft = smint + ft * fatf
1286 fpt = fpt *fatf * fate
1290 IF (dtt < uvar(i,22))
THEN
1308 func = kf*y + fc * hdc - ft * hdt
1309 deric = kf + fpc*hdc + fc*udc*(one - hdc*hdc)
1310 . + fpt*hdt + ft*udt*(one - hdt*hdt)
1311 y = y - func / deric
1322 fn(i) = fc*hc/dc + ft*ht/dt
1326 dc = sqrt(lc(i)*lc(i) + hc*hc)
1327 dt = sqrt(lt(i)*lt(i) + ht*ht)
1334 IF (tagc(idx1) == 3 .and. ((eminrlc(i) > uvar(i,18) .and. tagoldc == 3)
1335 . .OR. eminrlc(i) >uvar(i,17) .OR. eminrlc(i) >uvar(i,19)))
THEN
1338 eminrlc(i)= uvar(i,18)
1339 sminrlc(i) = uvar(i,25)
1341 y = half * (uvar(i,7) - uvar(i,8))
1344 IF (uvar(i,18)==zero .OR. uvar(i,17)==uvar(i,18))
THEN
1354 face = uvar(i,17) /(uvar(i,17)-uvar(i,18))
1355 facf = (uvar(i,20) - uvar(i,25))/uvar(i,20)
1356 IF (face <= zero)
THEN
1361 IF (facf <= zero)
THEN
1367 ELSEIF ((tagc(idx1) == 1.or.tagc(idx1) == 2) .and. (dcc < uvar(i,19).and. tagoldc
THEN
1371 eminrlc(i) = uvar(i,18)
1372 emaxrlc(i) = uvar(i,19)
1373 sigmaxc(i) = uvar(i,20)
1374 sminrlc(i) = uvar(i,25)
1375 smaxrlc(i) = uvar(i,27)
1377 y = half * (uvar(i,7) - uvar(i,8))
1383 face = epsi1 /uvar(i,19)
1384 facf = uvar(i,27)/sigi1
1387 IF (tagt(idx1) == 3 .and. ((eminrlt(i) > uvar(i,22) .and.tagoldt == 3)
1388 . .OR. eminrlt(i) >uvar(i,21).OR. eminrlt(i) >uvar(i,23)))
THEN
1391 eminrlt(i)= uvar(i,22)
1392 sminrlt(i) = uvar(i,26)
1394 y = half * (uvar(i,7) - uvar(i,8))
1397 IF(uvar(i,22)==zero.OR.uvar(i,21)==uvar(i,22))
THEN
1407 fate = uvar(i,21)/(uvar(i,21)-uvar(i,22))
1408 fatf = (uvar(i,24) - uvar(i,26))/uvar(i,24)
1409 IF (fate <= zero)
THEN
1414 IF (fatf <= zero)
THEN
1421 ELSEIF ((tagt(idx1) == 1.or.tagt(idx1) == 2).and.(dtt < uvar(i,23).and. tagoldt /= 3 ))
THEN
1424 epsmaxt(i) = uvar(i,21)
1425 eminrlt(i) = uvar(i,22)
1426 emaxrlt(i) = uvar(i,23)
1427 sigmaxt(i) = uvar(i,24)
1428 sminrlt(i) = uvar(i,26)
1429 smaxrlt(i) = uvar(i,28)
1431 y = half * (uvar(i,7) - uvar(i,8))
1437 fate = epsi2 /uvar(i,23)
1438 fatf = uvar(i,28)/sigi2
1442 idx1 = mod(idxcnt,2)
1444 idx2 = mod(idxcnt+1,2)
1446 IF (idxcnt > 3)
THEN
1449 eminrlc(i) = uvar(i,18)
1450 sminrlc(i) = uvar(i,25)
1451 emaxrlc(i) = uvar(i,19)
1452 smaxrlc(i) = uvar(i,27)
1453 epsmaxc(i) = uvar(i,17)
1454 sigmaxc(i) = uvar(i,20)
1455 IF (dcc > uvar(i,19))
THEN
1459 IF (dcc > uvar(i,17))
THEN
1464 ELSEIF (dcc < uvar(i,18))
THEN
1470 eminrlt(i) = uvar(i,22)
1471 sminrlt(i) = uvar(i,26)
1472 epsmaxt(i) = uvar(i,21)
1473 sigmaxt(i) = uvar(i,24)
1474 epsmaxt(i) = uvar(i,21)
1477 IF (dtt > uvar(i,23))
THEN
1481 IF (dtt > uvar(i,21))
THEN
1486 ELSEIF (dtt < uvar(i,22))
THEN
1495 uvar(i,30) = tagc(idx2)
1496 uvar(i,31) = tagt(idx2)
1502 trace = exp(epsxx(i) + epsyy(i))
1503 ec2 =
max(trace / (ec(i) + one), em6)
1504 et2 =
max(trace / (et(i) + one), em6)
1510 sigc = fc * lc(i) / dc
1511 sigt = ft * lt(i) / dt
1512 signxx(i) = sigc * rfac
1513 signyy(i) = sigt * rfat
1523 tan_phi(i)= depsxy(i)
1524 uvar(i,6)= depsxy(i)
1525 tan2 = tan_phi(i)*tan_phi(i)
1527 phi = atan(tan_phi(i))*hundred80/pi
1531 phimin(i) = uvar(i,32)
1532 phimax(i) = uvar(i,33)
1533 phirlmax(i) = uvar(i,34)
1534 sxymax(i) = uvar(i,35)
1535 sxymin(i) = uvar(i,36)
1538 IF (kfunc(3) == 0)
THEN
1539 IF (tan_phi(i) > tan_lock)
THEN
1540 signxy(i) = gt*tan_phi(i) + gb - sig0
1542 ELSEIF (tan_phi(i) < -tan_lock)
THEN
1543 signxy(i) = gt*tan_phi(i) - gb - sig0
1546 signxy(i) = g0*tan_phi(i) - sig0
1553 IF ((dphi >=zero .AND. uvar(i,32) ==zero).OR.(dphi >=zero .AND.
1554 . phi >uvar(i,33)).OR.(dphi >=zero .AND. uvar(i,33)==uvar(i,32)) .OR.
1555 . (dphi >=zero .AND. uvar(i,35)==zero))
THEN
1557 signxy(i) = yfac(3)*finter(kfunc(3),phi,npf,tf,gxy)
1558 kg = gxy*yfac(3)*tan2
1561 sxymax(i) = signxy(i)
1562 sxymaxrl(i) = signxy(i)
1563 ELSEIF(dphi>=zero)
THEN
1565 phin = uvar(i,33)*(phi - uvar(i,32))/(uvar(i,33) - uvar(i,32))
1566 signxy(i) = yfac(3)*finter(kfunc(3),phin,npf,tf,gxy)
1567 signxy(i) = uvar(i,36) + signxy(i) *(uvar(i,35) - uvar(i,36))/uvar(i,35)
1568 kg = gxy*yfac(3)*tan2
1570 sxymaxrl(i) = signxy(i)
1571 IF (phi >uvar(i,33))
THEN
1573 sxymax(i) = signxy(i)
1577 phin = phi * phii/uvar(i,34)
1578 signxy(i) = yfac(6)*finter(kfunc(6),phin,npf,tf,gxy)
1579 signxy(i) = signxy(i)*uvar(i,37) / sxyi
1580 kg = gxy*yfac(6)*tan2
1582 sxymin(i) = signxy(i)
1585 IF((dphi <=zero .AND. uvar(i,32) ==zero).OR.(dphi <=zero .AND. phi <uvar(i,33))
1586 . .OR.(dphi <=zero .AND. uvar(i,33)==uvar(i,32)) )
THEN
1588 signxy(i) = yfac(3)*finter(kfunc(3),phi,npf,tf,gxy)
1589 kg = gxy*yfac(3)*tan2
1592 sxymax(i) = signxy(i)
1593 sxymaxrl(i) = signxy(i)
1594 ELSEIF(dphi<=zero)
THEN
1596 phin = uvar(i,33)*(phi - uvar(i,32))/(uvar(i,33) - uvar(i,32))
1597 signxy(i) = yfac(3)*finter(kfunc(3),phin,npf,tf,gxy)
1598 signxy(i) = uvar(i,36) + signxy(i) *(uvar(i,35) - uvar(i,36))/uvar(i,35)
1599 kg = gxy*yfac(3)*tan2
1601 sxymaxrl(i) = signxy(i)
1602 IF (phi <uvar(i,33))
THEN
1604 sxymax(i) = signxy(i)
1608 phin = phi * phii2/uvar(i,34)
1609 signxy(i) = yfac(6)*finter(kfunc(6),phin,npf,tf,gxy)
1610 signxy(i) = signxy(i)*uvar(i,37) / sxyi2
1611 kg = gxy*yfac(6)*tan2
1613 sxymin(i) = signxy(i)
1621 dtinv = timestep(i)/
max(timestep(i)*timestep(i),em20)
1622 damp = sqrt(rho0(i)*area(i)*thkly(i)*half)
1629 v1 = visce*damp*sqrt(kc)
1630 v2 = visce*damp*sqrt(kt)
1631 sigvxx(i) = dtinv*(depsxx(i
1632 sigvyy(i) = dtinv*(depsyy(i))*v2
1634 IF (fn(i) > zero)
THEN
1635 tfrot = two_third*viscg*fn(i)*(hc0+ht0)/(lc(i)+lt(i))
1636 dtang(i) = depsxy(i) - tan_phi(i)
1637 sigg = tfold(i) + gfrot*dtang(i)
1638 IF (abs(sigg) > tfrot)
THEN
1639 sigvxy(i) = sign(tfrot,sigg)
1645 sinn = tan_phi(i) / sqrt(one + tan2)
1646 kmax =
max(kc0*rfac,kt0*rfat)*(one+sinn) + kg
1647 lmin =
min(dc/dc0,dt/dt0)*uvar(i,14)
1648 soundsp(i) = sqrt(kmax/(rho0(i)))*aldt(i)/lmin
1649 viscmax(i) =
max(v1,v2)
1653#include "vectorize.inc"
1656 uvar(i,3) = signxy(i) + sigvxy(i)
1657 tan_phi(i) = depsxy(i)
1658 uvar(i,6) = depsxy(i)
1661 uvar(i,9) = sigvxy(i)
1663 uvar(i,17) = epsmaxc(i)
1664 uvar(i,18) = eminrlc(i)
1665 uvar(i,19) = emaxrlc(i)
1666 uvar(i,20) = sigmaxc(i)
1667 uvar(i,21) = epsmaxt(i)
1668 uvar(i,22) = eminrlt(i)
1669 uvar(i,23) = emaxrlt(i)
1670 uvar(i,24) = sigmaxt(i)
1671 uvar(i,25) = sminrlc(i)
1672 uvar(i,26) = sminrlt(i)
1673 uvar(i,27) = smaxrlc(i)
1674 uvar(i,28) = smaxrlt(i)
1675 uvar(i,32) = phimin(i)
1676 uvar(i,33) = phimax(i)
1677 uvar(i,34) = phirlmax(i)
1678 uvar(i,35) = sxymax(i)
1679 uvar(i,36) = sxymin(i)
1680 uvar(i,37) = sxymaxrl(i)
1682 signyz(i) = sigoyz(i) + gsh *depsyz(i)
1683 signzx(i) = sigozx(i) + gsh *depszx(i)
1690 IF (zerostress /= zero)
THEN
1691 IF (tt <= tstart)
THEN
1692#include "vectorize.inc"
1695 uvar(i,11) = signxx(i)
1696 uvar(i,12) = signyy(i)
1697 uvar(i,13) = signxy(i)
1703#include "vectorize.inc"
1706 dsig = signxx(i) - sigoxx(i) - uvar(i,11)
1707 IF((uvar(i,11) > zero).AND.(dsig < zero))
THEN
1708 uvar(i,11) =
max(zero,uvar(i,11)+zerostress*dsig)
1709 ELSEIF((uvar(i,11) < zero).AND.(dsig > zero))
THEN
1710 uvar(i,11) =
min(zero,uvar(i,11)+zerostress*dsig)
1712 dsig = signyy(i) - sigoyy(i) - uvar(i,12)
1713 IF((uvar(i,12) > zero).AND.(dsig < zero))
THEN
1714 uvar(i,12) =
max(zero,uvar(i,12)+zerostress*dsig)
1715 ELSEIF((uvar(i,12) < zero).AND.(dsig > zero))
THEN
1716 uvar(i,12) =
min(zero,uvar(i,12)+zerostress*dsig)
1718 dsig = signxy(i) - sigoxy(i) - uvar(i,13)
1719 IF((uvar(i,13) > zero).AND.(dsig < zero))
THEN
1720 uvar(i,13) =
max(zero,uvar(i,13)+zerostress*dsig)
1721 ELSEIF((uvar(i,13) < zero).AND.(dsig > zero))
THEN
1722 uvar(i,13) =
min(zero,uvar(i,13)+zerostress*dsig)
1724 signxx(i) = signxx(i) - uvar(i,11)
1725 signyy(i) = signyy(i) - uvar(i,12)
1726 signxy(i) = signxy(i) - uvar(i,13)
1733 kmax =
max(kc0,kt0)*two
1734 soundsp(i) = sqrt(kmax/(rho0(i)))
1739 IF (areamin > zero)
THEN
1740#include "vectorize.inc"
1743 aa = (one+ec(i)+et(i) - areamin) * dareamin
1744 aa =
min(
max(aa,zero),one)
1745 signxx(i) = signxx(i)*aa
1746 signyy(i) = signyy(i)*aa
1747 signxy(i) = signxy(i)*aa
1748 signyz(i) = signyz(i)*aa
1749 signzx(i) = signzx(i)*aa
1757#include "vectorize.inc"
1760 IF (uvar(i,40)==one) cycle
1762 signxx(i) = signxx(i)*aa
1763 signyy(i) = signyy(i)*aa
1764 signxy(i) = signxy(i)*aa
1765 IF (uvar(i,40)<em02)
THEN
1766 kmax =
max(kc0,kt0)*two
1767 soundsp(i) = sqrt(kmax/(rho0(i)))