34 1 MAT_PARAM,NEL ,NUVAR ,NFUNC ,IFUNC ,NPF ,
35 2 TF ,TIME ,TIMESTEP ,RHO0 ,RHO ,
36 3 EPSPXX ,EPSPYY ,EPSPZZ ,EPSPXY ,EPSPYZ ,EPSPZX ,
37 4 DEPSXX ,DEPSYY ,DEPSZZ ,DEPSXY ,DEPSYZ ,DEPSZX ,
38 5 EPSXX ,EPSYY ,EPSZZ ,EPSXY ,EPSYZ ,EPSZX ,
39 6 SIGOXX ,SIGOYY ,SIGOZZ ,SIGOXY ,SIGOYZ ,SIGOZX ,
40 7 SIGNXX ,SIGNYY ,SIGNZZ ,SIGNXY ,SIGNYZ ,SIGNZX ,
41 8 SOUNDSP ,VISCMAX ,UVAR ,OFF ,WXXDT ,WYYDT ,
42 A WZZDT ,ISMSTR ,MFXX ,MFXY ,MFXZ ,MFYX ,
43 B MFYY ,MFYZ ,MFZX ,MFZY ,MFZZ )
51#include "implicit_f.inc"
60#include "tabsiz_c.inc"
64 INTEGER,
INTENT(IN) :: NEL,NUVAR,ISMSTR
65 my_real,
INTENT(IN) ::
67 . RHO (NEL), RHO0 (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 . sigoxx(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),
79 . wzzdt(mvsiz),wyydt(mvsiz),wxxdt(mvsiz)
80 TYPE(matparam_struct_) ,
INTENT(INOUT) :: MAT_PARAM
84 my_real,
INTENT(OUT) ::
85 . SIGNXX (NEL), SIGNYY (NEL), SIGNZZ(NEL),
86 . SIGNXY (NEL), SIGNYZ (NEL), SIGNZX(NEL),
87 . SOUNDSP(NEL), VISCMAX(NEL)
91 my_real,
INTENT(INOUT) ::
92 . uvar(nel,nuvar), off(nel)
97 my_real FINTER,TF(STF)
102 INTEGER I,J,K,KFP,IFORM,NORDER
103 my_real :: TENSIONCUT,GMAX,FFAC
104 my_real,
DIMENSION(10) :: MU,AL
106 . sigprv(3,mvsiz),ev(3,mvsiz),evm(3,mvsiz),dwdl(3,mvsiz),
107 . t1(3,mvsiz),sumdwdl(mvsiz),rv(mvsiz),p(mvsiz),
108 . dwdrv(mvsiz),rbulk,dpdmu,av(6,mvsiz),evv
109 . dirprv(3,3,mvsiz),a(3,3),dpra(3,3),eigen(3)
115 norder = mat_param%IPARAM(1)
116 iform = mat_param%IPARAM(3)
120 mu(i) = mat_param%UPARAM(i)
121 al(i) = mat_param%UPARAM(10+i)
126 gmax = gmax + mu(i) * al(i)
129 rbulk = mat_param%UPARAM(21)
131 tensioncut = mat_param%UPARAM(23)
133 ffac = mat_param%UPARAM(24)
142 av(4,i) = epsxy(i)*half
143 av(5,i) = epsyz(i)*half
144 av(6,i) = epszx(i)*half
153 CALL valpvec(av,evv,dirprv,nel)
160 IF (ismstr == 0 .OR. ismstr == 2 .OR. ismstr == 4)
THEN
161 ev(1,i) = exp(evv(1,i))
162 ev(2,i) = exp(evv(2,i))
163 ev(3,i) = exp(evv(3,i))
165 ELSEIF (ismstr == 10 .OR. ismstr == 12)
THEN
166 ev(1,i) = sqrt(evv(1,i)+ one)
167 ev(2,i) = sqrt(evv(2,i)+ one)
168 ev(3,i) = sqrt(evv(3,i)+ one)
171 ev(1,i) = evv(1,i)+ one
172 ev(2,i) = evv(2,i)+ one
173 ev(3,i) = evv(3,i)+ one
180 rv(i) = (ev(1,i)*ev(2,i)*ev(3,i))
188 evm(2,i) = ev(2,i)*rv(i)**(-third)
189 evm(3,i) = ev(3,i)*rv(i)**(-third)
193 p(i) = rbulk*ffac*finter(kfp,rv(i),npf,tf,dpdmu)
211 dwdl(1,i) = dwdl(1,i) + mu(j)*(evm(1,i)**al(j) - one)
212 dwdl(2,i) = dwdl(2,i) + mu(j)*(evm(2,i)**al(j) - one)
213 dwdl(3,i) = dwdl(3,i) + mu(j)*(evm(3,i)**al(j) - one)
222 dwdrv(i) = p(i)*(rv(i) - one)
224 ELSEIF (iform == 2)
THEN
225 dwdrv(i) = p(i)*(one - one/rv(i))
227 sumdwdl(i) = (dwdl(1,i) + dwdl(2,i) + dwdl(3,i))*third
233 sigprv(j,i) = (dwdl(j,i)-(sumdwdl(i)-rv(i)*dwdrv(i)))/rv(i)
239 t1(1,i) = rv(i)*sigprv(1,i)/ev(1,i)
240 t1(2,i) = rv(i)*sigprv(2,i)/ev(2,i)
241 t1(3,i) = rv(i)*sigprv(3,i)/ev(3,i)
247 IF (off(i) == zero .OR. t1(j,i) > abs(tensioncut))
THEN
260 signxx(i) = dirprv(1,1,i)*dirprv(1,1,i)*sigprv(1,i)
261 . + dirprv(1,2,i)*dirprv(1,2,i)*sigprv(2,i)
262 . + dirprv(1,3,i)*dirprv(1,3,i)*sigprv(3,i)
264 signyy(i) = dirprv(2,2,i)*dirprv(2,2,i)*sigprv(2,i)
265 . + dirprv(2,3,i)*dirprv(2,3,i)*sigprv(3,i)
266 . + dirprv(2,1,i)*dirprv(2,1,i)*sigprv(1,i)
268 signzz(i) = dirprv(3,3,i)*dirprv(3,3,i)*sigprv(3,i)
269 . + dirprv(3,1,i)*dirprv(3,1,i)*sigprv(1,i)
270 . + dirprv(3,2,i)*dirprv(3,2,i)*sigprv(2,i)
272 signxy(i) = dirprv(1,1,i)*dirprv(2,1,i)*sigprv(1,i)
273 . + dirprv(1,2,i)*dirprv(2,2,i)*sigprv(2,i)
274 . + dirprv(1,3,i)*dirprv(2,3,i)*sigprv(3,i)
276 signyz(i) = dirprv(2,2,i)*dirprv(3,2,i)*sigprv(2,i)
277 . + dirprv(2,3,i)*dirprv(3,3,i)*sigprv(3,i)
278 . + dirprv(2,1,i)*dirprv(3,1,i)*sigprv(1,i)
280 signzx(i) = dirprv(3,3,i)*dirprv(1,3,i)*sigprv(3,i
281 . + dirprv(3,1,i)*dirprv(1,1,i)*sigprv(1,i)
282 . + dirprv(3,2,i)*dirprv(1,2,i)*sigprv(2,i)
285 uvar(i,1) =
max(sigprv(1,i),sigprv(2,i),sigprv(3,i))
286 uvar(i,2) =
min(sigprv(1,i),sigprv(2,i),sigprv(3,i))
291 soundsp(i) = sqrt((two_third*gmax+p(i))/rho(i))
subroutine sigeps42(mat_param, nel, nuvar, nfunc, ifunc, npf, tf, time, timestep, rho0, rho, epspxx, epspyy, epspzz, epspxy, epspyz, epspzx, depsxx, depsyy, depszz, depsxy, depsyz, depszx, epsxx, epsyy, epszz, epsxy, epsyz, epszx, sigoxx, sigoyy, sigozz, sigoxy, sigoyz, sigozx, signxx, signyy, signzz, signxy, signyz, signzx, soundsp, viscmax, uvar, off, wxxdt, wyydt, wzzdt, ismstr, mfxx, mfxy, mfxz, mfyx, mfyy, mfyz, mfzx, mfzy, mfzz)