37 1 NEL , NUPARAM, NUVAR , NFUNC , IFUNC , NPF ,
38 2 TF , TIME , TIMESTEP, UPARAM, RHO0 , RHO ,
40 4 EPSPXX , EPSPYY , EPSPZZ , EPSPXY, EPSPYZ, EPSPZX,
41 5 DEPSXX , DEPSYY , DEPSZZ , DEPSXY, DEPSYZ, DEPSZX,
42 6 EPSXX , EPSYY , EPSZZ , EPSXY , EPSYZ , EPSZX ,
43 7 SIGOXX , SIGOYY , SIGOZZ , SIGOXY, SIGOYZ, SIGOZX,
44 8 SIGNXX , SIGNYY , SIGNZZ , SIGNXY, SIGNYZ, SIGNZX,
45 9 SIGVXX , SIGVYY , SIGVZZ , SIGVXY, SIGVYZ, SIGVZX,
46 A SOUNDSP, VISCMAX, UVAR , OFF ,
47 B ISMSTR , MFXX , MFXY , MFXZ , MFYX ,
48 C MFYY , MFYZ , MFZX , MFZY , MFZZ , ET ,
53#include "implicit_f.inc"
63 INTEGER NEL, NUPARAM, NUVAR,ISMSTR,IHET
66 . TIME , TIMESTEP , UPARAM(NUPARAM),
67 . RHO (NEL), RHO0 (NEL), VOLUME(NEL), EINT(NEL),
68 . EPSPXX(NEL), EPSPYY(NEL), EPSPZZ(NEL),
69 . EPSPXY(NEL), EPSPYZ(NEL), EPSPZX(NEL),
70 . DEPSXX(NEL), DEPSYY(NEL), DEPSZZ(NEL),
71 . DEPSXY(NEL), DEPSYZ(NEL), DEPSZX(NEL),
72 . EPSXX (NEL), EPSYY (NEL), EPSZZ (NEL),
73 . EPSXY (NEL), EPSYZ (NEL), EPSZX (NEL),
74 . (NEL), SIGOYY(NEL), SIGOZZ(NEL),
75 . SIGOXY(NEL), SIGOYZ(NEL), SIGOZX(NEL),
76 . mfxx(nel) , mfxy(nel), mfxz(nel),
77 . mfyx(nel) , mfyy(nel), mfyz(nel),
78 . mfzx(nel) , mfzy(nel), mfzz(nel),offg(nel)
83 . signxx(nel), signyy(nel), signzz(nel),
84 . signxy(nel), signyz(nel), signzx(nel),
85 . sigvxx(nel), sigvyy(nel), sigvzz(nel),
86 . sigvxy(nel), sigvyz(nel), sigvzx(nel),
87 . soundsp(nel), viscmax(nel),
94 . uvar(nel,nuvar), off(nel)
98 INTEGER NPF(*), NFUNC, IFUNC(NFUNC)
105 INTEGER MFUNC,IUNLOAD
107 INTEGER I,J,L,N,M,MDIR,NROT
108 INTEGER K(MVSIZ,3),K1(MVSIZ,3),KF(MVSIZ,3)
109 INTEGER KF1(MVSIZ,3),KUN(MVSIZ,3)
110 INTEGER IFLAG,ITOTAL,IMSTA
111 INTEGER NFUNC1,NFUNCUL,NFUNCP,NPCURVE,KCOMPAIR
112 INTEGER KRECOVER,KDECAY
113 LOGICAL TOTAL,UNCHANGED,JACOBI,UNLOADING
114 INTEGER II,JJ,KEN,IDEAC
117 . STRAIN(MVSIZ,3),RATE(MVSIZ,3),
120 . dsigma(mvsiz,3),decay,tensioncut,
121 . amin,amax,tolerance,lamda,efinal,epsfin,
122 . a(3,3),sn(3,3),earj(3),
123 . psc(mvsiz,3),ear(mvsiz,3),
124 . ebr(mvsiz,3),ecr(mvsiz,3),
125 . psn(mvsiz,3),ean(mvsiz,3),
126 . ebn(mvsiz,3),ecn(mvsiz,3),
128 . dpra(3,3),dprao(3,3),
129 . av(mvsiz,6),earv(mvsiz,3),dirprv(mvsiz,3,3),
130 . sigprv(mvsiz,3),ei(mvsiz),
131 . e0,vt,vc,rv,kkk,ggg,
132 . beta,hyster,ratedamp,theta,
133 . p0,relaxp,maxpres,phi,gamma,
134 . pair(mvsiz),volumer(mvsiz),
138 . psn1(mvsiz,3),psn2(mvsiz,3),
139 . edot0(mvsiz,3),edots(mvsiz,3),
140 . edotl(mvsiz,3),edotu(mvsiz,3),
141 . exponas,exponbs,funload,runload,
142 . e12(mvsiz),e23(mvsiz),e31(mvsiz),
143 . a11(mvsiz),a12(mvsiz),a13(mvsiz),a22(mvsiz),
144 . a23(mvsiz),a33(mvsiz),detc(mvsiz),
145 . v12(mvsiz),v23(mvsiz),v31(mvsiz),
146 . d11(mvsiz),d12(mvsiz),d44(mvsiz),
147 . emax(mvsiz),eyn(mvsiz,3),
148 . huge,small,tiny,shift,pscale
151 . tmp0,tmp1,tmp2,tmp3,tmp4,
152 . aa(mvsiz),sigmax(mvsiz),esecant(mvsiz,3),
154 . ratio, pui,pui_1,eymin,eyav
173 ratedamp = uparam(10)
174 krecover = uparam(11)
179 kcompair = uparam(14)
199 tensioncut= uparam(27)
204 viscosity = uparam(31)
205 tolerance = uparam(32)
215 edot(i) =uparam(nuparam-nfunc1+i)
216 alpha(i)=uparam(nuparam-nfunc1*2+i)
225 IF(itotal==2.OR.itotal==3) total=.false.
226 IF (ismstr>=10.AND.ismstr>=12) total=.true.
303 IF (krecover==2)
THEN
309 uvar(i,32)=
max(uvar(i,32),eint(i))
315 IF(eint(i)/=uvar(i,32))
THEN
316 IF( (eint(i)/uvar(i,32))>zero
THEN
317 pui = exp( beta*log( eint(i)/uvar(i,32) ) )
324 efac(i) =(one-hyster)*( one- pui )
341 av(i,4)=epsxy(i)*half
342 av(i,5)=epsyz(i)*half
343 av(i,6)=epszx(i)*half
348 av(i,4)=depsxy(i)*half
349 av(i,5)=depsyz(i)*half
350 av(i,6)=depszx(i)*half
367 dirprv(i,n,j)=dpra(n,j)
386 dprao(l,n)=uvar(i,16+m)
393 dpra(n,j)=dirprv(i,n,j)
400 CALL checkaxes(dprao,dpra,amin,amax,unchanged,tolerance)
401 IF(.NOT.unchanged)
THEN
406 IF(n==l) sn(n,l)= uvar(i,n+3*(m-1))
413 CALL dreh(sn,dprao,ii,jj,ken)
419 CALL dreh(sn,dpra ,ii,jj,ken)
422 uvar(i,n+3*(m-1)) = sn(n,n)
426 IF (beta>tiny.AND.krecover/=2)
THEN
431 IF(n==l) sn(n,l)= uvar(i,n+3*(m-1)+25)
437 CALL dreh(sn,dprao ,ii,jj,ken)
442 CALL dreh(sn,dpra ,ii,jj,ken)
445 uvar(i,n+3*(m-1)+25) = sn(n,n)
477 ear(i,1)= sign(one,epsxx(i)+epsyy(i)+epszz(i))*sqrt(
478 & (epsxx(i)-epsyy(i))**2+
479 & (epsyy(i)-epszz(i))**2+
480 & (epszz(i)-epsxx(i))**2+
481 & two*(epsxy(i)**2+epsyz(i)**2+epszx(i)**2))/sqrt(two)
483 ecr(i,1)= sign(one,depsxx(i)+depsyy(i)+depszz(i))*sqrt(
484 & (depsxx(i)-depsyy(i))**2+
485 & (depsyy(i)-depszz(i))**2+
486 & (depszz(i)-depsxx(i))**2+
487 & ((depsxy(i))**2+(depsyz(i))**2+(depszx(i))**2))
494 IF(ismstr==10.OR.ismstr==12)
THEN
496 IF(off(i)==zero )
THEN
504 IF(timestep<=zero)
THEN
513 IF ((ismstr==10.OR.ismstr==12).AND.ideac==0.AND.offg(i) <=one)
THEN
514 ecr(i,j)=sqrt(ear(i,j)+one)-uvar(i,j)
516 ecr(i,j)=ear(i,j)-uvar(i,j)
519 ear(i,j)=ecr(i,j)+uvar(i,j)
521 ebr(i,j)=ecr(i,j)*dti
527 IF(ismstr==0.OR.ismstr==2.OR.ismstr==4)
THEN
528 el(i,j)=exp(ear(i,j))
531 ebn(i,j)=ebr(i,j)*el(i,j)
532 ecn(i,j)=el(i,j)*(one-exp(-ecr(i,j)))
533 ELSEIF(ismstr==10.OR.ismstr==12)
THEN
534 IF (offg(i) <=one)
THEN
535 el(i,j)=sqrt(ear(i,j)+one)
549 ebn(i,j)=uvar(i,j+6)+(ebn(i,j)-uvar(i,j+6))*ratedamp
558 volumer(i)=el(i,1)*el(i,2)*el(i,3)
563 IF (kcompair==1.AND.volumer(i)<one)
THEN
564 npcurve=ifunc(nfuncp)
565 IF (volumer(i)-phi>small)
THEN
567 pair(i)=-finter(npcurve,volumer(i),npf,tf,df)
568 pair(i)=pair(i)*pscale
570 pair(i)=p0*(volumer(i)-one)/(volumer(i)-phi)
576 pair(i)=exp(-relaxp*time)*
max(pair(i),-maxpres)
578 ELSEIF (kcompair==2.AND.volumer(i)<one)
THEN
579 npcurve=ifunc(nfuncp)
580 pair(i)=-finter(npcurve,volumer(i),npf,tf,df)
595 strain(i,j)=-ean(i,j)
596 rate(i,j)=abs(ebn(i,j))
599 IF((ean(i,j)<zero.AND.ebn(i,j)>zero).OR.
600 & (ean(i,j)>zero.AND.ebn(i,j)<zero))unloading=.true.
602 psn1(i,j)=-
alpha(1)*finter(ifunc(1),strain(i,j),npf,tf,df)
609 IF(edot0(i,j)<edot(1)) edot0(i,j)=edot(1)
610 IF(unloading.AND.iunload/=0)
THEN
613 IF (abs(runload-edot(1))<em20)
THEN
615 & (finter(ifunc(nfuncul),strain(i,j),npf,tf,df1))
619 edotu(i,j)=edot0(i,j)
621 edotl(i,j)=
max(runload,edots(i,j))
623 IF(edotu(i,j)<edots(i,j))edotu(i,j)=edots(i,j)
624 IF(edotu(i,j)>edotl(i,j))edotu(i,j)=edotl(i,j)
627 & finter(ifunc(1),strain(i,j),npf,tf,df1)
630 & (finter(ifunc(nfuncul),strain(i,j),npf,tf,df2))
633 & (
max(tiny,edotl(i,j)-edots(i,j)))))
636 pui_1 = exp( exponas*log(ratio) )
641 psn(i,j)=psn2(i,j)+(psn1(i,j
642 & exp( exponbs*log( one - pui_1 ) )
654! psn(i,j)=psn2(i,j)+(psn1(i,j)
660 IF(abs(edotu(i,j)-edots(i,j))>tiny.AND.
661 & abs(psn(i,j)-psn1(i,j))>tiny)visc(i,j)=
662 & abs((psn(i,j)-psn1(i,j))/(edotu(i,j)-edots(i,j)))
664 visc(i,j)=
min(visc(i,j),viscosity)
665 psn(i,j)=psn1(i,j)-visc(i,j)*(edotu(i,j)-edots(i,j))
670 IF(unloading) kun(i,j)=nfunc1
676 & finter(ifunc(kun(i,j)+1),strain(i,j)+shift,npf,tf,df)
685 IF(edot0(i,j)<=edot(l))
GOTO 10
693 psn2(i,j)=-
alpha(k(i,j))*
694 & finter(ifunc(kf(i,j)),strain(i,j)+shift,npf,tf,df2)
696 kf1(i,j)=
max(1,l-1)+kun(i,j)
697 edotl(i,j)=edot(k(i,j))
698 edots(i,j)=edot(k1(i,j))
699 psn1(i,j)=-
alpha(k1(i,j))*
700 & finter(ifunc(kf1(i,j)),strain(i,j)+shift,npf,tf,df1)
702 eyn(i,j)=
alpha(l)*df2
704 eyn(i,j)=
alpha(k1(i,j))*df1
707 ratio = (
min(one,(edot0(i,j)-edots(i,j))/
708 & (
max(tiny,edotl(i,j)-edots(i,j))))
710 pui_1 = exp( exponas*log(ratio) )
715 psn(i,j)=psn2(i,j)+(psn1(i,j)-psn2(i,j))*
716 & exp(exponbs*log(one - pui_1 ) )
724! & (one-(ratio)**exponas) ** exponbs
728 IF(abs(edot0(i,j)-edots(i,j))>tiny.AND.
729 & abs(psn(i,j)-psn1(i,j))>tiny)visc(i,j)=
730 & abs((psn(i,j)-psn1(i,j))/(edot0(i,j)-edots(i,j)))
732 visc(i,j)=
min(visc(i,j),viscosity)
733 psn(i,j)=psn1(i,j)-visc(i,j)*(edot0(i,j)-edots(i,j))
747 IF(ean(i,j)<zero)
THEN
749 IF(krecover==0.AND.ecn(i,j)<zero)
750 & uvar(i,j+25)=uvar(i,j+25)+abs(ecn(i,j))
753 IF(ebn(i,j)<zero)
THEN
754 decay =
min(one,hyster*(one-exp(-beta*uvar(i,j+25))))
758 IF (krecover==2) decay = efac(i)
761 & psn(i,j)=psn(i,j)*(one-decay)
763 IF(kdecay==1.AND.ecn(i,j)<zero)
764 & psn(i,j)=psn(i,j)*(one-decay)
766 IF(kdecay==2.AND.ecn(i,j)>zero)
767 & psn(i,j)=psn(i,j)*(one-decay)
770 dsigma(i,j)=psn(i,j)-uvar(i,j+3)
775 IF(abs(ecn(i,j))>tiny)
THEN
776 eyn(i,j)=abs(dsigma(i,j)/ecn(i,j))
785 IF(sign(one,(ebn(i,j)/(uvar(i,j+6)+tiny)))/=one)
786 & eyn(i,j)=uvar(i,j+9)
790 eyn(i,j)=eyn(i,j)*theta+uvar(i,j+9)*(one-theta)
795 IF(itotal==0.OR.itotal==2)
THEN
798 IF(ean(i,j)>=zero)
THEN
800 tmp1=exp(-lamda*(volumer(i)-1.+epsfin))
801 ei(i)=efinal+(e0-efinal)*(1-tmp1)
802 tmp2=lamda*(efinal-e0)*tmp1
803 eyn(i,j)=
max(ei(i),tmp2)
805 psn(i,j)=ei(i)*ean(i,j)
807 psn(i,j)=uvar(i,j+3)+ei(i)*ecn(i,j)
809 uvar(i,j+12)=vt/ei(i)
813 IF (krecover==2)
THEN
815 IF(ean(i,j)>=zero)
THEN
818 IF(kdecay==0) psn(i,j)=psn(i,j)*(one-decay)
820 IF(kdecay==1.AND.ecn(i,j)<zero)
821 & psn(i,j)=psn(i,j)*(one-decay)
823 IF(kdecay==2.AND.ecn(i,j)>zero)
824 & psn(i,j)=psn(i,j)*(one-decay)
828 ELSEIF(itotal==-1)
THEN
833 ei(i)=
max(uvar(i,10),uvar(i,11),uvar(i,12))
835 psn(i,j)=ei(i)*ean(i,j)
836 uvar(i,j+12)=vt/ei(i)
839 ELSEIF(itotal==-2)
THEN
842 IF(ean(i,j)>zero)
THEN
844 ei(i)=
max(uvar(i,10),uvar(i,11),uvar(i,12))
846 psn(i,j)=uvar(i,j+3)+ei(i)*ecn(i,j)
847 uvar(i,j+12)=vt/ei(i)
857 sigmax(i)=-(
min(psn(i,1),psn(i,2),psn(i,3))-
858 .
max(psn(i,1),psn(i,2),psn(i,3)))
862 esecant(i,j)=0.4*abs(psn(i,j))/
max(tiny,abs(strain(i,j)))
863 IF (esecant(i,j)<=sigmax(i))
THEN
864 tmp1=0.2*(sigmax(i)-esecant(i,j))
865 psn(i,j)=psn(i,j)+tmp1*ean(i,j)
866 eyn(i,j)=
max(eyn(i,j),(one+tmp1)*esecant(i,j))
872 IF ((ismstr==10.OR.ismstr==12).AND.ideac==0)
THEN
875 tmp0=
max(eyn(i,j),uvar(i,j+9))
876 IF (offg(i) <=one)
THEN
877 uvar(i,j )=sqrt(ear(i,j)+one)
891 tmp0=
max(eyn(i,j),uvar(i,j+9))
903 epsd(i)=
max(abs(ebn(i,1)),abs(ebn(i,2)),abs(ebn(i,3)))
910 d11(i)=emax(i)*(one-vt)/(one+vt)/(one-two*vt)
911 d12(i)=emax(i)*vt/(one+vt)/(one-two*vt)
912 d44(i)=emax(i)/two/(one+vt)
916 signxx(i)=d11(i)*epsxx(i)+d12(i)*epsyy(i)+d12(i)*epszz(i)
917 signyy(i)=d12(i)*epsxx(i)+d11(i)*epsyy(i)+d12(i)*epszz(i)
918 signzz(i)=d12(i)*epsxx(i)+d12(i)*epsyy(i
919 signxy(i)=d44(i)*epsxy(i)
920 signyz(i)=d44(i)*epsyz(i)
921 signzx(i)=d44(i)*epszx(i)
922 soundsp(i) = sqrt(d11(i)/rho0(i))
925 & d11(i)*depsxx(i)+d12(i)*depsyy(i
927 & d12(i)*depsxx(i)+d11(i)*depsyy(i)+d12(i)*depszz(i
929 & d12(i)*depsxx(i)+d12(i)*depsyy(i)+d11(i)*depszz(i)
930 signxy(i)=sigoxy(i)+d44(i)*depsxy(i)
931 signyz(i)=sigoyz(i)+d44(i)*depsyz
932 signzx(i)=sigozx(i)+d44(i)*depszx(i)
933 soundsp(i) = sqrt(d11(i)/rho0(i))
942 IF(vt+vc<=two*tiny)
THEN
948 psc(i,1)=eyn(i,1)*ecn(i,1)
949 psc(i,2)=eyn(i,2)*ecn(i,2)
950 psc(i,3)=eyn(i,3)*ecn(i,3)
953 e12(i)=(ean(i,1)+ean(i,2))/two
954 e23(i)=(ean(i,2)+ean(i,3))/two
955 e31(i)=(ean(i,3)+ean(i,1))/two
956 v12(i)=vc+(vt-vc)*(one-exp(-rv*abs(e12(i))))*
957 & (sign(one,e12(i))+one)/two
958 v23(i)=vc+(vt-vc)*(one-exp(-rv*abs(e23(i))))*
959 & (sign(one,e23(i))+one)/two
960 v31(i)=vc+(vt-vc)*(one-exp(-rv*abs(e31(i))))*
961 & (sign(one,e31(i))+one)/two
963 detc(i)=one-v23(i)*v23(i)-v31(i)*v31(i)-v12(i)*v12(i)-
964 & two*v12(i)*v31(i)*v23(i)
965 a11(i)=(one-v23(i)*v23(i))
966 a12(i)=(v12(i)+v23(i)*v31(i))
967 a13(i)=(v31(i)+v23(i)*v12(i))
968 a22(i)=(one-v31(i)*v31(i))
969 a23(i)=(v23(i)+v31(i)*v12(i))
970 a33(i)=(one-v12(i)*v12(i))
971 psc(i,1)=(a11(i)*psn(i,1)+a12(i)*psn(i,2)+a13(i)*psn(i,3))/
973 psc(i,2)=(a12(i)*psn(i,1)+a22(i)*psn(i,2)+a23(i)*psn(i,3))/
975 psc(i,3)=(a13(i)*psn(i,1)+a23(i)*psn(i,2)+a33(i)*psn(i,3))/
978 uvar(i,13)=theta*v23(i)/ei(i)+(one-theta)*uvar(i,13)
979 uvar(i,14)=theta*v31(i)/ei(i)+(one-theta)*uvar(i,14)
980 uvar(i,15)=theta*v12(i)/ei(i)+(one-theta)*uvar(i,15)
981 detc(i)=one/(eyn(i,1)*eyn(i,2)*eyn(i,3))-
982 & uvar(i,13)*uvar(i,13)/eyn(i,1)-
983 & uvar(i,14)*uvar(i,14)/eyn(i,2)-
984 & uvar(i,15)*uvar(i,15)/eyn(i,3)-
985 & 2*uvar(i,13)*uvar(i,14)*uvar(i,15)
986 a11(i)=one/(eyn(i,2)*eyn(i,3))-uvar(i,13)*uvar(i,13)
987 a12(i)=uvar(i,15)/eyn(i,3)+uvar(i,13)*uvar(i,14)
988 a13(i)=uvar(i,14)/eyn(i,2)+uvar(i,13)*uvar(i,15)
989 a22(i)=one/(eyn(i,1)*eyn(i,3))-uvar(i,14)*uvar(i,14)
990 a23(i)=uvar(i,13)/eyn(i,1)+uvar(i,14)*uvar(i,15)
991 a33(i)=one/(eyn(i,1)*eyn(i,2))-uvar(i,15)*uvar(i,15)
993 psc(i,1)=((a11(i)*ecn(i,1)+a12(i)*ecn(i,2)+a13(i)*ecn(i,3))
995 psc(i,2)=((a12(i)*ecn(i,1)+a22(i)*ecn(i,2)+a23(i)*ecn(i,3))
997 psc(i,3)=((a13(i)*ecn(i,1)+a23(i)*ecn(i,2)+a33(i)*ecn(i,3))
1003 IF(off(i)==zero.OR.psn(i,j)>abs(tensioncut))
THEN
1012 IF(ismstr==0.OR.ismstr==2.OR.ismstr==4)
THEN
1014 den1=el(i,2)*el(i,3)
1015 den2=el(i,3)*el(i,1)
1016 den3=el(i,1)*el(i,2)
1017 psc(i,1)=psc(i,1)/den1
1018 psc(i,2)=psc(i,2)/den2
1019 psc(i,3)=psc(i,3)/den3
1020 eyn(i,1)=eyn(i,1)/den1
1021 eyn(i,2)=eyn(i,2)/den2
1022 eyn(i,3)=eyn(i,3)/den3
1023 ELSEIF(ismstr==10.OR.(ismstr==12.AND.offg(i)<=one))
THEN
1025 den1=el(i,1)/volumer(i)
1026 den2=el(i,2)/volumer(i)
1027 den3=el(i,3)/volumer(i)
1028 psc(i,1)=psc(i,1)*den1
1029 psc(i,2)=psc(i,2)*den2
1030 psc(i,3)=psc(i,3)*den3
1031 eyn(i,1)=eyn(i,1)*den1
1032 eyn(i,2)=eyn(i,2)*den2
1033 eyn(i,3)=eyn(i,3)*den3
1036 IF (kcompair==2)
THEN
1039 tmp3=
min(el(i,1),el(i,2),el(i,3))
1040 IF (tmp0<one.AND.tmp3<one
1041 & .AND.tmp3>tmp0.AND.abs(tmp0-tmp3)>em6)
THEN
1042 IF(volumer(i)>zero)
THEN
1043 tmp2=exp((1./3.)*log(volumer(i)))-volumer(i)
1047 tmp4=(tmp3-tmp0)/tmp2
1055 sigprv(i,j)=psc(i,j)+aa(i)*(pair(i)-psc(i,j))
1061 sigprv(i,j)=psc(i,j)+pair(i)
1067 signxx(i) = dirprv(i,1,1)*dirprv(i,1,1)*sigprv(i,1)
1068 & + dirprv(i,1,2)*dirprv(i,1,2)*sigprv(i,2)
1069 & + dirprv(i,1,3)*dirprv(i,1,3)*sigprv(i,3)
1070 signyy(i) = dirprv(i,2,2)*dirprv(i,2,2)*sigprv(i,2)
1072 & + dirprv(i,2,1)*dirprv(i,2,1)*sigprv(i,1)
1073 signzz(i) = dirprv(i,3,3)*dirprv(i,3,3)*sigprv(i,3)
1074 & + dirprv(i,3,1)*dirprv(i,3,1)*sigprv(i,1)
1075 & + dirprv(i,3,2)*dirprv(i,3,2)*sigprv(i,2)
1076 signxy(i) = dirprv(i,1,1)*dirprv(i,2,1)*sigprv(i,1)
1077 & + dirprv(i,1,2)*dirprv(i,2,2)*sigprv(i,2)
1078 & + dirprv(i,1,3)*dirprv(i,2,3)*sigprv(i,3)
1079 signyz(i) = dirprv(i,2,2)*dirprv(i,3,2)*sigprv(i,2)
1080 & + dirprv(i,2,3)*dirprv(i,3,3)*sigprv(i,3)
1081 & + dirprv(i,2,1)*dirprv(i,3,1)*sigprv(i,1)
1082 signzx(i) = dirprv(i,3,3)*dirprv(i,1,3)*sigprv(i,3)
1083 & + dirprv(i,3,1)*dirprv(i,1,1)*sigprv(i,1)
1084 & + dirprv(i,3,2)*dirprv(i,1,2)*sigprv(i,2)
1090 signxx(i)=signxx(i)+sigoxx(i)
1091 signyy(i)=signyy(i)+sigoyy(i)
1092 signzz(i)=signzz(i)+sigozz(i)
1093 signxy(i)=signxy(i)+sigoxy(i)
1094 signyz(i)=signyz(i)+sigoyz(i)
1095 signzx(i)=signzx(i)+sigozx(i)
1101 emax(i)=
max(ei(i),eyn(i,1),eyn(i,2),eyn(i,3))
1107 epsxy(i) = dirprv(i,1,1)*dirprv(i,2,1)*ean
1108 & + dirprv(i,1,2)*dirprv(i,2,2)*ean
1109 & + dirprv(i,1,3)*dirprv(i,2,3)*ean(i,3)
1110 epsyz(i) = dirprv(i,2,2)*dirprv(i,3,2)*ean(i,2)
1111 & + dirprv(i,2,3)*dirprv(i,3,3)*ean(i,3)
1112 & + dirprv(i,2,1)*dirprv(i,3,1)*ean(i,1)
1113 epszx(i) = dirprv(i,3,3)*dirprv(i,1,3)*ean(i,3)
1114 & + dirprv(i,3,1)*dirprv(i,1,1)*ean(i,1)
1115 & + dirprv(i,3,2)*dirprv(i,1,2)*ean(i,2)
1118 esecant(i,1)=0.5*abs(signxy(i))/
max(tiny,abs(epsxy(i)))
1119 esecant(i,2)=0.5*abs(signyz(i))/
max(tiny,abs(epsyz(i)))
1120 esecant(i,3)=0.5*abs(signzx(i))/
max(tiny,abs(epszx(i)))
1121 sigmax(i)=
max(0.5*ei(i),sigmax(i))
1122 IF (esecant(i,1)<=sigmax(i))
THEN
1123 tmp1=0.1*(sigmax(i)-esecant(i,1))
1124 signxy(i)=signxy(i)+tmp1*epsxy(i)
1126 IF (esecant(i,2)<=sigmax(i))
THEN
1127 tmp1=0.1*(sigmax(i)-esecant(i,2))
1128 signyz(i)=signyz(i)+tmp1*epsyz(i)
1130 IF (esecant(i,3)<=sigmax(i))
THEN
1131 tmp1=0.1*(sigmax(i)-esecant(i,3))
1132 signzx(i)=signzx(i)+tmp1*epszx(i)
1137 kkk=emax(i)/(three*(one-two*
max(vc,vt)))
1138 ggg=emax(i)/(two*(one+
max(vc,vt)))
1139 soundsp(i)=sqrt((kkk+four_over_3*ggg)/rho0(i))
1140 viscmax(i)=
max(visc(i,1),visc(i,2),visc(i,3))
1143 IF (impl_s > 0 .OR. ihet > 1)
THEN
1147 emax(i)=
max(ei(i),eyn(i,1),eyn(i,2),eyn(i,3))
1151 eymin=
min(eyn(i,1),eyn(i,2),eyn(i,3))
1152 eyav = third*(eyn(i,1)+eyn(i,2)+eyn(i,3))
1153 et(i)= eymin/emax(i)
1156 IF (time==zero)
THEN
1157 tmp1=-
alpha(1)*finter(ifunc(1),em20,npf,tf,df)
1158 tmp2 =
alpha(1)*df/e0
1160 uvar(1:nel,33) = -one
1162 uvar(1:nel,33) =et(1:nel)
1164 ELSEIF (nel>0.AND.uvar(1,33)<zero)
THEN
1168 et(1:nel)=tmp1*et(1:nel)+(one-tmp1)*uvar(1:nel,33)
1169 uvar(1:nel,33) =et(1:nel)