31 1 NEL0, NUPARAM, NUVAR, MFUNC,
32 2 KFUNC, NPF, NPT0, IPT,
33 3 IFLAG, TF, TIME, TIMESTEP,
34 4 UPARAM, RHO0, AREA, EINT,
35 5 THKLY, EPSPXX, EPSPYY, EPSPXY,
36 6 EPSPYZ, EPSPZX, DEPSXX, DEPSYY,
37 7 DEPSXY, DEPSYZ, DEPSZX, EPSXX,
38 8 EPSYY, EPSXY, EPSYZ, EPSZX,
39 9 SIGOXX, SIGOYY, SIGOXY, SIGOYZ,
40 A SIGOZX, SIGNXX, SIGNYY, SIGNXY,
41 B SIGNYZ, SIGNZX, SIGVXX, SIGVYY,
42 C SIGVXY, SIGVYZ, SIGVZX, SOUNDSP,
43 D VISCMAX, THK, PLA, UVAR,
45 F VOL, YLD, TEMPEL, DIE,
46 G COEF, INLOC, DPLANL, JTHE,
51#include "implicit_f.inc"
107#include "com01_c.inc"
111 INTEGER NEL0, NUPARAM, NUVAR, NPT0, IPT,IFLAG(*),
113 my_real TIME,TIMESTEP,
114 . AREA(NEL0),RHO0(NEL0),EINT(NEL0,2),
115 . THKLY(NEL0),PLA(NEL0),
116 . EPSPXX(NEL0),EPSPYY(NEL0),
117 . EPSPXY(NEL0),EPSPYZ(NEL0),EPSPZX(NEL0),
118 . DEPSXX(NEL0),DEPSYY(NEL0),
119 . DEPSXY(NEL0),DEPSYZ(NEL0),DEPSZX(NEL0),
120 . EPSXX(NEL0) ,EPSYY(NEL0) ,
121 . EPSXY(NEL0) ,EPSYZ(NEL0) ,EPSZX(NEL0) ,
122 . SIGOXX(NEL0),SIGOYY(NEL0),
123 . SIGOXY(NEL0),SIGOYZ(NEL0),SIGOZX(NEL0),
124 . GS(*),VOL(NEL0) ,TEMPEL(NEL0),
125 . DIE(NEL0),COEF,DPLANL(NEL0)
126 my_real ,
DIMENSION(NUPARAM) :: UPARAM
127 INTEGER,
INTENT(IN) :: JTHE
128 my_real,
DIMENSION(NEL0),
INTENT(IN) :: loff
133 . signxx(nel0),signyy(nel0),
134 . signxy(nel0),signyz(nel0),signzx(nel0),
135 . sigvxx(nel0),sigvyy(nel0),
136 . sigvxy(nel0),sigvyz(nel0),sigvzx(nel0),
137 . soundsp(nel0),viscmax(nel0),etse(nel0)
141 my_real uvar(nel0,nuvar), off(nel0),thk(nel0),yld(nel0)
145 INTEGER NPF(*), MFUNC, KFUNC(MFUNC)
146 my_real FINTER ,TF(*)
158 INTEGER I,J,N,NINDX,NMAX,INDEX(MVSIZ)
161 . AA(MVSIZ),BB(MVSIZ),PP(MVSIZ),QQ(MVSIZ),H(),
164 . k2, dh, vm0, temp(mvsiz),
165 . vol0,dvm, vm(mvsiz),nu,
166 . nnu2,nu1,nu2,nu3,nu4,
169 . dpla(mvsiz),umr, r, cp, eps0,dezz,s1, s2,
170 . s3, dpla_j(mvsiz), yld_i,dr(mvsiz), p2,q2,nnu1,
172 . s12, vm2, a, b, c, sigz, f, df, p,
174 . hl, argexp, aux0, aux1, aux2, aux3, kt(mvsiz)
204 nnu1 = nu / (one - nu)
209 nu4 = one + nnu2 + nnu1
210 nu5 = one + nnu2 - two*nnu1
211 nu6 = half - nnu2 + half*nnu1
226 signxx(i)=sigoxx(i) + a1*depsxx(i) + a2*depsyy(i)
227 signyy(i)=sigoyy(i) + a2*depsxx(i) + a1*depsyy(i)
228 signxy(i)=sigoxy(i) + g *depsxy(i)
229 signyz(i)=sigoyz(i) + gs(i)*depsyz(i)
230 signzx(i)=sigozx(i) + gs(i)*depszx(i)
232 soundsp(i) = sqrt(a1/rho0(i))
243 vol0 = vol(i) * rho0(i)
245 temp(i) = temp(i) + (coef*(eint(i,1)+eint(i,2)) + vm(i)*hl) * cp/vol0
253 aux1 = log(
max(em20,aux0))
254 aux2 = exp( (cn - one)*aux1 )
255 aux3 = (bhs - ahs) * exp(-cm * aux0 * aux2)
256 kt(i)= k1 + k2*temp(i)
258 yld(i) = ( bhs - aux3 ) * kt(i)
260 h(i) = cm*cn* aux2 * aux3 * kt(i)
269 svm(i)=sqrt(signxx(i)*signxx(i)
270 . +signyy(i)*signyy(i)
271 . -signxx(i)*signyy(i)
273 r =
min(one,yld(i)/
max(em20,svm(i)))
274 signxx(i)=signxx(i)*r
275 signyy(i)=signyy(i)*r
276 signxy(i)=signxy(i)*r
279 dpla(i) = off(i)*svm(i)*umr/(e)
280 pla(i) = pla(i) + dpla(i)
281 s1=half*(signxx(i)+signyy(i))
283 dezz = dpla(i) * half*(signxx(i)+signyy(i)) / yld(i)
284 dezz=-(depsxx(i)+depsyy(i))*nnu1-nu3*dezz
285 thk(i) = thk(i) + dezz*thkly(i)*off(i)
287 IF(r<1.) etse(i)= h(i)/(h(i)+e)
289 ELSEIF(iflag(1)==1)
THEN
294 h(i) =
max(zero,h(i))
295 s1=signxx(i)+signyy(i)
296 s2=signxx(i)-signyy(i)
299 bb(i)=three_over_4*s2*s2+three*s3*s3
300 svm(i)=sqrt(aa(i)+bb(i))
302 dezz = -(depsxx(i)+depsyy(i))*nnu1
303 thk(i) = thk(i) + dezz*thkly(i)*off(i)
311 IF(svm(i)>yld(i).AND.off(i)==1.)
THEN
323 dpla_j(i)=(svm(i)-yld(i))/(g3+h(i))
324 etse(i)= h(i)/(h(i)+e)
328#include "vectorize.inc"
332 pla_i = pla(i) + dpla(i)
334 yld_i = ( bhs - (bhs - ahs)*
335 . exp(-cm*exp(cn*log(
max(em20,pla_i+eps0))) ))
338 dr(i) =half*e*dpla(i)/yld_i
339 pp(i) =one/(one+dr(i)*nu1)
340 qq(i) =one/(one+three*dr(i)*nu2)
343 f =aa(i)*p2+bb(i)*q2-yld_i*yld_i
344 df =-(aa(i)*nu1*p2*pp(i)+three*bb(i)*nu2*q2*qq(i))
345 . *(e- two*dr(i)*h(i))/yld_i
347 df = sign(
max(abs(df),em20),df)
348 IF(dpla(i)>zero)
THEN
349 dpla_j(i)=
max(zero,dpla(i)-f/df)
358#include "vectorize.inc"
361 pla(i) = pla(i) + dpla(i)
362 s1=(signxx(i)+signyy(i))*pp(i)
363 s2=(signxx(i)-signyy(i))*qq(i)
365 signyy(i)=half*(s1-s2)
366 signxy(i)=signxy(i)*qq(i)
368 dezz = - nu3*dr(i)*s1/e
369 thk(i) = thk(i) + dezz*thkly(i)*off(i)
374 ELSEIF(iflag(1)==2)
THEN
380 p = -(signxx(i)+signyy(i))*third
387 vm2= three*(s12*s12 - s11*s22)
391 c = p2*nu5 - yld(i)*yld(i)
392 r =
min(one,(-b + sqrt(
max(zero,b*b-a*c)))/
max(a ,em20))
393 signxx(i) = s11*r - p
394 signyy(i) = s22*r - p
400 signxx(i) = signxx(i) + sigz
401 signyy(i) = signyy(i) + sigz
403 dpla(i) = off(i)*svm(i)*umr/(three*g)
405 pla(i) = pla(i) + dpla(i)
407 dezz = dpla(i) * half*(signxx(i)+signyy(i)) / yld(i)
408 dezz=-(depsxx(i)+depsyy(i))*nnu1-nu3*dezz
409 thk(i) = thk(i) + dezz*thkly(i)*off(i)
411 IF(r<one) etse(i)= h(i)/(h(i)+e)
416 dvm = half*(one - tanh(cc + cd*temp(i)) )
418 argexp= cq/
max(em20, temp(i))
420 . *log(
max(em20,one - vm(i))/
max(em20,vm(i)))
421 . + pn*log(
max(em20,vm(i)))
423 dvm = cb*exp( argexp )*dvm/
max(ca,em20)
425 IF(dpla(i)/=zero) uvar(i,3) = dvm
426 vm(i) = vm(i) +
max(dvm*dpla(i),zero)
427 vm(i) =
min(vm(i), one)
429 IF(jthe > 0 ) die(i) = (vm(i) - uvar(i,2))*hl
439 IF (loff(i) == one)
THEN
440 svm(i) = sqrt(signxx(i)*signxx(i) + signyy(i)*signyy(i)
441 . - signxx(i)*signyy(i) + three*signxy(i)*signxy(i))
442 dezz =
max(dplanl(i),zero)*half*(signxx(i)+signyy(i))/
max(svm(i),em20)
443 dezz = -nu*((signxx(i)-sigoxx(i)+signyy(i)-sigoyy(i))/e) - dezz
444 thk(i) = thk(i) + dezz*thkly(i)*off(i)
subroutine sigeps63c(nel0, nuparam, nuvar, mfunc, kfunc, 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, etse, gs, vol, yld, tempel, die, coef, inloc, dplanl, jthe, loff)