29 1 NEL0 ,NUPARAM,NUVAR ,MFUNC ,KFUNC ,
30 2 NPF ,NPT0 ,IPT ,IFLAG ,
31 2 TF ,TIME ,TIMESTEP,UPARAM ,RHO0 ,
33 4 EPSPXX ,EPSPYY ,EPSPXY ,EPSPYZ ,EPSPZX ,
34 5 DEPSXX ,DEPSYY ,DEPSXY ,DEPSYZ ,DEPSZX ,
35 6 EPSXX ,EPSYY ,EPSXY ,EPSYZ ,EPSZX ,
36 7 SIGOXX ,SIGOYY ,SIGOXY ,SIGOYZ ,SIGOZX ,
37 8 SIGNXX ,SIGNYY ,SIGNXY ,SIGNYZ ,SIGNZX ,
38 9 SIGVXX ,SIGVYY ,SIGVXY ,SIGVYZ ,SIGVZX ,
39 A SOUNDSP,VISCMAX,THK ,PLA ,UVAR ,
40 B OFF ,NGL ,IPM ,MAT ,ETSE ,
41 C GS ,YLD ,EPSP ,DPLA_I ,ISRATE ,
42 D ASRATE ,EPSD_PG,INLOC ,DPLANL ,LOFF )
46#include "implicit_f.inc"
102#include "param_c.inc"
107 INTEGER NEL0, NUPARAM, , NPT0,ISRATE, IPT,IFLAG(*),
108 . NGL(NEL0),MAT(NEL0),IPM(NPROPMI,*),INLOC
109 my_real ,
INTENT(IN) :: ASRATE
110 my_real ,
DIMENSION(NEL0) ,
INTENT(IN) :: EPSD_PG
111 my_real ,
DIMENSION(NEL0) ,
INTENT(INOUT) :: EPSP
113 . TIME,TIMESTEP,UPARAM(*),
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),
125 my_real,
DIMENSION(NEL0),
INTENT(IN) :: loff
130 . signxx(nel0),signyy(nel0),
131 . signxy(nel0),signyz(nel0),signzx(nel0),
132 . sigvxx(nel0),sigvyy(nel0),
133 . sigvxy(nel0),sigvyz(nel0),sigvzx(nel0),
134 . soundsp(nel0),viscmax(nel0),etse(nel0),
140 . uvar(nel0,nuvar), off(nel0),thk(nel0),yld(nel0)
144 INTEGER NPF(*),MFUNC,KFUNC(MFUNC)
150 INTEGER I,J,N,NINDX,NMAX,IADBUF,INDEX(MVSIZ)
152 . SVM(MVSIZ),DR(MVSIZ),
153 . aa(mvsiz),bb(mvsiz),dpla_j(mvsiz),
154 . pp(mvsiz),qq(mvsiz),fail(mvsiz),h(mvsiz),hs(mvsiz),
156 . ylo(mvsiz),epsgm(mvsiz),
157 . sigexx(mvsiz),sigeyy(mvsiz),sigexy(mvsiz)
159 . r,umr,nux,a,b,c,s11,s22,s12,p,p2,dezz,sigz,s1,s2,s3,
160 . vm2,epst,nnu2,f,df,q2,yld_i,sigpxx,e1,a11,a21,g1,g31,
161 . nnu11,nu11,nu21,nu31,nu41,nu51,nu61,sigpyy,sigpxy,sigm1,
162 . epsm1,epsr11,epsr21,yd1,hc1,cn1,c11,c21,cm1,c31,cl1,
163 . fisokin1,epsgm1,eps01,pa,pb,pc,pda,pdb,yy,
164 . dsxx,dsyy,dsxy,dexx,deyy,dexy,
alpha
175 iadbuf = ipm(7,mat(1))-1
176 e1 = uparam(iadbuf+1)
177 nux = uparam(iadbuf+2)
178 sigm1= uparam(iadbuf+4)
179 epsm1= uparam(iadbuf+5)
180 epsr11=uparam(iadbuf+6)
181 epsr21=uparam(iadbuf+7)
182 yd1 = uparam(iadbuf+3)
183 hc1 = uparam(iadbuf+8)
184 cn1 = uparam(iadbuf+9)
185 c11 = uparam(iadbuf+10)
186 c21 = uparam(iadbuf+11)
187 cm1 = uparam(iadbuf+12)
188 fisokin1=uparam(iadbuf+15)
189 g1 = uparam(iadbuf+16)
190 g31 = uparam(iadbuf+18)
191 a11 = uparam(iadbuf+20)
192 a21 = uparam(iadbuf+21)
194 eps01= uparam(iadbuf+23)
195 c31 = uparam(iadbuf+24)
196 cl1 = uparam(iadbuf+25)
198 nnu11 = nux / (one - nux)
203 nu41 = one + nnu2 + nnu11
204 nu51 = one + nnu2 - two*nnu11
205 nu61 = half- nnu2 + half*nnu11
212! sigoxx(i) = sigoxx(i) - uvar(i,1)
213! sigoyy(i) = sigoyy(i) - uvar(i,2)
221 signxx(i)=sigoxx(i) - uvar(i,1) +a11*depsxx(i)+a21*depsyy(i)
222 signyy(i)=sigoyy(i) - uvar(i,2) +a21*depsxx(i)+a11*depsyy(i)
223 signxy(i)=sigoxy(i) - uvar(i,3) +g1 *depsxy(i)
224 signyz(i)=sigoyz(i)+gs(i) *depsyz(i)
225 signzx(i)=sigozx(i)+gs(i) *depszx(i)
226 sigexx(i) = signxx(i)
227 sigeyy(i) = signyy(i)
228 sigexy(i) = signxy(i)
229 soundsp(i) = sqrt(a11/rho0(i))
235 IF (israte == 0)
THEN
236 epsp(i) = half*( abs(epspxx(i)+epspyy(i))
237 . + sqrt( (epspxx(i)-epspyy(i))*(epspxx(i)-epspyy(i))
238 . + epspxy(i)*epspxy(i) ) )
240 epsp(i) = asrate*epsd_pg(i) + (one-asrate)*epsp(i)
245 epst = half*( epsxx(i)+epsyy(i)
246 . + sqrt( (epsxx(i)-epsyy(i))*(epsxx(i)-epsyy(i))
247 . + epsxy(i)*epsxy(i) ) )
248 fail(i) =
max(zero,
min(one,(epsr21-epst)/(epsr21-epsr11)))
256 IF(pla(i)<=zero)
THEN
259 pa=yd1+hc1*pla(i)**cn1
261 IF(epsp(i)<=eps01)
THEN
263 ELSEIF(pla(i)<=zero)
THEN
264 pb=c11*log(epsp(i)/eps01)
266 pb=(c11-c21*pla(i)**cm1)*log(epsp(i)/eps01)
268 IF(epsp(i)<=zero)
THEN
274 IF(pla(i)>zero. and .cn1>=one)
THEN
275 pda = hc1*cn1*pla(i)**(cn1-one)
276 ELSEIF(pla(i)>zero. and .cn1<one)
THEN
277 pda = hc1*cn1*pla(i)**(one -cn1)
281 IF(pla(i)<=0. or .epsp(i)<=eps01)
THEN
283 ELSEIF(cm1>=one)
THEN
284 pdb = c21*cm1*pla(i)**(cm1 - one)*log(epsp(i)/eps01)
286 pdb = c21*cm1*pla(i)**(one-cm1)*log(epsp(i)/eps01)
299 yld(i)=
min(sigm1+pc, yy)
300 IF (yld(i)<yy) hs(i) = zero
301 hs(i) = fail(i)*hs(i)
302 yld(i) = fail(i)*yld(i)
307 IF (fisokin1==one)
THEN
309 yld(i) = fail(i)*ylo(i)
311 ELSEIF (fisokin1>zero)
THEN
313 yld(i) = (one-fisokin1)*yld(i) + fisokin1*fail(i)*ylo(i)
323 svm(i)=sqrt(signxx(i)*signxx(i)
324 . +signyy(i)*signyy(i)
325 . -signxx(i)*signyy(i)
326 . +three*signxy(i)*signxy(i))
327 r =
min(one,yld(i)/
max(em20,svm(i)))
328 signxx(i)=signxx(i)*r
329 signyy(i)=signyy(i)*r
330 signxy(i)=signxy(i)*r
332 dpla_i(i) = off(i)*svm(i)*umr/(g31+hs(i))
333 pla(i) = pla(i) + dpla_i(i)
334 s1=half*(signxx(i)+signyy(i))
336 dezz = dpla_i(i) * s1 / yld(i)
337 dezz = -(depsxx(i)+depsyy(i))*nnu11-nu31*dezz
338 thk(i) = thk(i) + dezz*thkly(i)*off(i)
346 ELSEIF(iflag(1)==1)
THEN
351 s1=signxx(i)+signyy(i)
352 s2=signxx(i)-signyy(i)
355 bb(i)=three_over_4*s2*s2+3.*s3
356 svm(i)=sqrt(aa(i)+bb(i))
358 dezz = -(depsxx(i)+depsyy(i))*nnu11
359 thk(i) = thk(i) + dezz*thkly(i)*off(i)
367 IF(svm(i)>yld(i).AND.off(i)==one)
THEN
378 hs(i) =
max(zero,hs(i))
379 etse(i)= hs(i)/(hs(i)+e1)
380 h(i) = (one-fisokin1)*hs(i)
381 dpla_j(i)=(svm(i)-yld(i))/(g31+hs(i))
385#include "vectorize.inc"
389 yld_i = yld(i)+h(i)*dpla_i(i)
390 dr(i) = half*e1*dpla_i(i)/yld_i
391 pp(i) = one/(one+dr(i)*nu11)
392 qq(i) = one/(one + three*dr(i)*nu21)
395 f =aa(i)*p2+bb(i)*q2-yld_i*yld_i
396 df =-(aa(i)*nu11*p2*pp(i)+three*bb(i)*nu21*q2*qq(i))
397 . *(e1-two*dr(i)*h(i))/yld_i
399 IF(dpla_i(i)>zero)
THEN
400 dpla_j(i) =
max(zero,dpla_i(i)-f/df)
409#include "vectorize.inc"
412 pla(i) = pla(i) + dpla_i(i)
413 s1=(signxx(i)+signyy(i))*pp(i)
414 s2=(signxx(i)-signyy(i))*qq(i)
415 signxx(i)=half*(s1+s2)
416 signyy(i)=half*(s1-s2)
417 signxy(i)=signxy(i)*qq(i)
419 dezz =-nu31*dr(i)*s1/e1
420 thk(i) = thk(i) + dezz*thkly(i)*off(i)
433 ELSEIF(iflag(1)==2)
THEN
436 p = -(signxx(i)+signyy(i))*third
443 vm2= three*(s12*s12 - s11*s22)
447 c = p2*nu51 - yld(i)*yld(i)
448 r =
min(one,(-b + sqrt(
max(zero,b*b-a*c)))/
max(a ,em20))
449 signxx(i) = s11*r - p
450 signyy(i) = s22*r - p
456 signxx(i) = signxx(i) + sigz
457 signyy(i) = signyy(i) + sigz
459 dpla_i(i) = off(i)*svm(i)*umr/(g31+hs(i))
460 pla(i) = pla(i) + dpla_i(i)
462 dezz = dpla_i(i) * half*(signxx(i)+signyy(i)) / yld(i)
463 dezz=-(depsxx(i)+depsyy(i))*nnu11-nu31*dezz
464 thk(i) = thk(i) + dezz*thkly(i)*off(i)
466 IF(r<one) etse(i)= hs(i)/(hs(i)+e1)
471 IF(pla(i)>epsm1.AND.off(i)==one)off(i)=four_over_5
476 IF (fisokin1/=zero)
THEN
478 dsxx = sigexx(i) - signxx(i)
479 dsyy = sigeyy(i) - signyy(i)
480 dsxy = sigexy(i) - signxy(i)
481 dexx = (dsxx - nux*dsyy)
482 deyy = (dsyy - nux*dsxx)
483 dexy = two*(one+nux)*dsxy
484 alpha = fisokin1*hs(i)/(e1+hs(i))/three
485 sigpxx =
alpha*(four*dexx+two*deyy)
486 sigpyy =
alpha*(four*deyy+two*dexx)
489 signxx(i) = signxx(i) + uvar(i,1)
490 signyy(i) = signyy(i) + uvar(i,2)
491 signxy(i) = signxy(i) + uvar(i,3)
492 uvar(i,1) = uvar(i,1) + sigpxx
493 uvar(i,2) = uvar(i,2) + sigpyy
494 uvar(i,3) = uvar(i,3) + sigpxy
502 IF (loff(i) == one)
THEN
503 svm(i) = sqrt(signxx(i)*signxx(i)
504 . + signyy(i)*signyy(i)
505 . - signxx(i)*signyy(i)
506 . + three*signxy(i)*signxy(i))
507 dezz =
max(dplanl(i),zero)*half*(signxx(i)+signyy(i))/
max(svm(i),em20)
508 dezz = -nux*((signxx(i)-sigoxx(i)+signyy(i)-sigoyy(i))/e1) - dezz
509 thk(i) = thk(i) + dezz*thkly(i)*off(i)
subroutine sigeps48c(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, yld, epsp, dpla_i, israte, asrate, epsd_pg, inloc, dplanl, loff)