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,
47 G TEMPEL, DIE, COEF, INLOC,
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,*),INLOC
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(NEL0),DEPSYZ(NEL0),DEPSZX(NEL0),
123 . EPSXX(NEL0) ,EPSYY(NEL0) ,
124 . EPSXY() ,EPSYZ(NEL0) ,EPSZX(NEL0) ,
125 . SIGOXX(NEL0),SIGOYY(NEL0),
126 . SIGOXY(NEL0),SIGOYZ(NEL0),SIGOZX(NEL0),
127 . GS(*),VOL(NEL0),TEMPEL(NEL0),
128 . DIE(),COEF(NEL0),DPLANL(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(*)
159 INTEGER I,J,NRATE(MVSIZ),J1,J2,N,NINDX,
161 . IAD1(MVSIZ),IPOS1(MVSIZ),ILEN1(MVSIZ),
162 . IAD2(MVSIZ),IPOS2(MVSIZ),ILEN2(MVSIZ),
166 . aa(mvsiz),bb(mvsiz),pp(mvsiz),qq(mvsiz),h
167 . epsmax(mvsiz),cc(mvsiz),dd(mvsiz),
168 . cn, cm(mvsiz), k1(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, eps0(mvsiz),dezz,s1, s2,
176 . s3, dpla_j(mvsiz), yld_i,dr(mvsiz), p2,q2
178 . s12, vm2, a, b, c, sigz, f, df, p,md,
189 ifunc(j)=ipm(10+j,mx)
205 nnu1 = nu / (one - nu)
210 nu4 = one + nnu2 + nnu1
211 nu5 = one + nnu2 - two*nnu1
212 nu6 = half - nnu2 + half*nnu1
242 vol0 = vol(i) * rho0(i)
245 . + coef(i)*cp*(eint(i,1)+ eint(i,2))/vol0
252 signxx(i)=sigoxx(i) + a1*depsxx(i) + a2*depsyy(i)
253 signyy(i)=sigoyy(i) + a2*depsxx(i) + a1*depsyy(i)
254 signxy(i)=sigoxy(i) + g *depsxy(i)
255 signyz(i)=sigoyz(i) + gs(i)*depsyz(i)
256 signzx(i)=sigozx(i) + gs(i)*depszx(i)
261 soundsp(i) = sqrt(a1/rho0(i))
268 ipos1(i) = nint(uvar(i,3))
269 iad1(i) = npf(ifunc(1)) / 2 + 1
270 ilen1(i) = npf(ifunc(1)+1) / 2 - iad1(i) - ipos1(i)
271 ipos2(i) = nint(uvar(i,4))
272 iad2(i) = npf(ifunc(2)) / 2 + 1
273 ilen2(i) = npf(ifunc(2)+1) / 2 - iad2(i) - ipos2(i)
276 CALL vinter(tf,iad1,ipos1,ilen1,nel0,pla,dydx1,y1)
277 CALL vinter(tf,iad2,ipos2,ilen2,nel0,pla,dydx2,y2)
283 yld(i) = y1(i) + fac*(y2(i)-y1(i))
284 yld(i) =
max(yld(i),em20)
286 dydx1(i)=dydx1(i)*yfac(1)
287 dydx2(i)=dydx2(i)*yfac(2)
288 h(i) = (dydx1(i) + fac*(dydx2(i)-dydx1(i)))
298 svm(i)=sqrt(signxx(i)*signxx(i)
299 . +signyy(i)*signyy(i)
300 . -signxx(i)*signyy(i)
301 . +three*signxy(i)*signxy(i))
302 r =
min(one,yld(i)/
max(em20,svm(i)))
303 signxx(i)=signxx(i)*r
304 signyy(i)=signyy(i)*r
305 signxy(i)=signxy(i)*r
308 dpla(i) = off(i)*svm(i)*umr/e
309 pla(i) = pla(i) + dpla(i)
310 s1=half*(signxx(i)+signyy(i))
312 dezz = dpla(i) * half*(signxx(i)+signyy(i)) / yld(i)
313 dezz=-(depsxx(i)+depsyy(i))*nnu1-nu3*dezz
314 thk(i) = thk(i) + dezz*thkly(i)*off(i)
316 IF(r<one) etse(i)= h(i)/(h(i)+e)
318 ELSEIF(iflag(1)==1)
THEN
323 h(i) =
max(zero,h(i))
324 s1=signxx(i)+signyy(i)
325 s2=signxx(i)-signyy(i)
328 bb(i)=three_over_4*s2*s2+three*s3*s3
329 svm(i)=sqrt(aa(i)+bb(i))
331 dezz = -(depsxx(i)+depsyy(i))*nnu1
332 thk(i) = thk(i) + dezz*thkly(i)*off(i)
340 IF(svm(i)>yld(i).AND.off(i)==one)
THEN
352 dpla_j(i)=(svm(i)-yld(i))/(g3+h(i))
353 etse(i)= h(i)/(h(i)+e)
357#include "vectorize.inc"
362 yld_i = yld(i) + h(i)*dpla(i)
364 dr(i) =half*e*dpla(i)/yld_i
365 pp(i) =one/(one+dr(i)*nu1)
366 qq(i) =one/(one + three*dr(i)*nu2)
369 f =aa(i)*p2+bb(i)*q2-yld_i*yld_i
370 df =-(aa(i)*nu1*p2*pp(i)+three*bb(i)*nu2*q2*qq(i))
371 . *(e-two*dr(i)*h(i))/yld_i
373 df = sign(
max(abs(df),em20),df)
374 IF(dpla(i)>zero)
THEN
375 dpla_j(i)=
max(zero,dpla(i)-f/df)
384#include "vectorize.inc"
387 pla(i) = pla(i) + dpla(i)
388 s1=(signxx(i)+signyy(i))*pp(i)
389 s2=(signxx(i)-signyy(i))*qq(i)
390 signxx(i)=half*(s1+s2)
391 signyy(i)=half*(s1-s2)
392 signxy(i)=signxy(i)*qq(i)
394 dezz = - nu3*dr(i)*s1/e
395 thk(i) = thk(i) + dezz*thkly(i)*off(i)
400 ELSEIF(iflag(1)==2)
THEN
406 p = -(signxx(i)+signyy(i))*third
413 vm2= three*(s12*s12 - s11*s22)
417 c = p2*nu5 - yld(i)*yld(i)
418 r =
min(one,(-b + sqrt(
max(zero,b*b-a*c)))/
max(a ,em20))
419 signxx(i) = s11*r - p
420 signyy(i) = s22*r - p
426 signxx(i) = signxx(i) + sigz
427 signyy(i) = signyy(i) + sigz
429 dpla(i) = off(i)*svm(i)*umr/g3
431 pla(i) = pla(i) + dpla(i)
433 dezz = dpla(i) * half*(signxx(i)+signyy(i)) / yld(i)
434 dezz=-(depsxx(i)+depsyy(i))*nnu1-nu3*dezz
435 thk(i) = thk(i) + dezz*thkly(i)*off(i)
437 IF(r<one) etse(i)= h(i)/(h(i)+e)
444 dvm = cn*cd*exp((cn-one)*log(
max(cd*pla(i),em20)))
445 dvm = dvm*exp(-(cd*pla(i))**cn)
446 dvm = dvm*v0*log(md - temp(i) + one)
449 vm(i) = vm(i) +
max(dvm*dpla(i),zero)
450 vm(i) =
min(vm(i), one)
452 IF(jthe > 0 ) die(i) = (vm(i) - uvar(i,2))*hl
463 IF (loff(i) == one)
THEN
464 svm(i) = sqrt(signxx(i)*signxx(i) + signyy(i)*signyy(i)
465 . - signxx(i)*signyy(i) + three*signxy(i)*signxy(i))
466 dezz =
max(dplanl(i),zero)*half*(signxx(i)+signyy(i))/
max(svm(i),em20)
467 dezz = -nu*((signxx(i)-sigoxx(i)+signyy(i)-sigoyy(i))/e) - dezz
468 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, coef, inloc, dplanl, jthe, loff)