32 1 NEL0, NUPARAM, NUVAR, MFUNC,
33 2 KFUNC, NPF, NPT0, IPT,
34 3 IFLAG, TF, TIME, TIMESTEP,
35 4 UPARAM, RHO0, AREA, EINT,
36 5 THKLY, EPSPXX, EPSPYY, EPSPXY,
37 6 EPSPYZ, EPSPZX, DEPSXX, DEPSYY,
38 7 DEPSXY, DEPSYZ, DEPSZX, EPSXX,
39 8 EPSYY, EPSXY, EPSYZ, EPSZX,
40 9 SIGOXX, SIGOYY, SIGOXY, SIGOYZ,
41 A SIGOZX, SIGNXX, SIGNYY, SIGNXY,
42 B SIGNYZ, SIGNZX, SIGVXX, SIGVYY,
43 C SIGVXY, SIGVYZ, SIGVZX, SOUNDSP,
44 D VISCMAX, THK, PLA, UVAR,
52#include "implicit_f.inc"
108#include "param_c.inc"
109#include "com01_c.inc"
113 INTEGER,
INTENT(IN) :: JTHE
114 INTEGER NEL0, NUPARAM, NUVAR, NPT0, IPT,IFLAG(*),
115 . NGL(NEL0),MAT(NEL0),IPM(NPROPMI,*),
116 my_real TIME,TIMESTEP,UPARAM(*),
117 . AREA(NEL0),RHO0(NEL0),EINT(NEL0,2),
118 . THKLY(NEL0),PLA(NEL0),
119 . EPSPXX(NEL0),EPSPYY(NEL0),
120 . EPSPXY(NEL0),EPSPYZ(NEL0),EPSPZX(NEL0),
121 . DEPSXX(NEL0),DEPSYY(NEL0),
122 . DEPSXY(),DEPSYZ(NEL0),DEPSZX(NEL0),
123 . EPSXX(NEL0) ,EPSYY(NEL0) ,
124 . EPSXY(NEL0) ,EPSYZ(NEL0) ,EPSZX(NEL0) ,
125 . SIGOXX(NEL0),SIGOYY(),
126 . SIGOXY(NEL0),SIGOYZ(NEL0),SIGOZX(NEL0),
127 . GS(*),VOL(NEL0),TEMPEL(NEL0),
129 my_real,
DIMENSION(NEL0),
INTENT(IN) :: LOFF
134 . signxx(nel0),signyy(nel0),
135 . signxy(nel0),signyz(nel0),signzx(nel0),
136 . sigvxx(nel0),sigvyy(nel0),
137 . sigvxy(nel0),sigvyz(nel0),sigvzx(nel0),
138 . soundsp(nel0),viscmax(nel0),etse(nel0)
142 my_real uvar(nel0,nuvar), off(nel0),thk(nel0),yld(nel0)
146 INTEGER NPF(*), MFUNC, KFUNC(MFUNC)
147 my_real FINTER ,TF(*)
161 . IAD1(MVSIZ),IPOS1(MVSIZ),ILEN1(MVSIZ),
162 . IAD2(MVSIZ),IPOS2(MVSIZ),ILEN2(MVSIZ),
166 . aa(mvsiz),bb(mvsiz),pp(mvsiz),qq(mvsiz),h(mvsiz),
169 . v0, temp(mvsiz),vmc,fac,
170 . vol0,dvm, vm(mvsiz),nu,
171 . nnu2,nu1,nu2,nu3,nu4,
172 . nu5,nu6,svm(mvsiz),
173 . dydx1(mvsiz),dydx2(mvsiz), y1(mvsiz),y2(mvsiz)
175 . dpla(mvsiz),umr, r, cp,dezz,s1, s2,
176 . s3, dpla_j(mvsiz), yld_i,dr(mvsiz), p2,q2,nnu1,
178 . s12, vm2, a, b, c, sigz, f, df, p,md,
189 ifunc(j)=ipm(10+j,mx)
206 nnu1 = nu / (one - nu)
211 nu4 = one + nnu2 + nnu1
212 nu5 = one + nnu2 - two*nnu1
213 nu6 = half - nnu2 + half*nnu1
226 vol0 = vol(i) * rho0(i)
228 temp(i) = temp(i) + (eint(i,1)+ eint(i,2) + vm(i)*hl) * cp / vol0
234 signxx(i)=sigoxx(i) + a1*depsxx(i) + a2*depsyy(i)
235 signyy(i)=sigoyy(i) + a2*depsxx(i) + a1*depsyy(i)
236 signxy(i)=sigoxy(i) + g *depsxy(i)
237 signyz(i)=sigoyz(i) + gs(i)*depsyz(i)
238 signzx(i)=sigozx(i) + gs(i)*depszx(i)
243 soundsp(i) = sqrt(a1/rho0(i))
250 ipos1(i) = nint(uvar(i,3))
251 iad1(i) = npf(ifunc(1)) / 2 + 1
252 ilen1(i) = npf(ifunc(1)+1) / 2 - iad1(i) - ipos1(i)
253 ipos2(i) = nint(uvar(i,4))
254 iad2(i) = npf(ifunc(2)) / 2 + 1
255 ilen2(i) = npf(ifunc(2)+1) / 2 - iad2(i) - ipos2(i)
258 CALL vinter(tf,iad1,ipos1,ilen1,nel0,pla,dydx1,y1)
259 CALL vinter(tf,iad2,ipos2,ilen2,nel0,pla,dydx2,y2)
265 yld(i) = y1(i) + fac*(y2(i)-y1(i))
266 yld(i) =
max(yld(i),em20)
268 dydx1(i)=dydx1(i)*yfac(1)
269 dydx2(i)=dydx2(i)*yfac(2)
270 h(i) = (dydx1(i) + fac*(dydx2(i)-dydx1(i)))
280 svm(i)=sqrt(signxx(i)*signxx(i)
281 . +signyy(i)*signyy(i)
282 . -signxx(i)*signyy(i)
283 . +three*signxy(i)*signxy(i))
284 r =
min(one,yld(i)/
max(em20,svm(i)))
285 signxx(i)=signxx(i)*r
286 signyy(i)=signyy(i)*r
287 signxy(i)=signxy(i)*r
290 dpla(i) = off(i)*svm(i)*umr/e
291 pla(i) = pla(i) + dpla(i)
292 s1=half*(signxx(i)+signyy(i))
294 dezz = dpla(i) * half*(signxx(i)+signyy(i)) / yld(i)
295 dezz=-(depsxx(i)+depsyy(i))*nnu1-nu3*dezz
296 thk(i) = thk(i) + dezz*thkly(i)*off(i)
298 IF(r<one) etse(i)= h(i)/(h(i)+e)
300 ELSEIF(iflag(1)==1)
THEN
305 h(i) =
max(zero,h(i))
306 s1=signxx(i)+signyy(i)
307 s2=signxx(i)-signyy(i)
310 bb(i)=three_over_4*s2*s2+three*s3*s3
311 svm(i)=sqrt(aa(i)+bb(i))
313 dezz = -(depsxx(i)+depsyy(i))*nnu1
314 thk(i) = thk(i) + dezz*thkly(i)*off(i)
322 IF(svm(i)>yld(i).AND.off(i)==one)
THEN
334 dpla_j(i)=(svm(i)-yld(i))/(g3+h(i))
335 etse(i)= h(i)/(h(i)+e)
339#include "vectorize.inc"
344 yld_i = yld(i) + h(i)*dpla(i)
346 dr(i) =half*e*dpla(i)/yld_i
347 pp(i) =one/(one+dr(i)*nu1)
348 qq(i) =one/(one + three*dr(i)*nu2)
351 f =aa(i)*p2+bb(i)*q2-yld_i*yld_i
352 df =-(aa(i)*nu1*p2*pp(i)+three*bb(i)*nu2*q2*qq(i))
353 . *(e-two*dr(i)*h(i))/yld_i
355 df = sign(
max(abs(df),em20),df)
356 IF(dpla(i)>zero)
THEN
357 dpla_j(i)=
max(zero,dpla(i)-f/df)
366#include "vectorize.inc"
369 pla(i) = pla(i) + dpla(i)
370 s1=(signxx(i)+signyy(i))*pp(i)
371 s2=(signxx(i)-signyy(i))*qq(i)
372 signxx(i)=half*(s1+s2)
373 signyy(i)=half*(s1-s2)
374 signxy(i)=signxy(i)*qq(i)
376 dezz = - nu3*dr(i)*s1/e
377 thk(i) = thk(i) + dezz*thkly(i)*off(i)
382 ELSEIF(iflag(1)==2)
THEN
388 p = -(signxx(i)+signyy(i))*third
395 vm2= three*(s12*s12 - s11*s22)
399 c = p2*nu5 - yld(i)*yld(i)
400 r =
min(one,(-b + sqrt(
max(zero,b*b-a*c)))/
max(a ,em20))
401 signxx(i) = s11*r - p
402 signyy(i) = s22*r - p
408 signxx(i) = signxx(i) + sigz
409 signyy(i) = signyy(i) + sigz
411 dpla(i) = off(i)*svm(i)*umr/g3
413 pla(i) = pla(i) + dpla(i)
415 dezz = dpla(i) * half*(signxx(i)+signyy(i)) / yld(i)
416 dezz=-(depsxx(i)+depsyy(i))*nnu1-nu3*dezz
417 thk(i) = thk(i) + dezz*thkly(i)*off(i)
419 IF(r<one) etse(i)= h(i)/(h(i)+e)
426 dvm = cn*cd*exp((cn-one)*log(
max(cd*pla(i),em20)))
427 dvm = dvm*exp(-(cd*pla(i))**cn)
428 dvm = dvm*v0*log(md - temp(i) + one)
431 vm(i) = vm(i) +
max(dvm*dpla(i),zero)
432 vm(i) =
min(vm(i), one)
434 IF(jthe > 0 ) die(i) = (vm(i) - uvar(i,2))*hl
445 IF (loff(i) == one)
THEN
446 svm(i) = sqrt(signxx(i)*signxx(i) + signyy
447 . - signxx(i)*signyy(i) + three*signxy(i)*signxy(i))
448 dezz =
max(dplanl(i),zero)*half*(signxx(i)+signyy(i))/
max(svm(i),em20)
449 dezz = -nu*((signxx(i)-sigoxx(i)+signyy(i)-sigoyy(i))/e) - dezz
450 thk(i) = thk(i) + dezz*thkly(i)*off(i)
subroutine sigeps64c(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, ipm, mat, etse, gs, vol, yld, tempel, die, inloc, dplanl, jthe, loff)