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, , NPT0, IPT,IFLAG(*),
112 . NGL(NEL0),MAT(NEL0),INLOC
113 my_real TIME,TIMESTEP,
114 . AREA(),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(),
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(NEL0),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
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)
158 INTEGER I,J,NRATE(MVSIZ),J1,J2,N,NINDX,NMAX,INDEX(MVSIZ)
161 . AA(MVSIZ),BB(MVSIZ),PP(MVSIZ),QQ(MVSIZ),H(MVSIZ),
162 . epsmax(mvsiz),cc,dd(mvsiz),ahs,
164 . k2, dh, vm0, temp(mvsiz),
165 . vol0,dvm, vm(mvsiz),hk(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)
203 nnu1 = nu / (one - nu)
208 nu4 = one + nnu2 + nnu1
209 nu5 = one + nnu2 - two*nnu1
210 nu6 = half - nnu2 + half*nnu1
230 signxx(i)=sigoxx(i) + a1*depsxx(i) + a2*depsyy(i)
231 signyy(i)=sigoyy(i) + a2*depsxx(i) + a1*depsyy(i)
232 signxy(i)=sigoxy(i) + g *depsxy(i)
233 signyz(i)=sigoyz(i) + gs(i)*depsyz(i)
234 signzx(i)=sigozx(i) + gs(i)*depszx(i)
236 soundsp(i) = sqrt(a1/rho0(i))
247 vol0 = vol(i) * rho0(i)
250 . + ( coef(i)*(eint(i,1)+ eint(i,2))
251 . + vm(i)*hl ) * cp /vol0
270 aux1 = log(
max(em20,aux0))
271 aux2 = exp( (cn - one)*aux1 )
272 aux3 = (bhs - ahs) * exp(-cm * aux0 * aux2)
273 kt(i)= k1 + k2*temp(i)
275 yld(i) = ( bhs - aux3 ) * kt(i)
277 h(i) = cm*cn* aux2 * aux3 * kt(i)
289 svm(i)=sqrt(signxx(i)*signxx(i)
290 . +signyy(i)*signyy(i)
291 . -signxx(i)*signyy(i)
292 . + three*signxy(i)*signxy(i))
293 r =
min(one,yld(i)/
max(em20,svm(i)))
294 signxx(i)=signxx(i)*r
295 signyy(i)=signyy(i)*r
296 signxy(i)=signxy(i)*r
299 dpla(i) = off(i)*svm(i)*umr/(e)
300 pla(i) = pla(i) + dpla(i)
301 s1=half*(signxx(i)+signyy(i))
303 dezz = dpla(i) * half*(signxx(i)+signyy(i)) / yld(i)
304 dezz=-(depsxx(i)+depsyy(i))*nnu1-nu3*dezz
305 thk(i) = thk(i) + dezz*thkly(i)*off(i)
307 IF(r<1.) etse(i)= h(i)/(h(i)+e)
309 ELSEIF(iflag(1)==1)
THEN
314 h(i) =
max(zero,h(i))
315 s1=signxx(i)+signyy(i)
316 s2=signxx(i)-signyy(i)
319 bb(i)=three_over_4*s2*s2+three*s3*s3
320 svm(i)=sqrt(aa(i)+bb(i))
322 dezz = -(depsxx(i)+depsyy(i))*nnu1
323 thk(i) = thk(i) + dezz*thkly(i)*off(i)
331 IF(svm(i)>yld(i).AND.off(i)==1.)
THEN
343 dpla_j(i)=(svm(i)-yld(i))/(g3+h(i))
344 etse(i)= h(i)/(h(i)+e)
348#include "vectorize.inc"
352 pla_i = pla(i) + dpla(i)
354 yld_i = ( bhs - (bhs - ahs)*
355 . exp(-cm*exp(cn*log(
max(em20,pla_i+eps0))) ))
358 dr(i) =half*e*dpla(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 . *(e- two*dr(i)*h(i))/yld_i
367 df = sign(
max(abs(df),em20),df)
368 IF(dpla(i)>zero)
THEN
369 dpla_j(i)=
max(zero,dpla(i)-f/df)
378#include "vectorize.inc"
381 pla(i) = pla(i) + dpla(i)
382 s1=(signxx(i)+signyy(i))*pp(i)
383 s2=(signxx(i)-signyy(i))*qq(i)
384 signxx(i)=half*(s1+s2)
385 signyy(i)=half*(s1-s2)
386 signxy(i)=signxy(i)*qq(i)
388 dezz = - nu3*dr(i)*s1/e
389 thk(i) = thk(i) + dezz*thkly(i)*off(i)
394 ELSEIF(iflag(1)==2)
THEN
400 p = -(signxx(i)+signyy(i))*third
407 vm2= three*(s12*s12 - s11*s22)
411 c = p2*nu5 - yld(i)*yld(i)
412 r =
min(one,(-b + sqrt(
max(zero,b*b-a*c)))/
max(a ,em20))
413 signxx(i) = s11*r - p
414 signyy(i) = s22*r - p
420 signxx(i) = signxx(i) + sigz
421 signyy(i) = signyy(i) + sigz
423 dpla(i) = off(i)*svm(i)*umr/(three*g)
425 pla(i) = pla(i) + dpla(i)
427 dezz = dpla(i) * half*(signxx(i)+signyy(i)) / yld(i)
428 dezz=-(depsxx(i)+depsyy(i))*nnu1-nu3*dezz
429 thk(i) = thk(i) + dezz*thkly(i)*off(i)
431 IF(r<one) etse(i)= h(i)/(h(i)+e)
436 dvm = half*(one - tanh(cc + cd*temp(i)) )
438 argexp= cq/
max(em20, temp(i))
440 . *log(
max(em20,one - vm(i))/
max(em20,vm(i)))
441 . + pn*log(
max(em20,vm(i)))
443 dvm = cb*exp( argexp )*dvm/
max(ca,em20)
445 IF(dpla(i)/=zero) uvar(i,3) = dvm
446 vm(i) = vm(i) +
max(dvm*dpla(i),zero)
447 vm(i) =
min(vm(i), one)
449 IF(jthe > 0 ) die(i) = (vm(i) - uvar(i,2))*hl
459 IF (loff(i) == one)
THEN
460 svm(i) = sqrt(signxx(i)*signxx(i) + signyy(i)*signyy(i)
461 . - signxx(i)*signyy(i) + three*signxy(i)*signxy(i))
462 dezz =
max(dplanl(i),zero)*half*(signxx(i)+signyy(i))/
max(svm(i),em20)
463 dezz = -nu*((signxx(i)-sigoxx(i)+signyy(i)-sigoyy(i))/e) - dezz
464 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)