28 SUBROUTINE m2cplr(NEL ,EZZ ,OFF ,PLA ,
29 2 IPLA ,TEMP ,C3 ,C4 ,M_EXP ,
30 3 IFORM ,ETSE ,GS ,EPSP ,VP ,
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 ,DEPSXX ,DEPSYY ,DEPSXY ,
36 9 DEPSYZ ,DEPSZX ,SIGNXX ,SIGNYY ,SIGNXY ,
37 A SIGNYZ ,SIGNZX ,SIGBAKXX ,SIGBAKYY ,SIGBAKXY,
38 B SIGOXX ,SIGOYY ,SIGOXY ,SIGOYZ ,SIGOZX )
42#include "implicit_f.inc"
54 INTEGER ,
INTENT(IN) :: NEL
55 INTEGER ,
INTENT(IN) :: IPLA
56 INTEGER ,
INTENT(IN) :: IFORM
57 INTEGER ,
INTENT(IN) ::
58 INTEGER ,
INTENT(IN) :: ICC
59 INTEGER ,
INTENT(IN) :: VP
60 my_real ,
INTENT(IN) :: C3,C4
61 my_real ,
INTENT(IN) :: M_EXP
62 my_real ,
INTENT(IN) :: G
63 my_real ,
INTENT(IN) :: NU
64 my_real ,
INTENT(IN) :: a1
65 my_real ,
INTENT(IN) :: a2
66 my_real ,
INTENT(IN) :: ca0
67 my_real ,
INTENT(IN) :: cb0
68 my_real ,
INTENT(IN) :: cn
69 my_real ,
INTENT(IN) :: ymax0
70 my_real ,
INTENT(IN) :: young
71 my_real ,
INTENT(IN) :: cc
72 my_real ,
INTENT(IN) :: epdr
73 my_real ,
INTENT(IN) :: fisokin
74 my_real,
DIMENSION(NEL) ,
INTENT(IN) :: depsxx,depsyy,depsxy,depsyz,depszx
75 my_real,
DIMENSION(NEL) ,
INTENT(IN) :: sigoxx,sigoyy,sigoxy,sigoyz,sigozx
76 my_real,
DIMENSION(NEL) ,
INTENT(IN) :: gs
77 my_real,
DIMENSION(NEL) ,
INTENT(IN) :: tstar
78 my_real,
DIMENSION(NEL) ,
INTENT(INOUT) :: signxx,signyy,signxy,signyz,signzx
79 my_real,
DIMENSION(NEL) ,
INTENT(INOUT) :: sigbakxx,sigbakyy,sigbakxy,hardm
80 my_real,
DIMENSION(NEL) ,
INTENT(INOUT) :: ezz,off,pla,etse,epchk,yld,epsp
81 my_real,
DIMENSION(NEL) ,
INTENT(INOUT) :: temp,dpla,gama_imp
82 my_real,
DIMENSION(NEL,5),
INTENT(INOUT) :: signor
86 INTEGER :: I,J,,NINDX,NMAX
87 INTEGER :: INDEX(MVSIZ)
88 my_real :: f,df,pla_i,p2,q2,r,s1,s2,s3,yld_i,small,beta,aa,aaa,hkin,
alpha
89 my_real :: a(mvsiz), b(mvsiz) ,dpla_i(mvsiz), dpla_j(mvsiz), dr(mvsiz),
90 . h(mvsiz), nu1(mvsiz), nu2(mvsiz) ,p(mvsiz) ,q(mvsiz),
91 . svm(mvsiz),ca(mvsiz), cb(mvsiz) ,
ymax(mvsiz) ,
92 . svm2(mvsiz),yld2(mvsiz),hi(mvsiz),hk(mvsiz),logep(mvsiz),
93 . nu11(mvsiz),nu21(mvsiz),anu1(mvsiz),bnu2(mvsiz),h2(mvsiz)
114 IF (fisokin > zero)
THEN
116 signxx(i)=signxx(i)-sigbakxx(i)
117 signyy(i)=signyy(i)-sigbakyy(i)
118 signxy(i)=signxy(i)-sigbakxy(i)
125 signxx(i)=signxx(i)+a1*depsxx(i)+a2*depsyy(i)
126 signyy(i)=signyy(i)+a2*depsxx(i)+a1*depsyy(i)
127 signxy(i)=signxy(i)+g*depsxy(i)
128 signyz(i)=signyz(i)+gs(i)*depsyz(i)
129 signzx(i)=signzx(i)+gs(i)*depszx(i)
140 IF (israte == 0.AND.vp == 2) epsp(i) =
141 .
max( abs(depsxx(i)), abs(depsyy(i)), half*abs(depsxy(i)))
142 epsp(i) =
max(epsp(i),epdr)
143 logep(i) = log(epsp(i)/epdr)
145#include "vectorize.inc"
147 IF (tstar(i) == zero)
THEN
148 q(i) = (one + cc * logep(i))
150 q(i) = (one + cc * logep(i))*(one-exp(m_exp*log(tstar(i))))
152 q(i) =
max(q(i),em20)
155 IF (icc == 1)
ymax(i) =
ymax(i) * q(i)
157 ELSEIF (iform == 1)
THEN
159 IF (israte == 0 .AND. vp == 2) epsp(i) =
max( abs(depsxx(i)),
160 . abs(depsyy(i)), half*abs(depsxy(i)))
161 epsp(i) =
max(epsp(i),em20)
162 logep(i) = log(epsp(i)/epdr)
166 q(i) = cc*exp((-c3 + c4*q(i))*temp(i))
167 IF (icc == 1)
ymax(i) =
ymax(i) + q(i)
174 IF (tstar(i) /= zero)
THEN
175 q(i) = one - exp(m_exp*log(tstar(i)))
176 q(i) =
max(q(i),em20)
188 IF (pla(i) == zero)
THEN
191 beta = cb(i)*(one-fisokin)
192 yld(i)= ca(i)+beta*exp(cn*log(pla(i)))
204 svm(i)=sqrt(signxx(i)*signxx(i)
205 . +signyy(i)*signyy(i)
206 . -signxx(i)*signyy(i)
207 . +three*signxy(i)*signxy(i))
210#include "vectorize.inc"
212 r =
min(one,yld(i)/(svm(i)+em15))
214 signxx(i)=signxx(i)*r
215 signyy(i)=signyy(i)*r
216 signxy(i)=signxy(i)*r
217 dpla(i) = off(i) *
max(zero,(svm(i)-yld(i))/young)
218 s1=half*(signxx(i)+signyy(i))
219 ezz(i) = dpla(i) * s1 /yld(i)
220 pla(i) = pla(i) + dpla(i)
221 epchk(i) =
max(pla(i),epchk(i))
222 IF (yld(i) >=
ymax(i))
THEN
225 h(i)=cn*cb(i)*exp((cn-one)*log(pla(i)+small))
227 etse(i)= h(i)/(h(i)+young)
231 ELSEIF (ipla == 1)
THEN
236 s1=signxx(i)+signyy(i)
237 s2=signxx(i)-signyy(i)
240 b(i)=three_over_4*s2*s2+three*s3*s3
241 svm(i)=sqrt(a(i)+b(i))
248 IF (svm(i) > yld(i) .AND. off(i) == one)
THEN
254 IF (fisokin > zero)
THEN
256 signxx(i)=signxx(i) + sigbakxx(i)
257 signyy(i)=signyy(i) + sigbakyy(i)
258 signxy(i)=signxy(i) + sigbakxy(i)
261 IF (impl_s > 0.AND.ikt > 0)
THEN
271#include "vectorize.inc"
276 IF (yld(i) >=
ymax(i))
THEN
279 h(i)=cn*cb(i)*exp((cn-one)*log(pla(i)+small))
281 dpla_j(i)=(svm(i)-yld(i))/(three*g+h(i))
282 etse(i)= h(i)/(h(i)+young)
283 anu1(i) = a(i)*nu1(i)
284 bnu2(i) = three*b(i)*nu2(i)
288 IF (fisokin == zero)
THEN
290#include "vectorize.inc"
294 pla_i =pla(i)+dpla_i(i)
296 IF (pla_i == zero)
THEN
299 yld_i =
min(
ymax(i),ca(i)+cb(i)*exp(cn*log(pla_i)))
301 dr(i) =half*young*dpla_i(i)/yld_i
302 p(i) =one/(one+dr(i)*nu1(i))
303 q(i) =one/(one+three*dr(i)*nu2(i))
306 f =a(i)*p2+b(i)*q2-yld_i*yld_i
307 df =-(anu1(i)*p2*p(i)+bnu2(i)*q2*q(i))
308 . *(young-dr(i)*h2(i))/yld_i
310 IF (dpla_i(i) > zero)
THEN
311 dpla_j(i)=
max(zero,dpla_i(i)-f/df)
319#include "vectorize.inc"
324 hk(i) = two_third*beta
325 aaa = three*hk(i)/young
326 nu11(i) = nu1(i) + aaa
327 nu21(i) = three*nu2(i) + aaa
328 anu1(i) = a(i)*nu11(i)
329 bnu2(i) = b(i)*nu21(i)
334#include "vectorize.inc"
338 pla_i =pla(i)+dpla_i(i)
341 IF (pla_i == zero)
THEN
344 yld_i =
min(
ymax(i),ca(i)+beta*cb
346 dr(i) =half*young*dpla_i(i)/yld_i
347 p(i) =one/(one+dr(i)*nu11(i))
351 f =a(i)*p2+b(i)*q2-yld_i*yld_i
352 df =-(anu1(i)*p2*p(i)+bnu2(i)*q2*q(i))
353 . *(young-dr(i)*h2(i))/yld_i
355 IF (dpla_i(i) > zero)
THEN
356 dpla_j(i)=
max(zero,dpla_i(i)-f/df)
366#include "vectorize.inc"
369 pla(i) = pla(i) + dpla_i(i)
370 epchk(i) =
max(pla(i),epchk(i))
371 s1=(signxx(i)+signyy(i))*p(i)
372 s2=(signxx(i)-signyy(i))*q(i)
373 signxx(i)=half*(s1+s2)
374 signyy(i)=half*(s1-s2)
375 signxy(i)=signxy(i)*q(i)
376 ezz(i) = dr(i)*s1/young
379 ELSEIF (ipla == 2)
THEN
384 svm2(i)= signxx(i)*signxx(i)
385 . +signyy(i)*signyy(i)
386 . -signxx(i)*signyy(i)
387 . +three*signxy(i)*signxy(i)
395 yld2(i)=yld(i)*yld(i)
396 IF (svm2(i) > yld2(i) .AND. off(i) == one)
THEN
406#include "vectorize.inc"
409 IF (yld(i) >=
ymax(i))
THEN
412 h(i)=cn*cb(i)*exp((cn-one)*log(pla(i)+small))
414 etse(i)= h(i)/(h(i)+young)
417 . /(five*svm2(i)+three*(-signxx(i)*signyy(i)+signxy(i)*signxy(i)))
418 s1=(one-two*aa)*signxx(i)+ aa*signyy(i)
419 s2=aa*signxx(i)+(one-two*aa)*signyy(i)
420 s3=(one-three*aa)*signxy(i)
424 dpla(i) = off(i)*(svm(i)-yld(i))/(three*g+h(i))
425 pla(i) = pla(i) + dpla(i)
427 yld(i) =yld(i)+h(i)*dpla(i)
430#include "vectorize.inc"
433 svm(i)=sqrt( signxx(i)*signxx(i)
434 . +signyy(i)*signyy(i)
435 . -signxx(i)*signyy(i)
436 . +three*signxy(i)*signxy(i))
437 r =
min(one,yld(i)/
max(em20,svm(i)))
438 signxx(i)=signxx(i)*r
439 signyy(i)=signyy(i)*r
440 signxy(i)=signxy(i)*r
441 ezz(i) = dpla(i) * half*(signxx(i)+signyy(i)) / yld(i)
451 IF (dpla(i) > zero)
THEN
455 yld(i) =
min(
ymax(i),ca(i)+beta*cb(i)*exp(cn*log(pla_i)))
456 gama_imp(i)= three_half*dpla(i)/yld(i)
458 signor(i,4)=fisokin*h(i)
459 signor(i,5)=(one-fisokin)*h(i)
461 signor(i,1)=third*(two*signxx(i)-signyy(i))
462 signor(i,2)=third*(two*signyy(i)-signxx(i))
463 signor(i,3)=two*signxy(i)
473 IF (fisokin > zero)
THEN
475#include "vectorize.inc"
481 IF (pla_i == zero)
THEN
484 yld(i) =
min(
ymax(i),ca(i)+beta*cb(i)*exp(cn*log(pla_i)))
490 alpha = hkin*dpla(i)/yld(i)
491 sigbakxx(i) = sigbakxx(i) +
alpha*signxx(i)
492 sigbakyy(i) = sigbakyy(i) +
alpha*signyy(i)
493 sigbakxy(i) = sigbakxy(i) +
alpha*signxy(i)
495 signxx(i)=signxx(i) + sigbakxx(i)
496 signyy(i)=signyy(i) + sigbakyy(i)
497 signxy(i)=signxy(i) + sigbakxy(i)
503 hardm(1:nel) = h(1:nel)
subroutine m2cplr(nel, ezz, off, pla, ipla, temp, c3, c4, m_exp, iform, etse, gs, epsp, vp, israte, yld, g, a1, a2, nu, ca0, cb0, cn, ymax0, epchk, young, cc, epdr, icc, dpla, tstar, fisokin, gama_imp, signor, hardm, depsxx, depsyy, depsxy, depsyz, depszx, signxx, signyy, signxy, signyz, signzx, sigbakxx, sigbakyy, sigbakxy, sigoxx, sigoyy, sigoxy, sigoyz, sigozx)