31 . NEL ,NGL ,MAT ,PID ,NUPARAM ,UPARAM ,
33 . EXX ,EXY ,EXZ ,KXX ,KYY ,KZZ ,
34 . FA1 ,FA2 ,FA3 ,MA1 ,MA2 ,MA3 ,
35 . FOR ,MOM ,PM ,NUVAR ,UVAR ,NFUNC ,
36 . IFUNC ,TF ,NPF ,SIGY)
40#include "implicit_f.inc"
54 INTEGER ,
INTENT(IN) :: NEL,NUPARAM,NUVAR,NFUNC,IFUNC(NFUNC),
56 INTEGER ,
DIMENSION(NEL) ,
INTENT(IN) :: MAT,PID,
57 my_real ,
DIMENSION(NPROPM ,NUMMAT) ,
INTENT(IN) :: PM
58 my_real ,
DIMENSION(NPROPG ,NUMGEO) ,
INTENT(IN) :: GEO
59 my_real ,
DIMENSION(NUPARAM) ,
INTENT(IN) :: UPARAM
60 my_real ,
DIMENSION(NEL,NUVAR) :: uvar
61 my_real ,
DIMENSION(NEL,3) ::
for,mom
62 my_real ,
DIMENSION(NEL) :: off,pla,al,exx,exy,exz,kxx,kyy,kzz,
63 . fa1,fa2,fa3,ma1,ma2,ma3
67 my_real ,
DIMENSION(NEL) ,
INTENT(INOUT) :: sigy
71 INTEGER ,
DIMENSION(NEL) :: INDX,ICC,ISRATE,VFLAG,IPOS,IAD,ILEN
72 INTEGER :: I,J,IPID,NINDX
73 my_real :: dmg,fact,epif,frate,
alpha,epsdot
74 my_real ,
DIMENSION(NEL) :: e,g,g3,ca
75 . degmb,degfx,dmpm,dmpf,f1,m1,m2,m3,degsh,yeq,yld,yma2,yldmax,
76 . dwpla,epmax,epst,epsr1,epsr2,epdr,epsp,rho,epmx,dwelm,dwelf,rr,
77 . sh,sh10,sh20,sh0,sh1,sh2,asrate,yscale,dpla,dfdpla
81 IF (impl_s == 0 .OR. idyna > 0)
THEN
83 dmpm(i)=geo(16,pid(i))*al(i)
84 dmpf(i)=geo(17,pid(i))*al(i)
103 icc(i) = nint(uparam(10))
105 epif =
max(epif,epdr(i))
109 israte(i)= nint(uparam(13))
110 asrate(i)= uparam(14)
111 vflag(i) = nint(uparam(23))
112 yscale(i)= uparam(24)
114 rho(i) = pm(1,mat(i))
120 shf(i) = geo(37,ipid)
126 degmb(i) =
for(i,1)*exx(i)
127 degsh(i) =
for(i,2)*exy(i)+
for(i,3)*exz(i)
128 degfx(i) = mom(i,1)*kxx(i)+mom(i,2)*kyy(i)+mom(i,3)*kzz(i)
134 sh(i) = five_over_6*g(i)*a1(i)
135 yma2(i)= twelve*e(i)/al(i)**2
136 sh10(i)= yma2(i)*b1(i)
137 sh20(i)= yma2(i)*b2(i)
138 sh0(i) = (one - shf(i))*sh(i)
139 sh1(i) = sh0(i)*sh10(i)/(sh(i)+sh10(i)) + shf(i)*sh10(i)
140 sh2(i) = sh0(i)*sh20(i)/(sh(i)+sh20(i)) + shf(i)*sh20(i)
142 f1(i) =
for(i,1) + exx(i)*a1(i)*e(i)
143 for(i,2)=
for(i,2) + exy(i)*sh2(i)
144 for(i,3)=
for(i,3) + exz(i)*sh1(i)
145 m1(i) = mom(i,1) + kxx(i)*g(i) *b3(i)
146 m2(i) = mom(i,2) + kyy(i)*e(i)*b1(i)
147 m3(i) = mom(i,3) + kzz(i)*e(i)*b2(i)
148 epst(i) = f1(i)/a1(i)/e(i)
154 yeq(i) = f1(i)*f1(i) + three * a1(i) *
155 . (m1(i)*m1(i) /
max(b3(i),em20)
156 . + m2(i)*m2(i) /
max(b1(i),em20)
157 . + m3(i)*m3(i) /
max(b2(i),em20) )
158 yeq(i) =
max(em20, sqrt(yeq(i)) / a1(i) )
169 yld(i) = yscale(i)*finter(ifunc(1),pla(i),npf,tf,dfdpla(i))
178 yld(i) = yscale(i)*yld(i)
187 IF (pla(i) > zero)
THEN
189 yld(i) = yscale(i)*yld(i)
191 yld(i) = ca(i) + cb(i)*exp(cn(i)*log(pla(i)))
198 IF (epif > zero)
THEN
200 IF (epdr(i) > zero)
THEN
201 epsp(i) = abs(degmb(i) + degfx(i))/yeq(i)/a1(i)
202 IF (vflag(i) /= 1)
THEN
203 IF (israte(i) == 1)
THEN
205 epsdot =
alpha*abs(epsp(i)/
max(em20,dt1)) + (one-
alpha)*uvar(i,1)
208 epsdot = abs(epsp(i)/
max(em20,dt1))
213 frate = one + (epsdot*epdr(i))**cp(i)
214 IF (icc(i)== 1) yldmax(i) = yldmax(i) * frate
215 IF ((nfunc > 0) .AND. (ca(i) /= zero))
THEN
216 IF (pla(i)>zero)
THEN
217 yld(i) = yld(i) + (ca(i) + cb(i)*exp(cn(i)*log(pla(i))))*(frate-one)
219 yld(i) = yld(i) + ca(i)*(frate-one)
222 yld(i) = yld(i) * frate
233 yld(i) =
min(yld(i),yldmax(i))
235 rr(i) =
min(one, yld(i) / yeq(i))
237 dwelm(i) =(f1(i) +
for(i,1))*(f1(i)-
for(i,1)) / e(i)/a1(i)
238 degmb(i) = degmb(i)+ f1(i)*exx(i)
245 dwelf(i) =(m1(i)+mom(i,1))*(m1(i)-mom(i,1))/ g(i)/b3(i)+
246 . (m2(i)+mom(i,2))*(m2(i)-mom(i,2))/e(i)/b1(i)+
247 . (m3(i)+mom(i,3))*(m3(i)-mom(i,3))/e(i)/b2(i)
248 degfx(i) = degfx(i) + m1(i)*kxx(i) + m2(i)*kyy(i) + m3(i)*kzz(i)
252 dwpla(i) = degmb(i) + degfx(i) - dwelm(i) - dwelf(i)
253 degsh(i) = degsh(i) +
for(i,2)*exy(i) +
for(i,3)*exz(i)
254 fact = half*off(i)*al(i)
260 fact = dwpla(i)/yld(i)
261 dpla(i) = off(i)*
max(zero,half*fact/a1(i))
262 pla(i) = pla(i) + off(i)*
max(zero,half*fact/a1(i))
268 IF (off(i) < em01) off(i) = zero
269 IF (off(i) < one ) off(i) = off(i)*four_over_5
276 IF (off(i) == one)
THEN
278 IF (epst(i) > epsr1(i))
THEN
279 dmg = (epsr2(i) - epst(i)) / (epsr2(i) - epsr1(i))
289 IF (dmg == zero .or. pla(i) >= epmax(i))
THEN
296 IF (vflag(i) == 1)
THEN
298 epsdot = dpla(i)/
max(em20,dt1)
299 uvar(i,1) =
alpha*epsdot + (one -
alpha)*uvar(i,1)
305 IF (nindx > 0 .AND. imconv == 1)
THEN
309 WRITE(iout, 1000) ngl(i)
310 WRITE(istdo,1100) ngl(i),tt
311#include "lockoff.inc"
324 1000
FORMAT(1x,
'-- RUPTURE OF BEAM ELEMENT NUMBER ',i10)
325 1100
FORMAT(1x,
'-- RUPTURE OF BEAM ELEMENT :',i10,
' AT TIME :',g11.4)
subroutine sigeps44p(nel, ngl, mat, pid, nuparam, uparam, geo, off, pla, al, exx, exy, exz, kxx, kyy, kzz, fa1, fa2, fa3, ma1, ma2, ma3, for, mom, pm, nuvar, uvar, nfunc, ifunc, tf, npf, sigy)