32 1 JFT ,JLT ,FOR ,MOM ,
33 2 THK ,EINT ,OFF ,DT1C ,ISRATE ,
34 3 G ,A1 ,A2 ,VOL0 ,NU ,
35 4 THK0 ,GS ,EPSP ,IOFC ,KFTS ,
36 5 NGL ,INDX ,IPLA ,IR ,IS ,
37 6 DEGMB ,DEGFX ,DEPSXX ,DEPSYY ,MX ,
38 7 DEPSXY ,DEPSYZ ,DEPSZX ,DEPBXX ,DEPBYY ,
39 8 DEPBXY ,SIGOXX ,SIGOYY ,SIGOXY ,SIGOYZ ,
40 9 SIGOZX ,MOMOXX ,MOMOYY ,MOMOXY ,SIGNXX ,
41 A SIGNYY ,SIGNXY ,SIGNYZ ,SIGNZX ,MOMNXX ,
42 B MOMNYY ,MOMNXY ,ETSE ,EXZ ,EYZ ,
43 C NEL ,IOFF_DUCT,NUVAR ,UVAR )
52#include "implicit_f.inc"
68!-----------------------------------------------
71 INTEGER JFT,JLT,IOFC,KFTS,IR,IS,NEL
72 INTEGER NGL(MVSIZ),INDX(MVSIZ),
74 INTEGER,
INTENT(IN) :: NUVAR
75 ,
DIMENSION(NEL,NUVAR) ,
INTENT(INOUT) :: UVAR
78 . FOR(NEL,5),MOM(NEL,3),EINT(JLT,2),
79 . OFF(*),DT1C(*),NU(*),G(*),A1(*),A2(*),
80 . VOL0(*),THK0(*),GS(*),EPSP(*)
82 . DEPSXX(NEL),DEPSYY(NEL),DEPSXY(NEL),
83 . depsyz(nel),depszx(nel),
84 . depbxx(nel),depbyy(nel),depbxy(nel),
85 . sigoxx(nel),sigoyy(nel),sigoxy(nel),
86 . sigoyz(nel),sigozx(nel),
87 . momoxx(nel),momoyy(nel),momoxy(nel),
88 . degmb(mvsiz),degfx(mvsiz),exz(*),eyz(*)
91 . signxx(nel),signyy(nel),signxy(nel),
92 . momnxx(nel),momnyy(nel),momnxy(nel),
93 . signyz(nel),signzx(nel),
95 TYPE(elbuf_struct_),
TARGET :: ELBUF_STR
96 type (matparam_struct_) ,
intent(in) :: mat_param
100 INTEGER ICC,IPLA,IFORM,ISRATE,NINDX,INDEX(MVSIZ)
101 INTEGER I,J,N,VP,NMAX
103 . F1(MVSIZ),F2(MVSIZ),F3(MVSIZ),F4(MVSIZ),F5(MVSIZ),Z3,Z4,
104 . M1(MVSIZ),M2(MVSIZ),M3(MVSIZ),T(MVSIZ),EPMX,
105 . DWELM(MVSIZ),DWELF(MVSIZ),CA(MVSIZ),CB(MVSIZ),CN,
106 . YMAX(MVSIZ),UNSYEQ(MVSIZ),DWPLA(MVSIZ),
107 . hh(mvsiz),rr(mvsiz),c1,c2,c3,cc,cp,
109 . s1(mvsiz),s2(mvsiz),svm(mvsiz),nnu1(mvsiz),nu1(mvsiz),
110 . nu2(mvsiz),nu3(mvsiz),dpla_j(mvsiz),sm1(mvsiz),sm2(mvsiz),
111 . am(mvsiz),bm(mvsiz),anm(mvsiz),bnm(mvsiz),qtier(mvsiz),
112 . num1(mvsiz),num2(mvsiz),an(mvsiz),bn(mvsiz),
113 . gama(mvsiz),gama2(mvsiz),lfn(mvsiz),qfn(mvsiz),qfnm(mvsiz),
114 . degmb_loc(mvsiz),degsh_loc(mvsiz),degfx_loc(mvsiz),yld(mvsiz),
115 . logep(mvsiz),plap(mvsiz)
116 my_real :: dpla_i,dr,a,b,f,df,yld_i,cp1,cq1,cp2,cq2,sm3,fnm,
117 . da,db,a_i,b_i,qn,sn1,sn2,s,mm1,mm2,
118 . dfnp,dfnq,dfmp,dfmq,dfnmp,dfnmq,xp,xq,xpg,xqg,
119 . qnm1,qnm2,fnp,fnq,fmp,fmq,fnmp,fnmq,s3,aa,bb,plap1,
120 . thk12,ezz,aaa,bbb,ccc,asrate,epdr,
121 . ms,fs,d1,d2,mt,tmelt,tref,tstar,ca_1,cb_1,ymax_1
122 my_real :: dpla(mvsiz)
123 TYPE(l_bufel_) ,
POINTER :: LBUF
127 LBUF => elbuf_str%BUFLY(1)%LBUF(ir,is,1)
129 iform = mat_param%iparam(1)
130 icc = mat_param%iparam(2)
131 vp = mat_param%iparam(3)
132 israte = mat_param%iparam(4)
137 c3 = one/mat_param%shear
139 ca_1 = mat_param%uparam(1)
140 cb_1 = mat_param%uparam(2)
141 cn = mat_param%uparam(3)
142 epmx = mat_param%uparam(4)
143 ymax_1 = mat_param%uparam(5)
144 cc = mat_param%uparam(6)
145 epdr = mat_param%uparam(7)
146 z3 = mat_param%uparam(10)
147 z4 = mat_param%uparam(11)
148 asrate = mat_param%uparam(9)
149 asrate =
min(one,asrate*dt1c(i))
151 tref = mat_param%therm%tref
152 tmelt = mat_param%therm%tmelt
153 cp = mat_param%therm%rhocp
154 IF (cp > zero) cp = one / cp
164 epdr =
max(epdr, em20)
166 epdr =
max(epdr*dt1, em20)
173 degsh_loc(i) = for(i,4)*eyz(i)+for(i,5)*exz(i)
174 degmb_loc(i) = degmb(i) - degsh_loc(i)
175 degfx_loc(i) = degfx(i)
177 f1(i) = sigoxx(i)+ a1(i)*depsxx(i)+a2(i)*depsyy(i)
178 f2(i) = sigoyy(i)+ a1(i)*depsyy(i)+a2(i)*depsxx(i)
179 f3(i) = sigoxy(i)+ g(i) *depsxy(i)
180 f4(i) = sigoyz(i) + gs(i)*depsyz(i)
181 f5(i) = sigozx(i) + gs(i)*depszx(i)
183 thk12 = thk0(i)*one_over_12
184 m1(i) = momoxx(i) + (a1(i)*depbxx(i)+a2(i)*depbyy(i))*thk12
185 m2(i) = momoyy(i) + (a1(i)*depbyy(i)+a2(i)*depbxx(i))*thk12
186 m3(i) = momoxy(i) + g(i)*depbxy(i)*thk12
191 . sqrt(
max(sixteen*(ms*ms + three*(m3(i)*m3(i) - m1(i)*m2(i)))
192 . + fs*fs + three*(f3(i)*f3(i) - f1(i)*f2(i)),em20))
204 plap(i) =
max(plap(i),epdr)
205 logep(i) = log(plap(i)/epdr)
208 IF (israte >= 1)
THEN
210 epspdt(i) = epsp(i)*dt1c(i)
211 epspdt(i) =
max(epspdt(i),em20)
212 logep(i) = log(epspdt(i)/epdr)
216 epspdt(i) = abs(degmb_loc(i)+degfx_loc(i)*thk0(i))*unsyeq(i)
217 epspdt(i) =
max(epspdt(i),em20)
218 logep(i) = log(epspdt(i)/epdr)
224 t(i) = tref + cp*(eint(i,1)+eint(i,2))/vol0(i)
227 IF (iform == zero)
THEN
230 epspdt(i) =
max(zero,epspdt(i))
231 tstar = (t(i)-tref)/(tmelt-tref)
232 IF (tstar > zero)
THEN
233 epspdt(i) = (one+cc * epspdt(i))*(one-tstar**mt)
235 epspdt(i) = (one+cc * epspdt(i))
237 epspdt(i) =
max(em20,epspdt(i))
238 IF (icc == 1) ymax(i) = ymax(i)*epspdt(i)
240 ELSEIF (iform == 1)
THEN
242 epspdt(i) = cc*exp((-z3+z4 * epspdt(i))*t(i))
243 IF (icc == 1) ymax(i) = ymax(i) + epspdt(i)
244 ca(i) = ca(i) + epspdt(i)
258 yld(i) = ca(i)+cb(i)*exp(cn * log(lbuf%PLA(i)+ em30))
259 yld(i) =
min(yld(i)*epspdt(i),ymax(i))
260 rr(i) =
min(one,yld(i)*unsyeq(i))
266 IF (rr(i) < one)
THEN
267 IF (yld(i) >= ymax(i))
THEN
270 hh(i) = cn*cb(i)*exp((cn-one)*log(lbuf%PLA(i)+em30))
272 etse(i) = hh(i)/(hh(i)+ym)
284 dwelm(i) = (f1(i)+sigoxx(i))*(c1*d1+c2*d2)+
285 . (f2(i)+sigoyy(i))*(c2*d1+c1*d2)+
286 . (f3(i)+sigoxy(i))*(c3*(f3(i)-sigoxy(i)))
287 degmb_loc(i) = degmb_loc(i)+f1(i)*depsxx(i)+f2(i)*depsyy(i)
297 . +(m2(i)+momoyy(i))*(c2*d1+c1*d2)
298 . +(m3(i)+momoxy(i))*(c3*(m3(i)-momoxy(i))) )
299 degfx_loc(i) = degfx_loc(i)+ m1(i)*depbxx(i)+m2(i)*depbyy(i)
304 dwpla(i) = degmb_loc(i)+degfx_loc(i)*thk0(i)-dwelm(i)-dwelf(i)
310 dpla(i) = off(i)*
max(zero,half*epspdt(i)*dwpla(i)/yld(i))
311 lbuf%PLA(i) = lbuf%PLA(i) + dpla(i)
312 aaa = abs(dwelm(i)+dwelf(i))
313 bbb =
max(zero,dwpla(i))
314 ccc =
max(em20,aaa+bbb)
315 ezz = - (depsxx(i) + depsyy(i)) * (nu(i)*aaa/(one-nu(i)) + bbb)/ccc
316 thk(i) = thk(i) * (one + ezz*off(i))
320 plap1 = dpla(i)/
max(em20,dt1c(i))
321 plap(i) = asrate * plap1 + (one - asrate) * plap(i)
333 yld(i) = ca(i)+cb(i)*exp(cn * log(lbuf%PLA(i)+ em30))
337 yld(i) =
min(yld(i)*epspdt(i),ymax(i))
341!-------------------------------------------------------------------------
344 ccc = exp(-twop6666666667*lbuf%PLA(i)*ym/yld(i))
345 gama(i) = two/(three-ccc)
346 gama2(i)= gama(i)*gama(i)
347 mm1 = thirty6*gama2(i)
348 mm2 = threep4641*gama(i)
349 qtier(i) = three*gama2(i)
350 nnu1(i) = nu(i)/(one-nu(i))
351 s1(i) = (f1(i)+f2(i))*half
352 s2(i) = (f1(i)-f2(i))*half
354 sm1(i) = (m1(i)+m2(i))*half
355 sm2(i) = (m1(i)-m2(i))*half
358 bn(i) = three*(s2(i)*s2(i)+s3*s3)
359 am(i) = sm1(i)*sm1(i)*mm1
360 bm(i) = three*(sm2(i)*sm2(i)+sm3*sm3)*mm1
361 anm(i) = s1(i)*sm1(i)*mm2
362 bnm(i) = three*(s2(i)*sm2(i)+s3*sm3)*mm2
363 svm(i) = sqrt(an(i)+bn(i)+am(i)+bm(i)+abs(anm(i)+bnm(i)))
364 ezz = -(depsxx(i)+depsyy(i))*nnu1(i)
365 thk(i) = thk(i) * (one + ezz*off(i))
373 IF (svm(i) > yld(i) .AND. off(i) == one)
THEN
383 nu1(i) = half*(one + nu(i))
384 nu2(i) = three_half *(one - nu(i))
385 nu3(i) = one - nnu1(i)
386 num1(i) = one + qtier(i)
387 num2(i) = fivep5*gama2(i)
389 qfn(i) = sixteenp5*gama2(i)*gama2(i)
391 IF (yld(i) >= ymax(i))
THEN
394 hh(i) = cn*cb(i)*exp((cn-one)*log(lbuf%PLA(i)+ em30))
396 etse(i) = hh(i)/(hh(i)+ym)
397 dpla_j(i) = (svm(i)-yld(i))/(three*g(i)*qtier(i)+hh(i))
406 yld_i = yld(i)+hh(i)*dpla_i
407 dr = a1(i)*dpla_i/yld_i
410 da = num1(i)+num2(i)*xp
411 db = num1(i)+num2(i)*xq
412 dfnp = lfn(i)+qfn(i)*xp
413 dfnq = lfn(i)+qfn(i)*xq
414 dfmp = onep8333*(xp+one)
415 dfmq = onep8333*(xq+one)
420 a = one+(da+num1(i))*xp
421 b = one+(db+num1(i))*xq
426 fnp = one+(dfnp+lfn(i))*xp
428 fmp = one+(dfmp+onep8333)*xp
429 fmq = one+(dfmq+onep8333)*xq
432 fnm = aa*fnmp*anm(i)+bb*fnmq*bnm(i)
438 cp1 = (fnp*an(i)+s*fnmp*anm(i)+fmp*am(i))*aa
439 cq1 = (fnq*bn(i)+s*fnmq*bnm(i)+fmq*bm(i))*bb
440 cp2 = (dfnp*an(i)+s*dfnmp*anm(i)+dfmp*am(i))*aa
441 cq2 = (dfnq*bn(i)+s*dfnmq*bnm(i)+dfmq*bm(i))*bb
442 xpg = two*nu1(i)*da*a_i
443 xqg = two*nu2(i)*db*b_i
444 f = cp1 +cq1-yld_i*yld_i
445 df =(cp2*nu1(i)+cq2*nu2(i)-cp1*xpg-cq1*xqg)*
446 . (a1(i)-dr*hh(i))/yld_i-two*hh(i)*yld_i
447 dpla_j(i) =
max(zero,dpla_i-f/df)
455 lbuf%PLA(i) = lbuf%PLA(i) + dpla_j(i)
457 yld_i = yld(i)+hh(i)*dpla_i
458 dr = a1(i)*dpla_i/yld_i
463 a = one+num1(i)*xp+num2(i)*xpg
464 b = one+num1(i)*xq+num2(i)*xqg
469 fnmp = one+qfnm(i)*xpg
470 fnmq = one+qfnm(i)*xqg
471 fnm = aa*fnmp*anm(i)+bb*fnmq*bnm(i)
479 qnm2 = qnm1*one_over_12
480 sn1 = (s1(i)*(one +qtier(i)*xp)-sm1(i)*s*xp)*a_i
481 sn2 = (s2(i)*qn-sm2(i)*qnm1)*b_i
482 s3 = (f3(i)*qn-m3(i)*qnm1)*b_i
483 mm1 = (sm1(i)*(one+xp)-s1(i)*s*xp*one_over_12)*a_i
484 mm2 = (sm2(i)*(one+xq)-s2(i)*qnm2)*b_i
485 m3(i) = (m3(i)*(one+xq)-f3(i)*qnm2)*b_i
491 ezz = - nu3(i)*dr*sn1/ym
492 thk(i) = thk(i) * (one + ezz*off(i))
497 plap1 = dpla_j(i)/
max(em20,dt1c(i))
498 plap(i) = asrate * plap1 + (one - asrate) * plap(i)
507 IF (off(i) < em01) off(i) = zero
508 IF (off(i) < one) off(i) = off(i)*four_over_5
514 IF (off(i) < one) cycle
515 IF (lbuf%PLA(i) < epmx) cycle
523 IF (inconv == 1)
THEN
526 WRITE(iout, 1000) ngl(indx(j))
527 WRITE(istdo,1100) ngl(indx(j)),tt
528#include "lockoff.inc"
546 1000
FORMAT(1x,
'-- RUPTURE OF SHELL ELEMENT NUMBER ',i10)
547 1100
FORMAT(1x,
'-- RUPTURE OF SHELL ELEMENT :',i10,
' AT TIME :',g11.4)
subroutine sigeps02g(elbuf_str, mat_param, jft, jlt, for, mom, thk, eint, off, dt1c, israte, g, a1, a2, vol0, nu, thk0, gs, epsp, iofc, kfts, ngl, indx, ipla, ir, is, degmb, degfx, depsxx, depsyy, mx, depsxy, depsyz, depszx, depbxx, depbyy, depbxy, sigoxx, sigoyy, sigoxy, sigoyz, sigozx, momoxx, momoyy, momoxy, signxx, signyy, signxy, signyz, signzx, momnxx, momnyy, momnxy, etse, exz, eyz, nel, ioff_duct, nuvar, uvar)