42 . (zxx,zyy,zzz,zxy,zzx,zyz,
43 . damage,nel,hu,shape,whysmax,
44 . numtabl ,table, nvartmp, vartmp)
57#include "implicit_f.inc"
62#include "tabsiz_c.inc"
66 INTEGER,
INTENT(IN) :: ,NUMTABL,NVARTMP
67 my_real ,
INTENT(IN) :: hu, shape
68 my_real,
INTENT(IN) ,
DIMENSION(NEL):: zxx ,zyy ,zzz ,zxy ,zzx ,zyz
69 TYPE (TABLE_4D_),
DIMENSION(NUMTABL)TARGET
70INTENT(INOUT) ,
DIMENSION(NEL) :: whysmax
71 my_real,
INTENT(OUT) ,
DIMENSION(NEL) :: damage
72 INTEGER ,
DIMENSION(NEL,NVARTMP) ,
INTENT(INOUT) :: VARTMP
75 my_real,
DIMENSION(NEL) :: alambda1,alambda2,alambda3,z1,z2,z3,
76 . fener1,dener1,fener2,dener2,fener3,dener3
78 . ratio, whys(nel),epsilon(nel,3)
81 . ah1(nel),ah2(nel),ah3(nel),
82 . at2(nel),at3(nel),aa3(nel),aa2(nel)
84 my_real,
DIMENSION(NEL,1) :: xvec
85 TYPE(
table_4d_),
POINTER :: FUNC_ENER , FUNC_SIG
99 ah1(i)=zxx(i)+zyy(i)+zzz(i)
100 ah2(i)=zyy(i)*zzz(i)+zzz(i)*zxx(i)+zxx(i)*zyy(i)
101 . -zyz(i)**2-zzx(i)**2-zxy(i)**2
102 ah3(i)=zxx(i)*zyy(i)*zzz(i)+two*zxy(i)*zyz(i)*zzx(i)
103 . -zxx(i)*zyz(i)**2-zyy(i)*zzx(i)**2-zzz(i)*zxy(i)**2
107 at3(i)=two*ah1(i)**3/twenty7 - ah1(i)*ah2(i)/three + ah3(i)
108 at2(i)=-ah2(i)+ah1(i)**2/three
109 at2(i)=
max(at2(i),em16)
113 aa3(i)=at3(i)/two/sqrt(at2(i)**3/twenty7)
114 aa3(i)=
min(one,aa3(i))
115 aa3(i)=
max(-one,aa3(i))
116 aa2(i)=sqrt(at2(i)/three)
120 z1(i)=two*aa2(i)*cos(third*acos(aa3(i)))
121 z2(i)=two*aa2(i)*cos(third*acos(aa3(i)) - two*pi/three)
122 z3(i)=two*aa2(i)*cos(third*acos(aa3(i)) - four*pi/three)
126 z1(i)=z1(i)+ah1(i)/three
127 z2(i)=z2(i)+ah1(i)/three
128 z3(i)=z3(i)+ah1(i)/three
138 alambda1(i)=sqrt(two*z1(i) + one)
139 alambda2(i)=sqrt(two*z2(i) + one)
140 alambda3(i)=sqrt(two*z3(i) + one)
144 epsilon(i,1) = one - alambda1(i)
145 epsilon(i,2) = one - alambda2(i)
146 epsilon(i,3) = one - alambda3(i)
151 xvec(1:nel,1) = epsilon(1:nel,1)
152 ipos(1:nel,1) = vartmp(1:nel,16)
154 vartmp(1:nel,16) = ipos(1:nel,1)
156 xvec(1:nel,1) = epsilon(1:nel,2)
157 ipos(1:nel,1) = vartmp(1:nel,17)
159 vartmp(1:nel,17) = ipos(1:nel,1)
161 xvec(1:nel,1) = epsilon(1:nel,3)
162 ipos(1:nel,1) = vartmp(1:nel,18)
164 vartmp(1:nel,18) = ipos(1:nel,1)
169 whys(i) = fener1(i) + fener2(i) + fener3(i)
170 whysmax(i)=
max(whysmax(i),whys(i))
171 ratio = whys(i) / whysmax(i)
172 damage(i) =(one-hu)*(one - ratio**shape)
subroutine sigeps190(nel, nuvar, rho, et, epspxx, epspyy, epspzz, epspxy, epspyz, epspzx, signxx, signyy, signzz, signxy, signyz, signzx, mfxx, mfxy, mfxz, mfyx, mfyy, mfyz, mfzx, mfzy, mfzz, soundsp, viscmax, uvar, numtabl, matparam, nvartmp, vartmp)