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,
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),hardm(*),
83 . seq_output(nel),dplanl(nel)
85 my_real,
DIMENSION(NEL),
INTENT(IN) :: loff
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,N,NINDX,NMAX,
111 . INDEX(MVSIZ),OPTE,IFUNCE,FUNC_TAB
113 . A,B,S12,DEZZ,S1,S2,S3,EPST,
114 . A_1,A_2,A_3,,P_2,P_3,PP1,PP2,,DR,DR0,
117 . axx(mvsiz),ayy(mvsiz),axy(mvsiz),a_xy(mvsiz),
118 . dydx(mvsiz),svm(mvsiz),
119 . 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 . f,df,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)
219 vol0 = vol(i) * rho0(i)
220 temp(i) = temp(i) + (eint(i,1)+ eint(i,2)) * rhocp/vol0
225 signxx(i)=sigoxx(i) - uvar(i,2) +a11(i)*depsxx(i)+a21(i)*depsyy(i)
226 signyy(i)=sigoyy(i) - uvar(i,3) +a21(i)*depsxx(i)+a11(i)*depsyy(i)
227 signxy(i)=sigoxy(i) - uvar(i,4) +g1(i) *depsxy(i)
228 signyz(i)=sigoyz(i)+gs(i)*depsyz(i)
229 signzx(i)=sigozx(i)+gs(i)*depszx(i)
231 soundsp(i) = sqrt(a11(i)/rho0(i))
237 epsp(i) = half*( abs(epspxx(i)+epspyy(i))
238 . + sqrt( (epspxx(i)-epspyy(i))*(epspxx(i)-epspyy(i))
239 . + epspxy(i)*epspxy(i) ) )
243 epst = half*( epsxx(i)+epsyy(i)
244 . + sqrt( (epsxx(i)-epsyy(i))*(epsxx(i)-epsyy(i))
245 . + epsxy(i)*epsxy(i) ) )
246 fail(i) =
max(zero,
min(one,(epsr2-epst)/(epsr2-epsr1)))
253 ipos(i,1) = nint(uvar(i,5))
254 ipos(i,2) = nint(uvar(i,6))
255 ipos(i,3) = nint(uvar(i,7))
267 yld(i) = fail(i)*yld(i)
268 yld(i) =
max(yld(i),em20)
269 h(i) = fail(i)*dydx(i)
270 uvar(i,5) = ipos(i,1)
271 uvar(i,6) = ipos(i,2)
272 uvar(i,7) = ipos(i,3)
275 IF(fisokin/=zero)
THEN
287 yld(i) = (one-fisokin) * yld(i) +
288 . fisokin * fail(i) * yfac * yk(i)
289 yld(i) =
max(yld(i),em20)
297 h(i) =
max(zero,h(i))
298 s1=a01*signxx(i)*signxx(i)
299 s2=a02*signyy(i)*signyy(i)
300 s3=a03*signxx(i)*signyy(i)
301 axy(i)=a12*signxy(i)*signxy(i)
302 svm(i)=sqrt(s1+s2-s3+axy(i))
304 dezz = -(depsxx(i)+depsyy(i))*nnu1
305 thk(i) = thk(i) + dezz*thkly(i)*off(i)
313 IF(svm(i)>yld(i).AND.off(i)==one)
THEN
324 dpla_j(i)=(svm(i)-yld(i))/(g31(i)+h(i))
325 etse(i)= h(i)/(h(i)+e1(i))
328 fhk = four_over_3*hk(i)/a11(i)
334 nu2 = 1.-nu1*nu1+fhk*fhk
338 s1=a01*nu1*two-a03-fa03
339 s2=a02*nu1*two-a03-fa03
340 s12=a03-nu1*(a01+a02)+fa03
341 s3=sqrt(nu2*(a01-a02)*(a01-a02)+s12*s12)
342 IF (abs(s1)<em20)
THEN
345 q12(i)=-(a01-a02+s3+fa01-fa02)/s1
347 IF (abs(s2)<em20)
THEN
350 q21(i)=(a01-a02+s3+fa01-fa02)/s2
352 jq(i)=one/(1-q12(i)*q21(i))
356 a_1=(a01+a03*q21(i)+b*q21(i))*jq2(i)
357 a_2=(a02+a03*q12(i)+a*q12(i))*jq2(i)
358 a_3=(a+b)*jq2(i)*two+a03*(jq2(i)*two-jq(i))
360 s22(i)=q21(i)*signxx(i)+signyy(i)
361 axx(i)=a_1*s11(i)*s11(i)
362 ayy(i)=a_2*s22(i)*s22
363 a_xy(i)=a_3*s11(i)*s22(i)
368 b_3(i)=a12*(nu4+half*fhk)
370 h(i) =
max(zero,h(i))
377 IF(dpla_i(i)>zero)
THEN
378 yld_i =yld(i)+h(i)*dpla_i(i)
379 dr =a11(i)*dpla_i(i)/yld_i
380 p_1=one/(one + b_1(i)*dr)
382 p_2=one/(one+b_2(i)*dr)
384 p_3=one/(one+b_3(i)*dr)
386 f =axx(i)*pp1+ayy(i)*pp2-a_xy(i)*p_1*p_2+axy(i)*pp3
388 df =-((axx(i)*p_1-a_xy(i)*p_2*half)*pp1*b_1(i)+
389 . (ayy(i)*p_2-a_xy(i)*p_1*half)*pp2*b_2(i)+
390 . axy(i)*pp3*p_3*b_3(i))*(a11(i)-dr*h(i))/yld_i
392 dpla_j(i)=
max(zero,dpla_i(i)-f*half/df)
404 pla(i) = pla(i) + dpla_j(i)
405 yld_i =yld(i)+h(i)*dpla_j(i)
408 p_1=one/(one + b_1(i)*dr)
409 p_2=one/(one + b_2(i)*dr)
410 p_3=one/(one + b_3(i)*dr)
413 signxx(i)=jq(i)*(s1-s2*q12(i))
414 signyy(i)=jq(i)*(s2-s1*q21(i))
415 signxy(i)=signxy(i)*p_3
416 s1=a01*signxx(i)+a02*signyy(i)
417 . -a03*(signxx(i)+signyy(i))*half
419 dezz = - nu5*dpla_j(i)*s1/yld_i
420 thk(i) = thk(i) + dezz*thkly(i)*off(i)
423 p_1=a01*signxx(i)-s1*signyy(i)
424 p_2=a02*signyy(i)-s1*signxx(i)
426 dr0 = two_third*dr0*hk(i)
427 uvar(i,2) = uvar(i,2) + (two*p_1+p_2)*dr0
428 uvar(i,3) = uvar(i,3) + (two*p_2+p_1)*dr0
429 uvar(i,4) = uvar(i,4) + half*p_3*dr0
434 IF(pla(i)>epsmax.AND.off(i)==one)off(i)=four_over_5
438 signxx(i) = signxx(i) + uvar(i,2)
439 signyy(i) = signyy(i) + uvar(i,3)
440 signxy(i) = signxy(i) + uvar(i,4)
467 nnu1 = nu / (one - nu)
489 vol0 = vol(i) * rho0(i)
490 temp(i) = temp(i) + (eint(i,1)+ eint(i,2)) * rhocp/vol0
495 signxx(i)=sigoxx(i) - uvar(i,2) +a1*depsxx(i)+a2*depsyy(i)
496 signyy(i)=sigoyy(i) - uvar(i,3) +a2*depsxx(i)+a1*depsyy(i)
497 signxy(i)=sigoxy(i) - uvar(i,4) +g *depsxy(i)
498 signyz(i)=sigoyz(i)+gs(i)*depsyz(i)
499 signzx(i)=sigozx(i)+gs(i)*depszx(i)
501 soundsp(i) = sqrt(a1/rho0(i))
507 epsp(i) = half*( abs(epspxx(i)+epspyy(i))
508 . + sqrt( (epspxx(i)-epspyy(i))*(epspxx(i)-epspyy(i))
509 . + epspxy(i)*epspxy(i) ) )
513 epst = half*( epsxx(i)+epsyy(i)
514 . + sqrt( (epsxx(i)-epsyy(i))*(epsxx(i)-epsyy(i))
515 . + epsxy(i)*epsxy(i) ) )
516 fail(i) =
max(zero,
min(one,(epsr2-epst)/(epsr2-epsr1)))
523 ipos(i,1) = nint(uvar(i,5))
524 ipos(i,2) = nint(uvar(i,6))
525 ipos(i,3) = nint(uvar(i,7))
536 yld(i) = fail(i)*yld(i)
537 yld(i) =
max(yld(i),em20)
538 h(i) = fail(i)*dydx(i)
539 uvar(i,5) = ipos(i,1)
540 uvar(i,6) = ipos(i,2)
541 uvar(i,7) = ipos(i,3)
544 IF(fisokin/=zero)
THEN
556 yld(i) = (one-fisokin) * yld(i) +
557 . fisokin * fail(i) * yfac * yk(i)
558 yld(i) =
max(yld(i),em20)
566 h(i) =
max(zero,h(i))
567 s1=a01*signxx(i)*signxx(i)
568 s2=a02*signyy(i)*signyy(i)
569 s3=a03*signxx(i)*signyy(i)
570 axy(i)=a12*signxy(i)*signxy(i)
571 svm(i)=sqrt(s1+s2-s3+axy(i))
573 dezz = -(depsxx(i)+depsyy(i))*nnu1
574 thk(i) = thk(i) + dezz*thkly(i)*off(i)
582 IF(svm(i)>yld(i).AND.off(i)==one)
THEN
593 dpla_j(i)=(svm(i)-yld(i))/(g3+h(i))
594 etse(i)= h(i)/(h(i)+e)
597 fhk = four_over_3*hk(i)/a1
603 nu2 = 1.-nu1*nu1+fhk*fhk
607 s1=a01*nu1*two-a03-fa03
608 s2=a02*nu1*two-a03-fa03
609 s12=a03-nu1*(a01+a02)+fa03
610 s3=sqrt(nu2*(a01-a02)*(a01-a02)+s12*s12)
611 IF (abs(s1)<em20)
THEN
614 q12(i)=-(a01-a02+s3+fa01-fa02)/s1
616 IF (abs(s2)<em20)
THEN
619 q21(i)=(a01-a02+s3+fa01-fa02)/s2
621 jq(i)=one/(1-q12(i)*q21(i))
625 a_1=(a01+a03*q21(i)+b*q21(i))*jq2(i)
626 a_2=(a02+a03*q12(i)+a*q12(i))*jq2(i)
627 a_3=(a+b)*jq2(i)*two+a03*(jq2(i)*two-jq(i))
628 s11(i)=signxx(i)+signyy(i)*q12(i)
629 s22(i)=q21(i)*signxx(i)+signyy(i)
630 axx(i)=a_1*s11(i)*s11(i)
631 ayy(i)=a_2*s22(i)*s22(i)
632 a_xy(i)=a_3*s11(i)*s22(i)
637 b_3(i)=a12*(nu4+half*fhk)
639 h(i) =
max(zero,h(i))
646 IF(dpla_i(i)>zero)
THEN
647 yld_i =yld(i)+h(i)*dpla_i(i)
648 dr =a1*dpla_i(i)/yld_i
649 p_1=one/(one + b_1(i)*dr)
651 p_2=one/(one+b_2(i)*dr)
653 p_3=one/(one+b_3(i)*dr)
655 f =axx(i)*pp1+ayy(i)*pp2-a_xy(i)*p_1*p_2+axy(i)*pp3
657 df =-((axx(i)*p_1-a_xy(i)*p_2*half)*pp1*b_1(i)+
658 . (ayy(i)*p_2-a_xy(i)*p_1*half)*pp2*b_2(i)+
659 . axy(i)*pp3*p_3*b_3(i))*(a1-dr*h(i))/yld_i
661 dpla_j(i)=
max(zero,dpla_i(i)-f*half/df)
672 pla(i) = pla(i) + dpla_j(i)
673 yld_i =yld(i)+h(i)*dpla_j(i)
676 p_1=one/(one + b_1(i)*dr)
677 p_2=one/(one + b_2(i)*dr)
678 p_3=one/(one + b_3(i)*dr)
681 signxx(i)=jq(i)*(s1-s2*q12(i))
682 signyy(i)=jq(i)*(s2-s1*q21(i))
683 signxy(i)=signxy(i)*p_3
684 s1=a01*signxx(i)+a02*signyy(i)
685 . -a03*(signxx(i)+signyy(i))*half
687 dezz = - nu5*dpla_j(i)*s1/yld_i
688 thk(i) = thk(i) + dezz*thkly(i)*off(i)
691 p_1=a01*signxx(i)-s1*signyy(i)
692 p_2=a02*signyy(i)-s1*signxx(i)
694 dr0 = two_third*dr0*hk(i)
695 uvar(i,2) = uvar(i,2) + (two*p_1+p_2)*dr0
696 uvar(i,3) = uvar(i,3) + (two*p_2+p_1)*dr0
697 uvar(i,4) = uvar(i,4) + half*p_3*dr0
702 IF(pla(i)>epsmax.AND.off(i)==one)off(i)=four_over_5
706 signxx(i) = signxx(i) + uvar
707 signyy(i) = signyy(i) + uvar(i,3)
722 s1 = a01*signxx(i)*signxx(i)
723 s2 = a02*signyy(i)*signyy(i)
724 s3 = a03*signxx(i)*signyy(i)
725 axy(i) = a12*signxy(i)*signxy(i)
726 svm(i) = sqrt(s1+s2-s3+axy
727 seq_output(i) = svm(i)
728 IF ((inloc > 0).AND.(loff(i) == one))
THEN
729 normxx = (two*a01*signxx(i) - a03*signyy(i))/(
max(two*svm(i),em20))
730 normyy = (two*a02*signyy(i) - a03*signxx(i))/(
max(two*svm(i),em20))
731 dezz =
max(dplanl(i),zero)*(normxx + normyy)
732 dezz = -nu*((signxx(i)-sigoxx(i)+signyy(i)-sigoyy(i))/e) - dezz
733 thk(i) = thk(i) + dezz*thkly(i)*off(i)