33 1 NEL ,NUPARAM,NUVAR ,NFUNC ,IFUNC ,NPF ,
34 2 TF ,TIME ,TIMESTEP,UPARAM ,RHO0 ,RHO ,
36 4 EPSPXX ,EPSPYY ,EPSPZZ ,EPSPXY ,EPSPYZ ,EPSPZX ,
37 5 DEPSXX ,DEPSYY ,DEPSZZ ,DEPSXY ,DEPSYZ ,DEPSZX ,
38 6 EPSXX ,EPSYY ,EPSZZ ,EPSXY ,EPSYZ ,EPSZX ,
39 7 SIG0XX ,SIG0YY ,SIG0ZZ ,SIG0XY ,SIG0YZ ,SIG0ZX ,
40 8 SIGNXX ,SIGNYY ,SIGNZZ ,SIGNXY ,SIGNYZ ,SIGNZX ,
41 A SOUNDSP,VISCMAX,UVAR ,OFF ,NGL ,ISMSTR )
45#include "implicit_f.inc"
95 INTEGER,
INTENT(IN) :: NEL, NUPARAM, NUVAR, NGL(NEL),ISMSTR
97 my_real,
INTENT(IN) ::
98 . TIME,TIMESTEP,UPARAM(*),
99 . RHO(NEL),RHO0(NEL),VOLUME(NEL),EINT(NEL),
100 . EPSPXX(NEL),EPSPYY(NEL),EPSPZZ(NEL),
101 . EPSPXY(NEL),EPSPYZ(NEL),EPSPZX(NEL),
102 . DEPSXX(NEL),DEPSYY(NEL),DEPSZZ(NEL),
103 . (NEL),DEPSYZ(NEL),DEPSZX(NEL),
104 . epsxx(nel) ,epsyy(nel) ,epszz(nel) ,
105 . epsxy(nel) ,epsyz(nel) ,epszx(nel) ,
106 . sig0xx(nel),sig0yy(nel),sig0zz(nel
107 . sig0xy(nel),sig0yz(nel),sig0zx(nel)
111 my_real,
INTENT(OUT)::
112 . signxx(nel),signyy(nel),signzz(nel),
113 . signxy(nel),signyz(nel),signzx(nel),
114 . soundsp(nel),viscmax(nel)
118 my_real,
INTENT(INOUT) ::
119 . uvar(nel,nuvar), off(nel)
123 INTEGER,
INTENT(IN) :: NPF(*), NFUNC, IFUNC(NFUNC)
124 my_real,
INTENT(IN) :: TF(*)
125 my_real,
EXTERNAL :: FINTER
138 . II,I,J,K,I1,J1,J2,IFLAG,ILOAD(NEL,3),ILOADE(NEL),
139 . IDAM,INDX_L(NEL),INDX_UNL(NEL),NE_L,NE_UNL
141 . E0,AA,EPSMAX,G,NU,SHAPE,HYS,EMAX,
142 . YFAC,YFACJ1,YFACJ2,RATEJ1,RATEJ2, EPSE,EP1,
143 . EP2,EP3,EP4,EP5,EP6,ERT11,ERT12,ERT13,ERT21,
144 . ERT22,ERT23,ERT31,ERT32,ERT33,SJ1,,FAC,T1,T2,T3,
145 . DAM,EPE,EMIN,E_MIN(NEL),E1,E2,TMP,QUASI_EINT
147 . av(6,nel), evv(3,nel),ev(nel,3),strain(nel,3),
148 . strainrate(nel,3),s(nel,3),sqstat(nel,3),df(3),
149 . dirprv(3,3,nel),epsp(3),ecurent(nel),e(nel),deint,
168 av(4,i) = half*epsxy(i)
169 av(5,i) = half*epsyz(i)
170 av(6,i) = half*epszx(i)
177 CALL valpvec(av,evv,dirprv,nel)
183 IF(ismstr==0.OR.ismstr==2.OR.ismstr==4)
THEN
186 ev(i,1)=exp(evv(1,i))
187 ev(i,2)=exp(evv(2,i))
188 ev(i,3)=exp(evv(3,i))
190 ELSEIF(ismstr==10.OR.ismstr==12)
THEN
192 ev(i,1)=sqrt(evv(1,i) + one )
193 ev(i,2)=sqrt(evv(2,i) + one )
194 ev(i,3)=sqrt(evv(3,i) + one )
199 ev(i,1)=evv(1,i) + one
200 ev(i,2)=evv(2,i) + one
201 ev(i,3)=evv(3,i) + one
209 strain(i,1) = one - ev(i,1)
210 strain(i,2) = one - ev(i,2)
211 strain(i,3) = one - ev(i,3)
220 ert11 =dirprv(1,1,i)*ep1 + dirprv(2,1,i)*ep4 + dirprv(3,1,i)*ep6
221 ert12 =dirprv(1,2,i)*ep1 + dirprv(2,2,i)*ep4 + dirprv(3,2,i)*ep6
222 ert13 =dirprv(1,3,i)*ep1 + dirprv(2,3,i)*ep4 + dirprv(3,3,i)*ep6
224 ert21 =dirprv(1,1,i)*ep4 + dirprv(2,1,i)*ep2 + dirprv(3,1,i)*ep5
225 ert22 =dirprv(1,2,i)*ep4 + dirprv(2,2,i)*ep2 + dirprv(3,2,i)*ep5
226 ert23 =dirprv(1,3,i)*ep4 + dirprv(2,3,i)*ep2 + dirprv(3,3,i)*ep5
228 ert31 =dirprv(1,1,i)*ep6 + dirprv(2,1,i)*ep5 + dirprv(3,1,i)*ep3
229 ert32 =dirprv(1,2,i)*ep6 + dirprv(2,2,i)*ep5 + dirprv(3,2,i)*ep3
230 ert33 =dirprv(1,3,i)*ep6 + dirprv(2,3,i)*ep5 + dirprv(3,3,i)*ep3
232 epsp(1) = dirprv(1,1,i)*ert11 + dirprv(2,1,i)*ert21
233 . + dirprv(3,1,i)*ert31
234 epsp(2) = dirprv(1,2,i)*ert12 + dirprv(2,2,i)*ert22
235 . + dirprv(3,2,i)*ert32
236 epsp(3) = dirprv(1,3,i)*ert13 + dirprv(2,3,i)*ert23
237 . + dirprv(3,3,i)*ert33
238 strainrate(i,1) = abs(epsp(1))
239 strainrate(i,2) = abs(epsp(2))
240 strainrate(i,3) = abs(epsp(3))
256 epe = epsp(k)*strain(i,k)
258 IF(epe > em10 )iload(i,k) = -1
259 IF(iload(i,k) == -1 ) iloade(i) = -1
263 IF(iload(i,k) == -1) strainrate(i,k) = zero
266 uvar(i,3) = strainrate(i,1)
267 uvar(i,4) = strainrate(i,2)
268 uvar(i,5) = strainrate(i,3)
270 rateeps =
max(strainrate(i,1),strainrate(i,2),strainrate(i,3))
281 IF(iloade(i) == 1)
THEN
285 ELSEIF(iloade(i) == -1 )
THEN
294 yfac = uparam(nfunc + 11)
298 s(i,k) = yfac*finter(ifunc(1),epse,npf,tf,df(k))
299 emax =
max(emax, yfac*df(k))
307 yfac = uparam(nfunc + 11)
313 sqstat(i,k) = yfac*finter(ifunc(1),epse,npf,tf,df(k))
315 emax =
max(emax, yfac*df(k))
316 emin =
min(emin, yfac*df(k))
318 ecurent(i)= ecurent(i) + half*strain(i,k)*sqstat(i,k)
321 uvar(i,2) =
max(uvar(i,2),ecurent(i))
329 uvar(i,1) = ecurent(i)
330 IF(uvar(i,2) > zero)
THEN
332 dam = one - (one - hys)*dam
343 uvar(i,1) = ecurent(i)
344 IF(uvar(i,2) > zero)
THEN
345 dam = one - (ecurent(i)/uvar(i,2))**shape
346 dam = one - (one - hys)*dam
348 IF(iload(i,k) < 0)s(i,k) = dam*s(i,k)
359 t1 = -s(i,1)/ev(i,2)/ev(i,3)
360 t2 = -s(i,2)/ev(i,1)/ev(i,3)
361 t3 = -s(i,3)/ev(i,1)/ev(i,2)
365 signxx(i) = dirprv(1,1,i)*dirprv(1,1,i)*t1
366 . + dirprv(1,2,i)*dirprv(1,2,i)*t2
367 . + dirprv(1,3,i)*dirprv(1,3,i)*t3
369 signyy(i) = dirprv(2,2,i)*dirprv(2,2,i)*t2
370 . + dirprv(2,3,i)*dirprv(2,3,i)*t3
371 . + dirprv(2,1,i)*dirprv(2,1,i)*t1
373 signzz(i) = dirprv(3,3,i)*dirprv(3,3,i)*t3
374 . + dirprv(3,1,i)*dirprv(3,1,i)*t1
375 . + dirprv(3,2,i)*dirprv(3,2,i)*t2
377 signxy(i) = dirprv(1,1,i)*dirprv(2,1,i)*t1
378 . + dirprv(1,2,i)*dirprv(2,2,i)*t2
379 . + dirprv(1,3,i)*dirprv(2,3,i)*t3
381 signyz(i) = dirprv(2,2,i)*dirprv(3,2,i)*t2
382 . + dirprv(2,3,i)*dirprv(3,3,i)*t3
383 . + dirprv(2,1,i)*dirprv(3,1,i)*t1
385 signzx(i) = dirprv(3,3,i)*dirprv(1,3,i)*t3
386 . + dirprv(3,1,i)*dirprv(1,1,i)*t1
387 . + dirprv(3,2,i)*dirprv(1,2,i)*t2
389 aa = e(i)*(one-nu)/(one + nu)/(one - two*nu)
390 soundsp(i) = sqrt(aa/rho0(i))