32 1 NEL0 ,NUPARAM,NUVAR ,MFUNC ,KFUNC ,
33 2 NPF ,NPT0 ,IPT ,IFLAG ,
34 2 TF ,TIME ,TIMESTEP,UPARAM ,RHO0 ,
35 3 AREA ,EINT ,THKLY ,ISRATE ,ASRATE ,
36 4 EPSPXX ,EPSPYY ,EPSPXY ,EPSPYZ ,EPSPZX ,
37 5 DEPSXX ,DEPSYY ,DEPSXY ,DEPSYZ ,DEPSZX ,
38 6 EPSXX ,EPSYY ,EPSXY ,EPSYZ ,EPSZX ,
39 7 SIGOXX ,SIGOYY ,SIGOXY ,SIGOYZ ,SIGOZX ,
40 8 SIGNXX ,SIGNYY ,SIGNXY ,SIGNYZ ,SIGNZX ,
41 9 SIGVXX ,SIGVYY ,SIGVXY ,SIGVYZ ,SIGVZX ,
42 A SOUNDSP,VISCMAX,THK ,PLA ,UVAR ,
43 B OFF ,NGL ,IPM ,MAT ,ETSE ,
44 C GS ,YLD ,EPSD_PG ,EPSP ,DPLA_I)
48#include "implicit_f.inc"
104#include "param_c.inc"
105#include "com01_c.inc"
110 INTEGER NEL0, NUPARAM, NUVAR, NPT0, IPT,IFLAG(*),
111 . NGL(NEL0),MAT(NEL0),ISRATE,IPM(NPROPMI,*)
112 my_real ,
INTENT(IN) :: ASRATE
113 my_real ,
DIMENSION(NEL0) ,
INTENT(IN) :: EPSD_PG
114 my_real ,
DIMENSION(NEL0) ,
INTENT(INOUT) :: EPSP
117 . AREA(NEL0),RHO0(NEL0),EINT(NEL0,2),
118 . THKLY(NEL0),(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(nel0) ,epsyz(nel0) ,epszx(nel0) ,
125 . sigoxx(nel0),sigoyy(nel0),
126 . sigoxy(nel0),sigoyz(nel0),sigozx(nel0),gs(*)
127 my_real ,
DIMENSION(NUPARAM) :: uparam
132 . signxx(nel0),signyy(nel0),
133 . signxy(nel0),signyz(nel0),signzx(nel0),
134 . sigvxx(nel0),sigvyy(nel0),
135 . sigvxy(nel0),sigvyz(nel0),sigvzx(nel0),
136 . soundsp(nel0),viscmax(nel0),etse
142 . uvar(nel0,nuvar), off(nel0),thk(nel0),yld(nel0)
146 INTEGER NPF(*), MFUNC, KFUNC(MFUNC)
160 INTEGER I,J,NRATE(MVSIZ),J1,J2,N,NINDX,NMAX,
161 . IAD1(MVSIZ),IPOS1(MVSIZ),ILEN1(MVSIZ),
162 . iad2(mvsiz),ipos2(mvsiz),ilen2(mvsiz),
163 . jj(mvsiz),index(mvsiz),nratem,
167 . dydx1(mvsiz),dydx2(mvsiz),rate
168 . y1(mvsiz),y2(mvsiz),dr(mvsiz),
170 . aa(mvsiz),bb(mvsiz),dpla_j(mvsiz),
171 . pp(mvsiz),qq(mvsiz),fail(mvsiz),svmo(mvsiz),h(mvsiz),
172 . epsmax(mvsiz),epsr1(mvsiz),epsr2(mvsiz),fisokin(mvsiz),
173 . sigexx(mvsiz),sigeyy(mvsiz),sigexy(mvsiz),
174 . hk(mvsiz),nu(mvsiz),nnu1(mvsiz),epsf(mvsiz),
175 . svm2(mvsiz),yld2(mvsiz)
177 . r,umr,a,b,c,amu,s11,s22,s12,p,p2,fac,dezz,
178 . sigz,s1,s2,s3,dpla,vm2,epst(mvsiz),nnu2,
179 . err,f,df,pla_i,q2,yld_i,sigpxx,sigpyy,sigpxy,
181 . e1,a11,a21,g1,nnu11,nu11,nu21,nu31,nu41,nu51,nu61,
182 . epsmax1,epsr11,epsr21,fisokin1,g31,
183 . dsxx,dsyy,dsxy,dexx,deyy,dexy,nux, epsf1, mepsf
185 . y11(mvsiz),y21(mvsiz), me, ma1, ma2, mg, mnu
186 . mepsmax,mepsr1,mepsr2,mfisokin
187 INTEGER JST(MVSIZ+1), IC, MNRATE
199 nnu11 = nux / (1. - nux)
200 nrate1 = nint(uparam(1))
201 epsmax1 =uparam(7+2*nrate1)
202 epsr11 =uparam(8+2*nrate1)
203 epsr21 =uparam(9+2*nrate1)
204 fisokin1=uparam(14+2*nrate1)
205 epsf1= uparam(15+2*nrate1)
206 IF(epsmax1==zero)
THEN
207 IF(tf(npf(ipm(11,mat(1))+1)-1)==zero)
THEN
208 epsmax1=tf(npf(ipm(11,mat(1))+1)-2)
235 signxx(i)=sigoxx(i) - uvar(i,2) +a11*depsxx(i)+a21*depsyy(i)
236 signyy(i)=sigoyy(i) - uvar(i,3) +a21*depsxx(i)+a11*depsyy(i)
237 signxy(i)=sigoxy(i) - uvar(i,4) +g1 *depsxy(i)
238 signyz(i)=sigoyz(i)+gs(i) *depsyz(i)
239 signzx(i)=sigozx(i)+gs(i) *depszx(i)
240 sigexx(i) = signxx(i)
241 sigeyy(i) = signyy(i)
242 sigexy(i) = signxy(i)
244 soundsp(i) = sqrt(a11/rho0(i))
251 IF (israte == 0)
THEN
252 epsp(i) = half*( abs(epspxx(i)+epspyy(i))
253 . + sqrt( (epspxx(i)-epspyy(i))*(epspxx(i)-epspyy(i))
254 . + epspxy(i)*epspxy(i) ) )
256 epsp(i) = asrate*epsd_pg(i) + (one-asrate)*epsp(i)
262 epst(i) = half*( epsxx(i)+epsyy(i)
263 . + sqrt( (epsxx(i)-epsyy(i))*(epsxx(i)-epsyy(i))
264 . + epsxy(i)*epsxy(i) ) )
273 IF(epsp(i)>=uparam(6+j)) jj(i) = j
279 rate(i)=(epsp(i) - fac)/(uparam(7+jj(i)) - fac)
280 yfac(i,1)=uparam(6+nrate1+jj(i))
281 yfac(i,2)=uparam(6+nrate1+jj(i)+1)
287 ipos1(i) = nint(uvar(i,j1+4))
288 iad1(i) = npf(ipm(10+j1,mat(1))) / 2 + 1
289 ilen1(i) = npf(ipm(10+j1,mat(1))+1) / 2 - iad1(i)-ipos1(i)
290 ipos2(i) = nint(uvar(i,j2+4))
291 iad2(i) = npf(ipm(10+j2,mat(1))) / 2 + 1
292 ilen2(i) = npf(ipm(10+j2,mat(1))+1) / 2 - iad2(i)-ipos2(i)
295 CALL vinter(tf,iad1,ipos1,ilen1,nel0,pla,dydx1,y1)
296 CALL vinter(tf,iad2,ipos2,ilen2,nel0,pla,dydx2,y2)
298 IF (fisokin1==zero)
THEN
302 y1(i)=y1(i)*yfac(i,1)
303 y2(i)=y2(i)*yfac(i,2)
305 yld(i) = y1(i) + fac*(y2(i)-y1(i))
306 yld(i) =
max(yld(i),em20)
307 dydx1(i)=dydx1(i)*yfac(i,1)
308 dydx2(i)=dydx2(i)*yfac(i,2)
309 h(i) =dydx1(i) + fac*(dydx2(i)-dydx1(i))
310 uvar(i,j1+4) = ipos1(i)
311 uvar(i,j2+4) = ipos2(i)
313 ELSEIF (fisokin1==1.)
THEN
321 dydx1(i)=dydx1(i)*yfac(i,1)
322 dydx2(i)=dydx2(i)*yfac(i,2)
323 h(i) = dydx1(i) + fac*(dydx2(i)-dydx1(i))
324 uvar(i,j1+4) = ipos1(i)
325 uvar(i,j2+4) = ipos2(i)
327 y1(i)=tf(npf(ipm(10+j1,mat(1)))+1)
328 y2(i)=tf(npf(ipm(10+j2,mat(1)))+1)
329 y1(i)=y1(i)*yfac(i,1)
330 y2(i)=y2(i)*yfac(i,2)
331 yld(i) = y1(i) + fac*(y2(i)-y1(i))
341 y1(i)=y1(i)*yfac(i,1)
342 y2(i)=y2(i)*yfac(i,2)
344 yld(i) = y1(i) + fac*(y2(i)-y1(i))
345 yld(i) =
max(yld(i),em20)
346 dydx1(i)=dydx1(i)*yfac(i,1)
347 dydx2(i)=dydx2(i)*yfac(i,2)
348 h(i) = dydx1(i) + fac*(dydx2(i)-dydx1(i))
349 uvar(i,j1+4) = ipos1(i)
350 uvar(i,j2+4) = ipos2(i)
352 y1(i)=tf(npf(ipm(10+j1,mat(1)))+1)
353 y2(i)=tf(npf(ipm(10+j2,mat(1)))+1)
354 y1(i)=y1(i)*yfac(i,1)
355 y2(i)=y2(i)*yfac(i,2)
356 yld(i) = (1.-fisokin1) * yld(i) +
357 . fisokin1 * (y1(i) + fac*(y2(i)-y1(i)))
368 svm(i)=sqrt(signxx(i)*signxx(i)
369 . +signyy(i)*signyy(i)
370 . -signxx(i)*signyy(i)
371 . +three*signxy(i)*signxy(i))
372 r =
min(one,yld(i)/
max(em20,svm(i)))
373 signxx(i)=signxx(i)*r
374 signyy(i)=signyy(i)*r
375 signxy(i)=signxy(i)*r
377 dpla_i(i) = off(i)*svm(i)*umr/(g31+h(i))
378 pla(i) = pla(i) + dpla_i(i)
379 s1=half*(signxx(i)+signyy(i))
380 dezz = dpla_i(i) * half*(signxx(i)+signyy(i)) / yld(i)
381 dezz=-(depsxx(i)+depsyy(i))*nnu11-nu31*dezz
382 thk(i) = thk(i) + dezz*thkly(i)*off(i)
383 IF(r<one) etse(i)= h(i)/(h(i)+e1)
386 ELSEIF(iflag(1)==1)
THEN
391 h(i) =
max(zero,h(i))
392 s1=signxx(i)+signyy(i)
393 s2=signxx(i)-signyy(i)
396 bb(i)=three_over_4*s2*s2+3.*s3*s3
397 svm(i)=sqrt(aa(i)+bb(i))
398 dezz = -(depsxx(i)+depsyy(i))*nnu11
399 thk(i) = thk(i) + dezz*thkly(i)*off(i)
406 IF(svm(i)>yld(i).AND.off(i)==one)
THEN
418 dpla_j(i)=(svm(i)-yld(i))/(g31+h(i))
419 etse(i)= h(i)/(h(i)+e1)
420 hk(i) = h(i)*(one-fisokin1)
427#include
"vectorize.inc"
431 yld_i =yld(i)+hk(i)*dpla_i(i)
432 dr(i) =half*e1*dpla_i(i)/yld_i
433 pp(i) =one/(one+dr(i)*nu11)
434 qq(i) =one/(one+three*dr(i)*nu21)
437 f =aa(i)*p2+bb(i)*q2-yld_i*yld_i
438 df =-(aa(i)*nu11*p2*pp(i)+three*bb(i)*nu21*q2*qq(i))
439 . *(e1-two*dr(i)*hk(i))/yld_i
441 df = sign(
max(abs(df),em20),df)
442 IF(dpla_i(i)>zero)
THEN
447 dpla_j(i)=
max(zero,dpla_i(i)-f/df)
456#include "vectorize.inc"
459 pla(i) = pla(i) + dpla_i(i)
460 s1=(signxx(i)+signyy(i))*pp(i)
461 s2=(signxx(i)-signyy(i))*qq(i)
462 signxx(i)=half*(s1+s2)
463 signyy(i)=half*(s1-s2)
464 signxy(i)=signxy(i)*qq(i)
465 dezz = - nu31*dr(i)*s1/e1
466 thk(i) = thk(i) + dezz*thkly(i)*off(i)
470 ELSEIF(iflag(1)==2)
THEN
475 h(i) =
max(zero,h(i))
476 svm2(i)=signxx(i)*signxx(i)
477 . +signyy(i)*signyy(i)
478 . -signxx(i)*signyy(i)
479 . +three*signxy(i)*signxy(i)
481 dezz = -(depsxx(i)+depsyy(i))*nnu11
482 thk(i) = thk(i) + dezz*thkly(i)*off(i)
489 yld2(i)=yld(i)*yld(i)
490 IF(svm2(i)>yld2(i).AND.off(i)==one)
THEN
504 . /(five*svm2(i)+three*(-signxx(i)*signyy(i)+signxy(i)*signxy(i)))
505 s1=(one-two*a)*signxx(i)+ a*signyy(i)
506 s2= a*signxx(i)+(one-two*a)*signyy(i)
507 s3=(one-three*a)*signxy(i)
511 dpla_i(i) = off(i)*(svm(i)-yld(i))/(g31+h(i))
513 hk(i) = h(i)*(one-fisokin1)
514 yld(i) =yld(i)+hk(i)*dpla_i(i)
519 svm(i)=sqrt( signxx(i)*signxx(i)
520 . +signyy(i)*signyy(i)
521 . -signxx(i)*signyy(i)
522 . +three*signxy(i)*signxy(i))
523 r =
min(one,yld(i)/
max(em20,svm(i)))
524 signxx(i)=signxx(i)*r
525 signyy(i)=signyy(i)*r
526 signxy(i)=signxy(i)*r
527 pla(i) = pla(i) + dpla_i(i)
528 dezz = dpla_i(i) * half*(signxx(i)+signyy(i)) / yld(i)
530 thk(i) = thk(i) + dezz*thkly(i)*off(i)
531 etse(i)= h(i)/(h(i)+e1)
538 IF(pla(i)>epsmax1.OR.epst(i)>epsf1)off(i)=four_over_5
545 IF (fisokin1/=zero)
THEN
547 dsxx = sigexx(i) - signxx(i)
548 dsyy = sigeyy(i) - signyy(i)
549 dsxy = sigexy(i) - signxy(i)
550 dexx = (dsxx - nux*dsyy)
551 deyy = (dsyy - nux*dsxx)
552 dexy = two*(one+nux)*dsxy
553 alpha = fisokin1*h(i)/(e1+h(i))/three
554 sigpxx =
alpha*(four*dexx+two*deyy)
555 sigpyy =
alpha*(four*deyy+two*dexx)
558 signxx(i) = signxx(i) + uvar(i,2)
559 signyy(i) = signyy(i) + uvar(i,3)
560 signxy(i) = signxy(i) + uvar(i,4)
561 uvar(i,2) = uvar(i,2) + sigpxx
562 uvar(i,3) = uvar(i,3) + sigpyy
563 uvar(i,4) = uvar(i,4) + sigpxy
subroutine sigeps86c(nel0, nuparam, nuvar, mfunc, kfunc, npf, npt0, ipt, iflag, tf, time, timestep, uparam, rho0, area, eint, thkly, israte, asrate, 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, epsd_pg, epsp, dpla_i)