35 1 NEL, NUPARAM, NUVAR, TIME,
36 2 TIMESTEP, UPARAM, RHO0, AREA,
37 3 EINT, THKLY, EPSPXX, EPSPYY,
38 4 EPSPXY, EPSPYZ, EPSPZX, DEPSXX,
39 5 DEPSYY, DEPSXY, DEPSYZ, DEPSZX,
40 6 EPSXX, EPSYY, EPSXY, EPSYZ,
41 7 EPSZX, SIGOXX, SIGOYY, SIGOXY,
42 8 SIGOYZ, SIGOZX, SIGNXX, SIGNYY,
43 9 SIGNXY, SIGNYZ, SIGNZX, SIGVXX,
44 A SIGVYY, SIGVXY, SIGVYZ, SIGVZX,
45 B SOUNDSP, VISCMAX, THK, PLA,
46 C UVAR, OFF, NGL, ITABLE,
47 D ETSE, GS, SIGY, DPLA1,
48 E EPSP, TABLE, VOL, TEMPEL,
49 F DIE, COEF, NPF, NFUNC,
50 G IFUNC, TF, SHF, HARDM,
51 H SEQ_OUTPUT,INLOC, DPLANL, JTHE,
59#include "implicit_f.inc"
67 INTEGER,
INTENT(IN) :: JTHE
68 INTEGER NEL, NUPARAM, NUVAR, NGL(NEL),ITABLE(*),
71 . TIME,TIMESTEP,UPARAM(NUPARAM),
72 .
area(nel),rho0(nel),eint(nel,2),
73 . thkly(nel),pla(nel),
74 . epspxx(nel),epspyy(nel),
75 . epspxy(nel),epspyz(nel),epspzx(nel),
76 . depsxx(nel),depsyy(nel),
77 . depsxy(nel),depsyz(nel),depszx(nel),
78 . epsxx(nel) ,epsyy(nel) ,
79 . epsxy(nel) ,epsyz(nel) ,epszx(nel) ,
80 . sigoxx(nel),sigoyy(nel),
81 . sigoxy(nel),sigoyz(nel),sigozx(nel),shf(nel),
82 . gs(nel),vol(nel),tempel(nel),die(nel),coef(nel),hardm(*),
83 . seq_output(nel),dplanl(nel)
85 my_real,
DIMENSION(NEL),
INTENT(IN)
90 . signxx(nel),signyy(nel),
91 . signxy(nel),signyz(nel),signzx(nel),
92 . sigvxx(nel),sigvyy(nel),sigy(nel),
93 . sigvxy(nel),sigvyz(nel),sigvzx(nel),
94 . soundsp(nel),viscmax(nel),etse(nel)
98 my_real uvar(nel,nuvar), off(nel),thk(nel),
99 . dpla1(nel),epsp(nel)
103 INTEGER NPF(*), NFUNC, IFUNC(NFUNC)
110 INTEGER I,J,NXK,J1,J2,N,NINDX,NMAX,
111 . INDEX(MVSIZ),OPTE,IFUNCE,FUNC_TAB
113 . A,B,S12,FAC,DEZZ,SIGZ,S1,S2,,DPLA,VM2,EPST,
114 . A_1,A_2,A_3,P_1,P_2,P_3,PP1,PP2,PP3,DR,DR0,
117 . axx(mvsiz),ayy(mvsiz),axy(mvsiz),a_xy(mvsiz),
118 . dydx(mvsiz),svm(mvsiz),
119 . svm0(mvsiz),yld(mvsiz),yk(mvsiz),
120 . nnu1,nu,nu2,nu3,nu4,nu5,
121 . jq(mvsiz),jq2(mvsiz),
122 . epsmax,dpla_i(mvsiz),dpla_j(mvsiz),fail(mvsiz),
123 . epsr1,epsr2,s11(mvsiz),s22(mvsiz),
124 . b_1(mvsiz),b_2(mvsiz),b_3(mvsiz),q12(mvsiz),q21(mvsiz),
125 . err,f,df,pla_i,yld_i,h(mvsiz),
126 . fisokin,hk(mvsiz),fhk,fa01,fa02,fa03,nu1,xfac,yfac,ce,
127 . e1(mvsiz), a11(mvsiz),a21(mvsiz),g1(mvsiz),g31(mvsiz),
128 . dydxe(mvsiz),escale(mvsiz),einf,normxx,normyy
130 . temp(mvsiz), vol0, rhocp
132 .
DIMENSION(NEL,3) :: xx
133 INTEGER,
DIMENSION(NEL,3) :: IPOS
145 IF (opte==1.OR. ce > zero)
THEN
171 IF(pla(i) > zero)
THEN
173 escale(i) = finter(ifunc(ifunce),pla(i),npf,tf,dydxe(i))
174 e1(i) = escale(i)* e1(i)
175 a11(i) = e1(i)/(one - nu*nu)
177 g1(i) = half*e1(i)/(one+nu)
179 gs(i) = g1(i) * shf(i)
182 ELSEIF ( ce /= zero)
THEN
184 IF(pla(i) > zero)
THEN
185 e1(i) = e1(i)-(e1(i)-einf)*(one-exp(-ce*pla(i)))
186 a11(i) = e1(i)/(one - nu*nu)
188 g1(i) = half*e1(i)/(one+nu)
190 gs(i) = g1(i) * shf(i)
197 nnu1 = nu / (one - nu)
202! sigoxx(i) = sigoxx(i) - uvar(i,2)
223 vol0 = vol(i) * rho0(i)
225 . + coef(i)*rhocp*(eint(i,1)+ eint(i,2))/vol0
230 signxx(i)=sigoxx(i) - uvar(i,2) +a11(i)*depsxx(i)+a21(i)*depsyy(i)
231 signyy(i)=sigoyy(i) - uvar(i,3) +a21(i)*depsxx(i)+a11(i)*depsyy(i)
232 signxy(i)=sigoxy(i) - uvar(i,4) +g1(i) *depsxy(i)
233 signyz(i)=sigoyz(i)+gs(i)*depsyz(i)
234 signzx(i)=sigozx(i)+gs(i)*depszx(i)
236 soundsp(i) = sqrt(a11(i)/rho0(i))
242 epsp(i) = half*( abs(epspxx(i)+epspyy(i))
243 . + sqrt( (epspxx(i)-epspyy(i))*(epspxx(i)-epspyy(i))
244 . + epspxy(i)*epspxy(i) ) )
248 epst = half*( epsxx(i)+epsyy(i)
249 . + sqrt( (epsxx(i)-epsyy(i))*(epsxx(i)-epsyy(i))
250 . + epsxy(i)*epsxy(i) ) )
251 fail(i) =
max(zero,
min(one,(epsr2-epst)/(epsr2-epsr1)))
258 ipos(i,1) = nint(uvar(i,5))
260 ipos(i,3) = nint(uvar(i,7))
272 yld(i) = fail(i)*yld(i)
273 yld(i) =
max(yld(i),em20)
274 h(i) = fail(i)*dydx(i)
275 uvar(i,5) = ipos(i,1)
276 uvar(i,6) = ipos(i,2)
277 uvar(i,7) = ipos(i,3)
280 IF(fisokin/=zero)
THEN
292 yld(i) = (one-fisokin) * yld(i) +
293 . fisokin * fail(i) * yfac * yk(i)
294 yld(i) =
max(yld(i),em20)
302 h(i) =
max(zero,h(i))
303 s1=a01*signxx(i)*signxx
304 s2=a02*signyy(i)*signyy(i)
305 s3=a03*signxx(i)*signyy(i)
306 axy(i)=a12*signxy(i)*signxy(i)
307 svm(i)=sqrt(s1+s2-s3+axy(i))
309 dezz = -(depsxx(i)+depsyy(i))*nnu1
310 thk(i) = thk(i) + dezz*thkly(i)*off(i)
318 IF(svm(i)>yld(i).AND.off(i)==one)
THEN
329 dpla_j(i)=(svm(i)-yld(i))/(g31(i)+h(i))
330 etse(i)= h(i)/(h(i)+e1(i))
333 fhk = four_over_3*hk(i)/a11(i)
339 nu2 = 1.-nu1*nu1+fhk*fhk
343 s1=a01*nu1*two-a03-fa03
344 s2=a02*nu1*two-a03-fa03
345 s12=a03-nu1*(a01+a02)+fa03
346 s3=sqrt(nu2*(a01-a02)*(a01-a02)+s12*s12)
347 IF (abs(s1)<em20)
THEN
350 q12(i)=-(a01-a02+s3+fa01-fa02)/s1
352 IF (abs(s2)<em20)
THEN
355 q21(i)=(a01-a02+s3+fa01-fa02)/s2
357 jq(i)=one/(1-q12(i)*q21(i))
361 a_1=(a01+a03*q21(i)+b*q21(i))*jq2(i)
362 a_2=(a02+a03*q12(i)+a*q12(i))*jq2(i)
363 a_3=(a+b)*jq2(i)*two+a03*(jq2(i)*two-jq(i))
364 s11(i)=signxx(i)+signyy(i)*q12(i)
365 s22(i)=q21(i)*signxx(i)+signyy(i)
366 axx(i)=a_1*s11(i)*s11(i)
367 ayy(i)=a_2*s22(i)*s22(i)
368 a_xy(i)=a_3*s11(i)*s22(i)
373 b_3(i)=a12*(nu4+half*fhk)
375 h(i) =
max(zero,h(i))
382 IF(dpla_i(i)>zero)
THEN
383 yld_i =yld(i)+h(i)*dpla_i(i)
384 dr =a11(i)*dpla_i(i)/yld_i
385 p_1=one/(one + b_1(i)*dr)
387 p_2=one/(one+b_2(i)*dr)
389 p_3=one/(one+b_3(i)*dr)
391 f =axx(i)*pp1+ayy(i)*pp2-a_xy(i)*p_1*p_2+axy(i)*pp3
393 df =-((axx(i)*p_1-a_xy(i)*p_2*half)*pp1*b_1(i)+
394 . (ayy(i)*p_2-a_xy(i)*p_1*half)*pp2*b_2(i)+
395 . axy(i)*pp3*p_3*b_3(i))*(a11(i)-dr*h(i))/yld_i
397 dpla_j(i)=
max(zero,dpla_i(i)-f*half/df)
409 pla(i) = pla(i) + dpla_j(i)
410 yld_i =yld(i)+h(i)*dpla_j(i)
413 p_1=one/(one + b_1(i)*dr)
414 p_2=one/(one + b_2(i)*dr)
415 p_3=one/(one + b_3(i)*dr)
418 signxx(i)=jq(i)*(s1-s2*q12(i))
419 signyy(i)=jq(i)*(s2-s1*q21(i))
420 signxy(i)=signxy(i)*p_3
421 s1=a01*signxx(i)+a02*signyy(i)
422 . -a03*(signxx(i)+signyy(i))*half
424 dezz = - nu5*dpla_j(i)*s1/yld_i
425 thk(i) = thk(i) + dezz*thkly(i)*off(i)
428 p_1=a01*signxx(i)-s1*signyy(i)
429 p_2=a02*signyy(i)-s1*signxx(i)
431 dr0 = two_third*dr0*hk(i)
432 uvar(i,2) = uvar(i,2) + (two*p_1+p_2)*dr0
433 uvar(i,3) = uvar(i,3) + (two*p_2+p_1)*dr0
434 uvar(i,4) = uvar(i,4) + half*p_3*dr0
439 IF(pla(i)>epsmax.AND.off(i)==one)off(i)=four_over_5
443 signxx(i) = signxx(i) + uvar(i,2)
444 signyy(i) = signyy(i) + uvar(i,3)
445 signxy(i) = signxy(i) + uvar(i,4)
472 nnu1 = nu / (one - nu)
498 vol0 = vol(i) * rho0(i)
500 . + coef(i)*rhocp*(eint(i,1)+ eint(i,2))/vol0
505 signxx(i)=sigoxx(i) - uvar(i,2) +a1*depsxx(i)+a2*depsyy(i)
506 signyy(i)=sigoyy(i) - uvar(i,3) +a2*depsxx(i)+a1*depsyy(i)
507 signxy(i)=sigoxy(i) - uvar(i,4) +g *depsxy(i)
508 signyz(i)=sigoyz(i)+gs(i)*depsyz(i)
509 signzx(i)=sigozx(i)+gs(i)*depszx(i)
511 soundsp(i) = sqrt(a1/rho0(i))
517 epsp(i) = half*( abs(epspxx(i)+epspyy(i))
518 . + sqrt( (epspxx(i)-epspyy(i))*(epspxx(i)-epspyy(i))
519 . + epspxy(i)*epspxy(i) ) )
523 epst = half*( epsxx(i)+epsyy(i)
524 . + sqrt( (epsxx(i)-epsyy(i))*(epsxx(i)-epsyy(i))
525 . + epsxy(i)*epsxy(i) ) )
526 fail(i) =
max(zero,
min(one,(epsr2-epst)/(epsr2-epsr1)))
533 ipos(i,1) = nint(uvar(i,5))
534 ipos(i,2) = nint(uvar(i,6))
535 ipos(i,3) = nint(uvar(i,7))
547 yld(i) = fail(i)*yld(i)
548 yld(i) =
max(yld(i),em20)
549 h(i) = fail(i)*dydx(i)
550 uvar(i,5) = ipos(i,1)
551 uvar(i,6) = ipos(i,2)
552 uvar(i,7) = ipos(i,3)
555 IF(fisokin/=zero)
THEN
567 yld(i) = (one-fisokin) * yld(i) +
568 . fisokin * fail(i) * yfac * yk(i)
569 yld(i) =
max(yld(i),em20)
577 h(i) =
max(zero,h(i))
578 s1=a01*signxx(i)*signxx(i)
579 s2=a02*signyy(i)*signyy(i)
580 s3=a03*signxx(i)*signyy(i)
581 axy(i)=a12*signxy(i)*signxy(i)
582 svm(i)=sqrt(s1+s2-s3+axy(i))
584 dezz = -(depsxx(i)+depsyy(i))*nnu1
585 thk(i) = thk(i) + dezz*thkly(i)*off(i)
593 IF(svm(i)>yld(i).AND.off(i)==one)
THEN
604 dpla_j(i)=(svm(i)-yld(i))/(g3+h(i))
605 etse(i)= h(i)/(h(i)+e)
608 fhk = four_over_3*hk(i)/a1
614 nu2 = 1.-nu1*nu1+fhk*fhk
618 s1=a01*nu1*two-a03-fa03
619 s2=a02*nu1*two-a03-fa03
620 s12=a03-nu1*(a01+a02)+fa03
621 s3=sqrt(nu2*(a01-a02)*(a01-a02)+s12*s12)
622 IF (abs(s1)<em20)
THEN
625 q12(i)=-(a01-a02+s3+fa01-fa02)/s1
627 IF (abs(s2)<em20)
THEN
630 q21(i)=(a01-a02+s3+fa01-fa02)/s2
632 jq(i)=one/(1-q12(i)*q21(i))
636 a_1=(a01+a03*q21(i)+b*q21(i))*jq2(i)
637 a_2=(a02+a03*q12(i)+a*q12(i))*jq2(i)
638 a_3=(a+b)*jq2(i)*two+a03*(jq2(i)*two-jq(i))
639 s11(i)=signxx(i)+signyy(i)*q12(i)
640 s22(i)=q21(i)*signxx(i)+signyy(i)
641 axx(i)=a_1*s11(i)*s11(i)
642 ayy(i)=a_2*s22(i)*s22(i)
643 a_xy(i)=a_3*s11(i)*s22(i)
648 b_3(i)=a12*(nu4+half*fhk)
650 h(i) =
max(zero,h(i))
657 IF(dpla_i(i)>zero)
THEN
658 yld_i =yld(i)+h(i)*dpla_i(i)
659 dr =a1*dpla_i(i)/yld_i
660 p_1=one/(one + b_1(i)*dr)
662 p_2=one/(one+b_2(i)*dr)
664 p_3=one/(one+b_3(i)*dr)
666 f =axx(i)*pp1+ayy(i)*pp2-a_xy(i)*p_1*p_2+axy(i)*pp3
668 df =-((axx(i)*p_1-a_xy(i)*p_2*half)*pp1*b_1(i)+
669 . (ayy(i)*p_2-a_xy(i)*p_1*half)*pp2*b_2(i)+
670 . axy(i)*pp3*p_3*b_3(i))*(a1-dr*h(i))/yld_i
672 dpla_j(i)=
max(zero,dpla_i(i)-f*half/df)
683 pla(i) = pla(i) + dpla_j(i)
684 yld_i =yld(i)+h(i)*dpla_j(i)
687 p_1=one/(one + b_1(i)*dr)
688 p_2=one/(one + b_2(i)*dr)
689 p_3=one/(one + b_3(i)*dr)
692 signxx(i)=jq(i)*(s1-s2*q12(i))
693 signyy(i)=jq(i)*(s2-s1*q21(i))
694 signxy(i)=signxy(i)*p_3
695 s1=a01*signxx(i)+a02*signyy(i)
696 . -a03*(signxx(i)+signyy(i))*half
698 dezz = - nu5*dpla_j(i)*s1/yld_i
699 thk(i) = thk(i) + dezz*thkly(i)*off(i)
702 p_1=a01*signxx(i)-s1*signyy(i)
703 p_2=a02*signyy(i)-s1*signxx(i)
705 dr0 = two_third*dr0*hk(i)
706 uvar(i,2) = uvar(i,2) + (two*p_1+p_2)*dr0
707 uvar(i,3) = uvar(i,3) + (two*p_2+p_1)*dr0
708 uvar(i,4) = uvar(i,4) + half*p_3*dr0
713 IF(pla(i)>epsmax.AND.off(i)==one)off(i)=four_over_5
717 signxx(i) = signxx(i) + uvar(i,2)
718 signyy(i) = signyy(i) + uvar(i,3)
719 signxy(i) = signxy(i) + uvar(i,4)
733 s1 = a01*signxx(i)*signxx(i)
734 s2 = a02*signyy(i)*signyy(i)
735 s3 = a03*signxx(i)*signyy(i)
736 axy(i) = a12*signxy(i)*signxy(i)
737 svm(i) = sqrt(s1+s2-s3+axy(i))
738 seq_output(i) = svm(i)
739 IF ((inloc > 0).AND.(loff(i) == one))
THEN
740 normxx = (two*a01*signxx(i) - a03*signyy(i))/(
max(two*svm(i),em20))
741 normyy = (two*a02*signyy(i) - a03*signxx(i))/(
max(two*svm(i),em20))
742 dezz =
max(dplanl(i),zero)*(normxx + normyy)
743 dezz = -nu*((signxx(i)-sigoxx(i)+signyy(i)-sigoyy(i))/e) - dezz
744 thk(i) = thk(i) + dezz*thkly(i)*off(i)