31 1 NEL ,NUPARAM ,UPARAM ,IPM ,IMAT ,
32 2 OFF ,PLA ,DEPSXX ,DEPSXY ,DEPSXZ ,
33 3 SIGOXX ,SIGOXY ,SIGOXZ ,EPST ,EPSP ,
34 4 SIGNXX ,SIGNXY ,SIGNXZ ,ETSE ,NUVAR ,
35 5 UVAR ,IFUNC ,NVARTMP ,VARTMP ,NPF ,
36 6 TF ,NFUNC ,SIGY, NGL,IPT)
40#include
"implicit_f.inc"
53 INTEGER ,
INTENT(IN) :: IMAT,NGL(NEL),IPT
54 INTEGER ,
INTENT(IN) :: NEL,NUPARAM,NUVAR,
55 . NFUNC,IFUNC(NFUNC),NPF(*),NVARTMP
56 INTEGER ,
DIMENSION(NPROPMI,NUMMAT) ,
INTENT(IN) :: IPM
57 my_real ,
DIMENSION(NEL) ,
INTENT(IN) :: EPST,
58 . DEPSXX,DEPSXY,DEPSXZ,SIGOXX,SIGOXY,SIGOXZ
59 my_real ,
DIMENSION(*) ,
INTENT(IN) :: uparam
65 my_real ,
DIMENSION(NEL) ,
INTENT(OUT) :: signxx,signxy,signxz,etse
66 my_real ,
DIMENSION(NEL) ,
INTENT(INOUT) :: pla,off,epsp
67 INTEGER :: VARTMP(NEL,NVARTMP)
68 my_real ,
DIMENSION(NEL,NUVAR) ,
INTENT(INOUT):: UVAR
69 ,
DIMENSION(NEL) ,
INTENT(INOUT) :: SIGY
74 my_real :: svm,shfact,gs,epif,dmg,r,frate,
alpha,epsdot
75 INTEGER,
DIMENSION(NEL) :: ICC,ISRATE,VFLAG,IAD,IPOS,ILEN
76 my_real,
DIMENSION(NEL) :: E,NU,G,G3,YLD,YLDMAX,EPMAX,EPDR,
77 . EPSR1,EPSR2,CA,CB,CN,CP,ASRATE,YSCALE,DFDPLA,
82 iadbuf = ipm(7,imat)-1
84 e(i) = uparam(iadbuf+1)
85 nu(i) = uparam(iadbuf+2)
86 ca(i) = uparam(iadbuf+3)
87 yldmax(i)= uparam(iadbuf+4)
88 epmax(i) = uparam(iadbuf+5)
89 epsr1(i) = uparam(iadbuf+6)
90 epsr2(i) = uparam(iadbuf+7)
91 cb(i) = uparam(iadbuf+8)
92 cn(i) = uparam(iadbuf+9)
93 icc(i) = nint(uparam(iadbuf+10))
94 epdr(i) = uparam(iadbuf+11)
95 epif =
max(epif,epdr(i))
96 cp(i) = uparam(iadbuf+12)
97 g(i) = uparam(iadbuf+16)
98 g3(i) = uparam(iadbuf+18)
99 israte(i)= nint(uparam(iadbuf+13))
100 asrate(i)= uparam(iadbuf+14)
101 vflag(i) = nint(uparam(iadbuf+23))
102 yscale(i)= uparam(iadbuf+24)
103 IF (vflag(i) == 1)
THEN
113 signxx(i) = sigoxx(i) + e(i)*depsxx(i)
114 signxy(i) = sigoxy(i) + gs*depsxy(i)
115 signxz(i) = sigoxz(i) + gs*depsxz(i)
122 ipos(1:nel) = vartmp(1:nel,1)
123 iad(1:nel) = npf(ifunc(1)) / 2 + 1
124 ilen(1:nel) = npf(ifunc(1)+1) / 2 - iad(1:nel) - ipos(1:nel)
125 CALL vinter(tf,iad,ipos,ilen,nel,pla,dfdpla,yld)
126 vartmp(1:nel,1) = ipos(1:nel)
133 yld(i) = yscale(i)*yld(i)
142 IF (pla(i) > zero)
THEN
144 yld(i) = yscale(i)*yld(i)
146 yld(i) = ca(i) + cb(i)*exp(cn(i)*log(pla(i)))
153 IF (epif > zero)
THEN
155 IF (epdr(i) > zero)
THEN
156 frate = one + (epsp(i)*epdr(i))**cp(i)
157 IF (icc(i)== 1) yldmax(i) = yldmax(i) * frate
158 IF ((nfunc > 0) .AND. (ca(i) /= zero))
THEN
159 IF (pla(i)>zero)
THEN
160 yld(i) = yld(i) + (ca(i) + cb(i)*exp(cn(i)*log(pla(i))))*(frate-one)
162 yld(i) = yld(i) + ca(i)*(frate-one)
165 yld(i) = yld(i) * frate
174 yld(i) =
min(yld(i),yldmax(i))
176 svm = signxx(i)**2 + three*(signxy(i)**2 + signxz(i)**2)
177 IF (svm > yld(i)**2)
THEN
179 r =
min( one, yld(i) / svm)
180 signxx(i) = signxx(i)*r
181 signxy(i) = signxy(i)*r
182 signxz(i) = signxz(i)*r
183 dpla(i) = off(i)*svm*(one - r) / e(i)
184 pla(i) = pla(i) + off(i)*svm*(one - r) / e(i)
191 IF (off(i) < em01) off(i) = zero
192 IF (off(i) < one) off(i) = off(i)*four_over_5
198 IF (off(i) == one)
THEN
200 IF (epst(i) > epsr1(i))
THEN
201 dmg = (epsr2(i) - epst(i)) / (epsr2(i) - epsr1(i))
203 signxx(i) = signxx(i)*dmg
204 signxy(i) = signxy(i)*dmg
205 signxz(i) = signxz(i)*dmg
208 IF (dmg == zero .or. pla(i) >= epmax(i))
THEN
211 WRITE(iout, 1000) ngl(i),ipt
212 WRITE(istdo,1000) ngl(i),ipt
213!
#include "lockoff.inc"
215 IF (vflag(i) == 1)
THEN
217 epsdot = dpla(i)/
max(em20,dt1)
218 epsp(i) =
alpha*epsdot + (one -
alpha)*epsp(i)
226 1000
FORMAT(5x,
' FAILURE BEAM ELEMENT NUMBER',i3,
', INTEGRATION POINT NUMBER ',i3)
subroutine sigeps44pi(nel, nuparam, uparam, ipm, imat, off, pla, depsxx, depsxy, depsxz, sigoxx, sigoxy, sigoxz, epst, epsp, signxx, signxy, signxz, etse, nuvar, uvar, ifunc, nvartmp, vartmp, npf, tf, nfunc, sigy, ngl, ipt)