30 SUBROUTINE m32plas(JFT ,JLT ,PM ,OFF ,EPSEQ ,
31 . IMAT ,DIR ,EZZ ,IPLA ,DT1C ,
32 . DPLA1 ,EPSPD ,NEL ,NGL ,HARDM ,
33 . SIGNXX ,SIGNYY ,SIGNXY ,SIGNYZ ,SIGNZX ,
34 . DEPSXX ,DEPSYY ,DEPSXY ,DEPSYZ ,DEPSZX )
38#include "implicit_f.inc"
55 INTEGER JFT, JLT,IMAT,IPLA,NEL
58 . PM(NPROPM,*), OFF(*), DIR(NEL,2), EPSEQ(*),
59 . ezz(*),dt1c(*),dpla1(*),epspd(*),hardm(*),
60 . signxx(nel),signyy(nel),signxy(nel),signyz(nel),signzx(nel),
61 . depsxx(mvsiz),depsyy(mvsiz),depsxy(mvsiz),depsyz(mvsiz),
67 INTEGER I,NMAX,J, NINDX, INDEX(MVSIZ),NGL(MVSIZ),
72 .
ymax,cm,epdr,epchk(mvsiz),
74 . seq,yld,scale, epsp,s11,s22,s12,g3(mvsiz),nu1,
75 . d11, d22, d12, dpla, dtinv, p,a,b,c,a1s1,a2s2,q,umr,
76 . s_11(mvsiz),s_22(mvsiz),s_12(mvsiz),s1,s2,s3,seqh(mvsiz),
77 . h(mvsiz),dpla_i(mvsiz),dpla_j(mvsiz),etse(mvsiz),nu2(mvsiz),
78 . nu3(mvsiz),nu4(mvsiz),nu5(mvsiz),nnu1(mvsiz),q12(mvsiz),
79 . q21(mvsiz),jq(mvsiz),jq2(mvsiz),a_1,a_2,a_3,
80 . st11(mvsiz),st22(mvsiz),st12(mvsiz),axx(mvsiz),ayy(mvsiz),
81 . a_xy(mvsiz),axy(mvsiz),b_1(mvsiz),b_2(mvsiz),b_3(mvsiz),
82 . yldp(mvsiz),dr,p_1,p_2,p_3,pp1,pp2,pp3,f,df,yld_i,a1,
83 . a2,epsmax,sige(mvsiz,5)
98 icc = nint(pm(49,imat))
109 d11 = dir(i,1)*dir(i,1)
110 d22 = dir(i,2)*dir(i,2)
111 d12 = dir(i,1)*dir(i,2)
112 s11 = d11*signxx(i) + d22*signyy(i) + two*d12*signxy(i)
113 s22 = d22*signxx(i) + d11*signyy(i) - two*d12*signxy(i)
114 s12 = d12*(signyy(i) - signxx(i)) + ( d11 - d22 )*signxy(i)
118 epsp =
max(abs(depsxx(i)),abs(depsyy(i)),half*abs(depsxy(i)))
119 dtinv= dt1c(i)/
max(dt1c(i)**2,em20)
121 epsp =
max(epsp ,epdr)
123 nnu1(i) = nu / (one - nu)
128 yld = ca*(ce+epseq(i))**cn*epsp**cm
133 seq = sqrt(a11*s11*s11 + a22*s22*s22
134 . -a1122*s11*s22 + a12*s12*s12)
135 scale =
min(one,yld /
max(seq ,em20))
136 signxx(i)=signxx(i)*scale
137 signyy(i)=signyy(i)*scale
138 signxy(i)=signxy(i)*scale
139 dpla = off(i)*
max(zero,(seq -yld )/e)
140 ezz(i) = - nu5(i)*dpla*half*(signxx(i)+signyy(i))/
max(em20,yld)
141 epseq(i) = epseq(i) + dpla
144 ELSEIF (ipla == 2)
THEN
150 d11 = dir(i,1)*dir(i,1)
151 d22 = dir(i,2)*dir(i,2)
152 d12 = dir(i,1)*dir(i,2)
153 s11 = d11*signxx(i) + d22*signyy(i) + two*d12*signxy(i)
154 s22 = d22*signxx(i) + d11*signyy(i) - two*d12*signxy(i)
155 s12 = d12*(signyy(i) - signxx(i)) + ( d11 - d22 )*signxy(i)
160 dtinv= dt1c(i)/
max(dt1c(i)**2,em20)
162 epsp =
max(epsp ,epdr)
167 yld =ca*(ce+epseq(i))**cn*epsp**cm
174 g3(i) = three_half*e/(one + nu)
175 p = -(s11+s22) * third
181 a = a1s1*s11 + a2s2*s22 - a1122*s11*s22 + a12*s12*s12
182 b = -q*(a1s1 + a2s2 - half*a1122*(s11+s22))
183 c = (a11+a22-a1122)*q*q
186 scale =
min(one,(-b + sqrt(
max(zero,b*b-a*c)))/
max(a ,em20))
189 signxx(i) = signxx(i)*scale - q
190 signyy(i) = signyy(i)*scale - q
191 signxy(i) = signxy(i)*scale
192 dpla = off(i)*seq*umr/
max(em20,g3(i))
193 ezz(i) = -nu5(i)*dpla*half*(signxx(i)+signyy(i)) / yld
194 epseq(i) = epseq(i) + dpla
198 ELSEIF (ipla == 1)
THEN
203 d11 = dir(i,1)*dir(i,1)
204 d22 = dir(i,2)*dir(i,2)
205 d12 = dir(i,1)*dir(i,2)
206 s_11(i) = d11*signxx(i) + d22*signyy(i) + two*d12*signxy(i)
207 s_22(i) = d22*signxx(i) + d11*signyy(i) - two*d12*signxy(i)
208 s_12(i) = d12*(signyy(i) - signxx(i))
209 nnu1(i) = nu / (one - nu)
213 epsp =
max(abs(depsxx(i)),abs(depsyy(i)),half*abs(depsxy
214 dtinv= dt1c(i)/
max(dt1c(i)**2,em20)
216 epsp =
max(epsp ,epdr)
221 s1=a11*s_11(i)*s_11(i)
222 s2=a22*s_22(i)*s_22(i)
223 s3=a1122*s_11(i)*s_22(i)
224 axy(i)=a12*s_12(i)*s_12(i)
225 seqh(i)=sqrt(s1+s2-s3+axy(i))
226 ezz(i) = -(depsxx(i)+depsyy(i))*nnu1(i)
227 g3(i) = three_half*e/(one+nu)
228 yldp(i) = ca*(ce+epseq(i))**cn*epsp**cm
230 IF (yldp(i) >=
ymax)
THEN
233 h(i)=ca*cn*(ce+epseq(i))**(cn-one)*epsp**cm
247 IF (seqh(i) > yldp(i) .AND. off(i) == one)
THEN
256#include "vectorize.inc"
259 dpla_j(i)= (seqh(i)-yldp(i))/(g3(i)+h(i))
260 etse(i)= h(i)/(h(i)+e)
263 nu4(i) = half*(one-nu)
267 s12=a1122-nu*(a11+a22)
268 s3=sqrt(nu2(i)*(a11-a22)*(a11-a22)+s12*s12)
269 IF (abs(s1) < em20)
THEN
272 q12(i)=-(a11-a22+s3)/s1
274 IF (abs(s2) < em20)
THEN
277 q21(i)=(a11-a22+s3)/s2
279 jq(i)=one/(one-q12(i)*q21(i))
283 a_1=(a11+a1122*q21(i)+b*q21(i))*jq2(i)
284 a_2=(a22+a1122*q12(i)+a*q12(i))*jq2(i)
285 a_3=(a+b)*jq2(i)*two+a1122*(jq2(i)*two-jq(i))
286 st11(i)=s_11(i)+s_22(i)*q12(i)
287 st22(i)=q21(i)*s_11(i)+s_22(i)
288 axx(i)=a_1*st11(i)*st11(i)
289 ayy(i)=a_2*st22(i)*st22(i)
290 a_xy(i)=a_3*st11(i)*st22(i)
299#include "vectorize.inc"
303 IF (dpla_i(i) > zero
THEN
304 yld_i =
min(yldp(i)+h(i)*dpla_i(i),
ymax)
305 dr =a1*dpla_i(i)/yld_i
306 p_1=one/(one+b_1(i)*dr)
308 p_2=one/(one+b_2(i)*dr)
310 p_3=one/(one+b_3(i)*dr)
312 f = axx(i)*pp1+ayy(i)*pp2-a_xy(i)*p_1*p_2+axy(i)*pp3
314 df = -((axx(i)*p_1-a_xy(i)*p_2*half)*pp1*b_1(i)+
315 . (ayy(i)*p_2-a_xy(i)*p_1*half)*pp2*b_2
316 . axy(i)*pp3*p_3*b_3(i))*(a1-dr*h(i))/yld_i
318 dpla_j(i)=
max(zero,dpla_i(i)-f*half/df)
327#include "vectorize.inc"
330 epseq(i) = epseq(i) + dpla_j(i)
331 yld_i =yldp(i)+h(i)*dpla_j(i)
333 dr =a1*dpla_j(i)/yld_i
334 p_1=one/(one+b_1(i)*dr)
335 p_2=one/(one+b_2(i)*dr)
336 p_3=one/(one+b_3(i)*dr)
339 s_11(i)=jq(i)*(s1-s2*q12(i))
340 s_22(i)=jq(i)*(s2-s1*q21(i))
342 s1=a11*s_11(i)+a22*s_22(i)
343 . -a1122*(s_11(i)+s_22(i))*half
344 ezz(i) = - nu5(i)*dpla_j(i)*s1/yld_i
346 p_1=a11*s_11(i)-s1*s_22(i)
347 p_2=a22*s_22(i)-s1*s_11(i)
354 IF (epseq(i) > epsmax .AND. off(i) == one)
THEN
369 CALL urotov(jft,jlt,sige,dir,nel)
379 IF (imconv == 1)
THEN
382 WRITE(iout, 1000) ngl(indx(i))
383 WRITE(istdo,1100) ngl(indx(i)),tt
384#include "lockoff.inc"
390 1000
FORMAT(1x,
'-- RUPTURE OF SHELL ELEMENT NUMBER ',i10)
391 1100
FORMAT(1x,
'-- RUPTURE OF SHELL ELEMENT :',i10,
' AT TIME :',g11.4)