31 1 NEL0 ,NUPARAM,NUVAR ,NFUNC ,IFUNC ,
32 2 NPF ,NPT0 ,IPT ,IFLAG ,
33 2 TF ,TIME ,TIMESTEP,UPARAM ,RHO0 ,
35 4 EPSPXX ,EPSPYY ,EPSPXY ,EPSPYZ ,EPSPZX ,
36 5 DEPSXX ,DEPSYY ,DEPSXY ,DEPSYZ ,DEPSZX ,
37 6 EPSXX ,EPSYY ,EPSXY ,EPSYZ ,EPSZX ,
38 7 SIGOXX ,SIGOYY ,SIGOXY ,SIGOYZ ,SIGOZX ,
39 8 SIGNXX ,SIGNYY ,SIGNXY ,SIGNYZ ,SIGNZX ,
40 9 SIGVXX ,SIGVYY ,SIGVXY ,SIGVYZ ,SIGVZX ,
41 A SOUNDSP,VISCMAX,THK ,PLA ,UVAR ,
46#include "implicit_f.inc"
105 INTEGER NEL0, NUPARAM, NUVAR, NPT0, IPT,IFLAG(*),
108 . TIME,TIMESTEP,UPARAM(NUPARAM),
109 . AREA(),RHO0(NEL0),EINT(NEL0,2),
110 . THKLY(NEL0),PLA(NEL0),
111 . EPSPXX(NEL0),(NEL0),
112 . EPSPXY(NEL0),EPSPYZ(NEL0),EPSPZX(NEL0),
113 . DEPSXX(NEL0),DEPSYY(NEL0),
114 . DEPSXY(NEL0),DEPSYZ(NEL0),DEPSZX(NEL0),
115 . EPSXX(NEL0) ,EPSYY(NEL0) ,
116 . EPSXY(NEL0) ,EPSYZ(NEL0) ,EPSZX(NEL0) ,
117 . sigoxx(nel0),sigoyy(nel0),
118 . sigoxy(nel0),sigoyz(nel0),sigozx(nel0), shf(*)
123 . signxx(nel0),signyy(nel0),
124 . signxy(nel0),signyz(nel0),signzx(nel0),
125 . sigvxx(nel0),sigvyy(nel0),
126 . sigvxy(nel0),sigvyz(nel0),sigvzx(nel0),
127 . soundsp(nel0),viscmax(nel0)
131 my_real uvar(nel0,nuvar), off(nel0),thk(nel0)
135 INTEGER NPF(*), NFUNC, IFUNC(NFUNC)
136 my_real FINTER ,TF(*)
148 INTEGER I,J,INDEX(MVSIZ),NINDX,NMAX,N
150 . young,anu,g,ca,cb,cn,epsm,sigm,cc,cd,cm,eps0,
151 . ce,ck,c1,c14g3,a1,a2,g3,gs,
152 . ch1,ch2,ch3,qh1,qh2,
153 . nnu1,nu1,nu2,nu3,s1,s2,s3,
158 . svm(mvsiz),aa(mvsiz),bb(mvsiz),dpla_j(mvsiz),
159 . dpla_i(mvsiz),dr(mvsiz),pp(mvsiz),qq(mvsiz)
202 beta = timestep*2.*pi*cutfre
206 nnu1 = anu / (one - anu)
219 signxx(i)=sigoxx(i)+a1*depsxx(i)+a2*depsyy(i)
220 signyy(i)=sigoyy(i)+a2*depsxx(i)+a1*depsyy(i)
221 signxy(i)=sigoxy(i)+g *depsxy(i)
222 signyz(i)=sigoyz(i)+gs *depsyz(i)
223 signzx(i)=sigozx(i)+gs *depszx(i)
225 soundsp(i) = sqrt(a1/rho0(i))
232 uvar(i,2) = half*( abs(epspxx(i)+epspyy(i))
233 . + sqrt( (epspxx(i)-epspyy(i))*(epspxx(i)-epspyy(i))
234 . + epspxy(i)*epspxy(i) ) )
235 uvar(i,2) = beta*uvar(i,2) + (1.-beta)*uvar(i,5)
236 uvar(i,5) = uvar(i,2)
251 IF(uvar(i,1)<=zero)
THEN
253 ELSEIF(uvar(i,1)>epsm)
THEN
256 ch1=ca+cb*uvar(i,1)**cn
258 IF(uvar(i,2)<=eps0)
THEN
260 ELSEIF(uvar(i,1)<=zero)
THEN
261 ch2=cc*log(uvar(i,2)/eps0)
263 ch2=(cc-cd*uvar(i,1)**cm)*log(uvar(i,2)/eps0)
265 IF(uvar(i,2)<=zero)
THEN
271 uvar(i,3)=
min(sigm+ch3,ch1+ch2+ch3)
277 IF(uvar(i,1)>zero. and .cn>=one)
THEN
278 qh1= cb*cn*uvar(i,1)**(cn-one)
279 ELSEIF(uvar(i,1)>zero. and .cn<one)
THEN
280 qh1= cb*cn*uvar(i,1)**(one - cn)
284 IF(uvar(i,1)<=zero. or .uvar(i,2)<=eps0)
THEN
287 qh2=cd*cm*uvar(i,1)**(cm- one)*log(uvar(i,2)/eps0)
289 qh2=cd*cm*uvar(i,1)**(one -cm)*log(uvar(i,2)/eps0)
299 svm(i)=sqrt(signxx(i)*signxx(i)
300 . +signyy(i)*signyy(i)
301 . -signxx(i)*signyy(i)
302 . +three*signxy(i)*signxy(i))
303 r =
min(one,uvar(i,3)/
max(em20,svm(i)))
304 signxx(i)=signxx(i)*r
305 signyy(i)=signyy(i)*r
306 signxy(i)=signxy(i)*r
308 dpla_i(i) = off(i)*svm(i)*umr/(g3+uvar(i,4))
309 uvar(i,1) = uvar(i,1) + dpla_i(i)
310 s1=half*(signxx(i)+signyy(i))
311 dezz = dpla_i(i) * half*(signxx(i)+signyy(i)) /uvar(i,3)
312 dezz=-(depsxx(i)+depsyy(i))*nnu1-nu3*dezz
313 thk(i) = thk(i) + dezz*thkly(i)
317 ELSEIF(iflag(1)==1)
THEN
322 uvar(i,4) =
max(zero,uvar(i,4))
323 s1=signxx(i)+signyy(i)
324 s2=signxx(i)-signyy(i)
327 bb(i)=three_over_4*s2*s2+3.*s3*s3
328 svm(i)=sqrt(aa(i)+bb(i))
329 dezz = -(depsxx(i)+depsyy(i))*nnu1
330 thk(i) = thk(i) + dezz*thkly(i)
337 IF(svm(i)>uvar(i,3).AND.off(i)==one)
THEN
348 dpla_j(i)=(svm(i)-uvar(i,3))/(g3+uvar(i,4))
357 yld_i =uvar(i,3)+uvar(i,4)*dpla_i(i)
358 dr(i) =half*young*dpla_i(i)/yld_i
359 pp(i) =one/(one+dr(i)*nu1)
360 qq(i) =one/(one + three*dr(i)*nu2)
363 f =aa(i)*p2+bb(i)*q2-yld_i*yld_i
364 df =-(aa(i)*nu1*p2*pp(i)+three*bb(i)*nu2*q2*qq(i))
365 . *(young-two*dr(i)*uvar(i,4))/yld_i
366 . -two*uvar(i,4)*yld_i
367 IF(dpla_i(i)>zero)
THEN
368 dpla_j(i)=
max(zero,dpla_i(i)-f/df)
380 uvar(i,1) = uvar(i,1) + dpla_i(i)
381 s1=(signxx(i)+signyy(i))*pp(i)
382 s2=(signxx(i)-signyy(i))*qq(i)
383 signxx(i)=half*(s1+s2)
384 signyy(i)=half*(s1-s2
385 signxy(i)=signxy(i)*qq(i)
386 dezz = - nu3*dr(i)*s1/young
387 thk(i) = thk(i) + dezz*thkly(i)
393 IF(uvar(i,1)>epsm.AND.off(i)==one)off(i)=four_over_5
subroutine sigeps45c(nel0, nuparam, nuvar, nfunc, ifunc, npf, npt0, ipt, iflag, tf, time, timestep, uparam, rho0, area, eint, thkly, epspxx, epspyy, epspxy, epspyz, epspzx, depsxx, depsyy, depsxy, depsyz, depszx, epsxx, epsyy, epsxy, epsyz, epszx, sigoxx, sigoyy, sigoxy, sigoyz, sigozx, signxx, signyy, signxy, signyz, signzx, sigvxx, sigvyy, sigvxy, sigvyz, sigvzx, soundsp, viscmax, thk, pla, uvar, off, ngl, shf)