28 SUBROUTINE m2cplr(JFT ,JLT ,EZZ ,OFF ,PLA ,
29 2 IPLA ,TEMP ,Z3 ,Z4 ,
30 3 IRTY ,ETSE ,GS ,EPSP ,
31 4 ISRATE ,YLD ,G ,A1 ,A2 ,
32 5 NU ,CA0 ,CB0 ,CN ,YMAX0 ,
33 6 EPCHK ,YOUNG ,CC ,EPDR ,ICC ,
34 7 DPLA ,TSTAR ,FISOKIN ,GAMA_IMP ,SIGNOR ,
35 8 HARDM ,NEL ,DEPSXX ,DEPSYY ,DEPSXY ,
36 9 DEPSYZ ,DEPSZX ,SIGNXX ,SIGNYY ,SIGNXY ,
37 A SIGNYZ ,SIGNZX ,SIGBAKXX ,SIGBAKYY ,SIGBAKXY,
38 B SIGOXX ,SIGOYY ,SIGOXY ,SIGOYZ ,SIGOZX ,
43#include "implicit_f.inc"
55 INTEGER JFT, JLT, IPLA,IRTY,ISRATE,NEL
56 INTEGER,
INTENT(IN) :: VP
59 . EZZ(*), OFF(*), PLA(*),TEMP(*),Z3,Z4,
60 . ETSE(*),GS(*),EPSP(*)
63 . CA0, CB0, CN, YOUNG, YLD(MVSIZ),
64 . CC, EPDR(MVSIZ), NU, EPCHK(MVSIZ),TSTAR(MVSIZ),
65 . DPLA(MVSIZ),FISOKIN,GAMA_IMP(*),SIGNOR(MVSIZ,5),
66 . hardm(*),depsxx(mvsiz),depsyy(mvsiz),depsxy(mvsiz),depsyz(mvsiz),
67 . depszx(mvsiz),signxx(nel),signyy(nel),signxy(nel),
68 . signyz(nel),signzx(nel),sigbakxx(nel),sigbakyy(nel),sigbakxy(nel),
69 . sigoxx(nel),sigoyy(nel),
70 . sigoxy(nel),sigoyz(nel),sigozx(nel)
75 INTEGER I, J, N, NINDX, INDEX(MVSIZ), NMAX,IKFLG
78 . A(MVSIZ), B(MVSIZ) , DPLA_I(MVSIZ), DPLA_J(MVSIZ), DR(MVSIZ),
79 . H(MVSIZ), NU1(MVSIZ), NU2(MVSIZ) , P(MVSIZ) , Q(MVSIZ),
80 . SVM(),CA(MVSIZ), CB(MVSIZ) , YMAX(MVSIZ) ,
81 . SVM2(MVSIZ),YLD2(MVSIZ),HI(MVSIZ) ,HK(MVSIZ) ,LOGEP(MVSIZ),
82 . NU11(MVSIZ),NU21(MVSIZ),ANU1(MVSIZ),BNU2(MVSIZ),H2(MVSIZ),
83 . ERR,F,DF,PLA_I,P2,Q2,R,S1,S2,S3,YLD_I,NNU1,NNU2,
84 . NU3,NU4,NU5,NU6,SIGZ,PP,AA,BB,C,S11,S22,S12,S1S2,S122,UMR,
85 . vm2,qq,small,mt,tm,beta,aaa ,hkin,
alpha,plap1
109 IF (fisokin > 0)
THEN
111 signxx(i)=signxx(i)-sigbakxx(i)
112 signyy(i)=signyy(i)-sigbakyy(i)
113 signxy(i)=signxy(i)-sigbakxy(i)
121 signxx(i)=signxx(i)+a1*depsxx(i)+a2*depsyy(i)
122 signyy(i)=signyy(i)+a2*depsxx(i)+a1*depsyy(i)
123 signxy(i)=signxy(i)+g*depsxy(i)
124 signyz(i)=signyz(i)+gs(i)*depsyz(i)
125 signzx(i)=signzx(i)+gs(i)*depszx(i)
137 IF (israte == 0.AND.vp
138 .
max( abs(depsxx(i)), abs(depsyy(i)), half*abs(depsxy(i)))
139 epsp(i) =
max(epsp(i),epdr(i))
140 logep(i) = log(epsp(i)/epdr(i))
142#include "vectorize.inc"
145 IF (tstar(i) == zero)
THEN
146 q(i) = (one + cc * logep(i))
148 q(i) = (one + cc * logep(i))*(one-exp(mt*log(tstar(i))))
150 q(i) =
max(q(i),em20)
153 IF (icc == 1) ymax(i) = ymax(i) * q(i)
155 ELSEIF (irty == 1)
THEN
157 IF (israte == 0.AND.vp == 2) epsp(i) =
max( abs(depsxx(i)),
158 . abs(depsyy(i)), half*abs(depsxy(i)))
159 epsp(i) =
max(epsp(i),em20)
160 logep(i) = log(epsp(i)/epdr(i))
164 q(i) = cc*exp((-z3+z4 * q(i))*temp(i))
165 IF (icc == 1) ymax(i)= ymax(i) + q(i)
173 IF (tstar(i) /= zero)
THEN
174 q(i) = one - exp(mt*log(tstar(i)))
175 q(i) =
max(q(i),em20)
187 IF (pla(i) == zero)
THEN
190 beta = cb(i)*(one-fisokin)
191 yld(i)= ca(i)+beta*exp(cn*log(pla(i)))
193 yld(i)=
min(yld(i),ymax(i))
203 svm(i)=sqrt(signxx(i)*signxx(i)
204 . +signyy(i)*signyy(i)
205 . -signxx(i)*signyy(i)
206 . +three*signxy(i)*signxy(i))
209#include "vectorize.inc"
211 r =
min(one,yld(i)/(svm(i)+em15))
213 signxx(i)=signxx(i)*r
214 signyy(i)=signyy(i)*r
215 signxy(i)=signxy(i)*r
216 dpla(i) = off(i) *
max(zero,(svm(i)-yld(i))/young)
217 s1=half*(signxx(i)+signyy(i))
218 ezz(i) = dpla(i) * s1 /yld(i)
219 pla(i) = pla(i) + dpla(i)
220 epchk(i) =
max(pla(i),epchk(i))
221 IF (yld(i) >=ymax(i))
THEN
224 h(i)=cn*cb(i)*exp((cn-one)*log(pla(i)+small))
226 etse(i)= h(i)/(h(i)+young)
230 ELSEIF (ipla == 1)
THEN
235 s1=signxx(i)+signyy(i)
236 s2=signxx(i)-signyy(i)
239 b(i)=three_over_4*s2*s2+three*s3*s3
240 svm(i)=sqrt(a(i)+b(i))
247 IF (svm(i) > yld(i) .AND. off(i) == one)
THEN
255 signxx(i)=signxx(i) + sigbakxx(i)
256 signyy(i)=signyy(i) + sigbakyy(i)
257 signxy(i)=signxy(i) + sigbakxy(i)
260 IF (impl_s > 0.AND.ikt > 0)
THEN
270#include "vectorize.inc"
275 IF (yld(i) >= ymax(i))
THEN
278 h(i)=cn*cb(i)*exp((cn-one)*log(pla(i)+small))
280 dpla_j(i)=(svm(i)-yld(i))/(three*g+h(i))
281 etse(i)= h(i)/(h(i)+young)
282 anu1(i) = a(i)*nu1(i)
283 bnu2(i) = three*b(i)*nu2(i)
289#include "vectorize.inc"
293 pla_i =pla(i)+dpla_i(i)
295 IF (pla_i == zero)
THEN
296 yld_i =
min(ymax(i),ca(i))
298 yld_i =
min(ymax(i),ca(i)+cb(i)*exp(cn*log(pla_i)))
300 dr(i) =half*young*dpla_i(i)/yld_i
301 p(i) =one/(one+dr(i)*nu1(i))
302 q(i) =one/(one+three*dr(i)*nu2(i))
305 f =a(i)*p2+b(i)*q2-yld_i*yld_i
306 df =-(anu1(i)*p2*p(i)+bnu2(i)*q2*q(i))
307 . *(young-dr(i)*h2(i))/yld_i
309 IF (dpla_i(i) > zero)
THEN
310 dpla_j(i)=
max(zero,dpla_i(i)-f/df)
318#include "vectorize.inc"
323 hk(i) = two_third*beta
324 aaa = three*hk(i)/young
325 nu11(i) = nu1(i) + aaa
326 nu21(i) = three*nu2(i) + aaa
327 anu1(i) = a(i)*nu11(i)
328 bnu2(i) = b(i)*nu21(i)
333#include "vectorize.inc"
337 pla_i =pla(i)+dpla_i(i)
340 IF (pla_i == zero)
THEN
341 yld_i =
min(ymax(i),ca(i))
343 yld_i =
min(ymax(i),ca(i)+beta*cb(i)*exp(cn*log(pla_i)))
345 dr(i) =half*young*dpla_i(i)/yld_i
346 p(i) =one/(one+dr(i)*nu11(i))
347 q(i) =one/(one+dr(i)*nu21(i))
350 f =a(i)*p2+b(i)*q2-yld_i*yld_i
351 df =-(anu1(i)*p2*p(i)+bnu2(i)*q2*q(i))
352 . *(young-dr(i)*h2(i))/yld_i
354 IF (dpla_i(i) > zero)
THEN
365#include "vectorize.inc"
369 epchk(i) =
max(pla(i),epchk(i))
371 s2=(signxx(i)-signyy(i))*q(i)
372 signxx(i)=half*(s1+s2)
373 signyy(i)=half*(s1-s2)
374 signxy(i)=signxy(i)*q(i)
375 ezz(i) = dr(i)*s1/young
378 ELSEIF (ipla == 2)
THEN
383 svm2(i)= signxx(i)*signxx(i)
384 . +signyy(i)*signyy(i)
385 . -signxx(i)*signyy(i)
386 . +three*signxy(i)*signxy(i)
394 yld2(i)=yld(i)*yld(i)
395 IF (svm2(i) > yld2(i) .AND. off(i) == one)
THEN
405#include "vectorize.inc"
408 IF (yld(i) >= ymax(i))
THEN
411 h(i)=cn*cb(i)*exp((cn-one)*log(pla(i)+small))
413 etse(i)= h(i)/(h(i)+young)
416 . /(five*svm2(i)+three*(-signxx(i)*signyy(i)+signxy(i)*signxy(i)))
417 s1=(one-two*aa)*signxx(i)+ aa*signyy(i)
418 s2=aa*signxx(i)+(one-two*aa)*signyy(i)
419 s3=(one-three*aa)*signxy(i)
423 dpla(i) = off(i)*(svm(i)-yld(i))/(three*g+h(i))
424 pla(i) = pla(i) + dpla(i)
426 yld(i) =yld(i)+h(i)*dpla(i)
429#include "vectorize.inc"
432 svm(i)=sqrt( signxx(i)*signxx(i)
433 . +signyy(i)*signyy(i)
434 . -signxx(i)*signyy(i)
435 . +three*signxy(i)*signxy(i))
436 r =
min(one,yld(i)/
max(em20,svm(i)))
437 signxx(i)=signxx(i)*r
438 signyy(i)=signyy(i)*r
439 signxy(i)=signxy(i)*r
440 ezz(i) = dpla(i) * half*(signxx(i)+signyy(i)) / yld(i)
450 IF (dpla(i) > zero)
THEN
454 yld(i) =
min(ymax(i),ca(i)+beta*cb(i)*exp(cn*log(pla_i)))
455 gama_imp(i)= three_half*dpla(i)/yld(i)
457 signor(i,4)=fisokin*h(i)
458 signor(i,5)=(one-fisokin)*h(i)
460 signor(i,1)=third*(two*signxx(i)-signyy(i))
461 signor(i,2)=third*(two*signyy(i)-signxx(i))
462 signor(i,3)=two*signxy
474#include "vectorize.inc"
480 IF (pla_i == zero)
THEN
483 yld(i) =
min(ymax(i),ca(i)+beta*cb(i)*exp(cn*log(pla_i)))
489 alpha = hkin*dpla(i)/yld(i)
490 sigbakxx(i) = sigbakxx(i) +
alpha*signxx(i)
491 sigbakyy(i) = sigbakyy(i) +
alpha*signyy(i)
492 sigbakxy(i) = sigbakxy(i) +
alpha*signxy(i)
494 signxx(i)=signxx(i) + sigbakxx(i)
495 signyy(i)=signyy(i) + sigbakyy(i)
496 signxy(i)=signxy(i) + sigbakxy(i)
subroutine m2cplr(jft, jlt, ezz, off, pla, ipla, temp, z3, z4, irty, etse, gs, epsp, israte, yld, g, a1, a2, nu, ca0, cb0, cn, ymax0, epchk, young, cc, epdr, icc, dpla, tstar, fisokin, gama_imp, signor, hardm, nel, depsxx, depsyy, depsxy, depsyz, depszx, signxx, signyy, signxy, signyz, signzx, sigbakxx, sigbakyy, sigbakxy, sigoxx, sigoyy, sigoxy, sigoyz, sigozx, vp)