35 1 NEL ,NGL ,NUPARAM ,NUVAR ,NFUNC ,IFUNC ,NPF ,
36 2 TF ,TIMESTEP,TIME ,UPARAM ,UVAR ,RHO ,PLA ,
37 3 DPLA ,SOUNDSP ,EPSD ,OFF ,LOFF ,
38 4 DEPSXX ,DEPSYY ,DEPSZZ ,DEPSXY ,DEPSYZ ,DEPSZX ,
39 5 EPSPXX ,EPSPYY ,EPSPZZ ,EPSPXY ,EPSPYZ ,EPSPZX ,
40 6 SIGOXX ,SIGOYY ,SIGOZZ ,SIGOXY ,SIGOYZ ,SIGOZX ,
41 7 SIGNXX ,SIGNYY ,SIGNZZ ,SIGNXY ,SIGNYZ ,SIGNZX ,
42 8 SIGY ,ET ,VARNL ,INLOC ,DT ,
43 9 IPG ,NPG ,ELBUF_TAB)
51#include "implicit_f.inc"
62 INTEGER NEL,NUPARAM,NUVAR,NFUNC,INLOC,
63 . IPG,NPG,NPF(*),NGL(NEL),
66 . TIME,TIMESTEP,TF(*),UPARAM(NUPARAM)
67 my_real,
DIMENSION(NEL),
INTENT(IN) ::
69 . DEPSXX,DEPSYY,DEPSZZ,DEPSXY,DEPSYZ,DEPSZX,
70 . EPSPXX,EPSPYY,EPSPZZ,EPSPXY,EPSPYZ,EPSPZX,
71 . sigoxx,sigoyy,sigozz,sigoxy,sigoyz,sigozx
72 my_real ,
DIMENSION(NEL),
INTENT(OUT) ::
73 . soundsp,signxx,signyy,signzz,signxy,signyz,signzx
74 my_real,
DIMENSION(NEL) ::
76 my_real ,
DIMENSION(NEL),
INTENT(INOUT) ::
77 . pla,dpla,epsd,varnl,loff,off
78 my_real ,
DIMENSION(NEL,NUVAR),
INTENT(INOUT) ::
80 TYPE (ELBUF_STRUCT_),
TARGET :: ELBUF_TAB
84 INTEGER I,J,IRES,Ifail,NINDX,NINDX2,INDX(NEL),INDX2(NEL),
85 . ipos(nel),iad(nel),ilen(nel),ir,is,it
86 my_real dtmin,xscale_fail,yscale_fail,s1,s2,q,s11,
87 . s22,r_inter,dfdepsd(nel),fail(nel),seq(nel),
91 ires = nint(uparam(11))
94 ifail = nint(uparam(13))
101 xscale_fail = uparam(22)
102 yscale_fail = uparam(23)
109 1 nel ,ngl ,nuparam ,nuvar ,nfunc ,ifunc ,npf ,
110 2 tf ,timestep,time ,uparam ,uvar ,rho ,pla ,
111 3 dpla ,soundsp ,epsd ,off ,
112 4 depsxx ,depsyy ,depszz ,depsxy ,depsyz ,depszx ,
113 5 epspxx ,epspyy ,epspzz ,epspxy ,epspyz ,epspzx ,
114 6 sigoxx ,sigoyy ,sigozz ,sigoxy ,sigoyz ,sigozx ,
115 7 signxx ,signyy ,signzz ,signxy ,signyz ,signzx ,
121 1 nel ,ngl ,nuparam ,nuvar ,nfunc ,ifunc ,npf ,
122 2 tf ,timestep,time ,uparam ,uvar ,rho ,pla ,
123 3 dpla ,soundsp ,epsd ,off ,
124 4 depsxx ,depsyy ,depszz ,depsxy ,depsyz ,depszx ,
125 5 epspxx ,epspyy ,epspzz ,epspxy ,epspyz ,epspzx ,
126 6 sigoxx ,sigoyy ,sigozz ,sigoxy ,sigoyz ,sigozx ,
127 7 signxx ,signyy ,signzz ,signxy ,signyz ,signzx ,
137 IF (ifunc(4) > 0)
THEN
139 iad(1:nel) = npf(ifunc(4)) / 2 + 1
140 ilen(1:nel) = npf(ifunc(4)+1) / 2 - iad(1:nel) - ipos(1:nel)
141 CALL vinter2(tf,iad,ipos,ilen,nel,epsd/xscale_fail,dfdepsd,fail)
142 fail(1:nel) = yscale_fail*fail(1:nel)
148 IF (dtmin > zero .OR. ifunc(4)
THEN
152 IF ((dt(i) > em20).AND.(dt(i) < dtmin).AND.(off(i) == one))
THEN
159 IF ((ifunc(4) > 0).AND.(off(i) == one))
THEN
161 IF (loff(i) < em01) loff(i) = zero
162 IF (loff(i) < one) loff(i) = loff(i)*four_over_5
171 DO ir = 1, elbuf_tab%NPTR
172 DO is = 1, elbuf_tab%NPTS
173 DO it = 1, elbuf_tab%NPTT
175 IF (elbuf_tab%BUFLY(1)%LBUF(ir,is,it)%OFF(i)>zero) off(i) = one
182 !initialization
for checking complete failure of
the shell(all integration points)
187 IF (loff(i)>zero) off(i) = one
190 IF (loff(i) == one)
THEN
193 IF (seq(i) >= fail(i)) loff(i) = four_over_5
195 ELSEIF (ifail == 1)
THEN
196 IF (pla(i) >= fail(i)) loff(i) = four_over_5
198 ELSEIF (ifail == 2)
THEN
200 i1 = signxx(i)+signyy(i)+signzz(i)
201 i2 = signxx(i)*signyy(i)+signyy(i)*signzz(i)+signzz(i)*signxx(i)-
202 . signxy(i)*signxy(i)-signzx(i)*signzx(i)-signyz(i)*signyz(i)
203 i3 = signxx(i)*signyy(i)*signzz(i)-signxx(i)*signyz(i)*signyz(i)-
204 . signyy(i)*signzx(i)*signzx(i)-signzz(i)*signxy(i)*signxy(i
205 . two*signxy(i)*signzx(i)*signyz(i)
206 q = (three*i2 - i1*i1)/nine
207 r = (two*i1*i1*i1-nine*i1*i2+twenty7*i3)/cinquante4
208 r_inter =
min(r/sqrt(
max(em20,(-q**3))),one)
209 psi = acos(
max(r_inter,-one))
210 s11 = two*sqrt(-q)*cos(psi/three)+third*i1
211 s22 = two*sqrt(-q)*cos((psi+two*pi)/three)+third*i1
212 s33 = two*sqrt(-q)*cos((psi+four*pi)/three)+third*i1
229 IF ((s11>=fail(i)).OR.(abs(s33)>=fail(i))) loff(i) = four_over_5
231 ELSEIF (ifail == 3)
THEN
233 i1 = signxx(i)+signyy(i)+signzz(i)
234 i2 = signxx(i)*signyy(i)+signyy(i)*signzz(i)+signzz(i)*signxx(i)-
235 . signxy(i)*signxy(i)-signzx(i)*signzx(i)-signyz(i)*signyz(i)
236 i3 = signxx(i)*signyy(i)*signzz(i)-signxx(i)*signyz(i)*signyz(i)-
237 . signyy(i)*signzx(i)*signzx(i)-signzz(i)*signxy(i)*signxy(i)+
238 . two*signxy(i)*signzx(i)*signyz(i)
239 q = (three*i2 - i1*i1)/nine
240 r = (two*i1*i1*i1-nine*i1*i2+twenty7*i3)/cinquante4
241 r_inter =
min(r/sqrt(
max(em20,(-q**3))),one)
242 psi = acos(
max(r_inter,-one))
243 s11 = two*sqrt(-q)*cos(psi/three)+third*i1
244 s22 = two*sqrt(-q)*cos((psi+two*pi)/three)+third*i1
245 s33 = two*sqrt(-q)*cos((psi+four*pi)/three)+third*i1
262 IF (s11>=fail(i)) loff(i) = four_over_5
265 IF (loff(i) == four_over_5)
THEN
278 WRITE(iout, 1000) ngl(indx(j))
279 WRITE(istdo,1100) ngl(indx(j)),tt
280#include "lockoff.inc"
288 WRITE(iout, 2000) ngl
289 WRITE(istdo,2100) ngl(indx2(j)),ipg,tt
290#include "lockoff.inc"
294 1000
FORMAT(1x,
'MINIMUM TIMESTEP (PLAS_RATE) REACHED, DELETED SOLID ELEMENT ',i10)
295 1100
FORMAT(1x,
'MINIMUM TIMESTEP (PLAS_RATE) REACHED, DELETED SOLID ELEMENT ',i10,1x,
'AT TIME :',1pe12.4)
296 2000
FORMAT(1x,
'FAILURE (PLAS_RATE) IN SOLID ELEMENT ',i10,1x,
',GAUSS PT',i2)
297 2100
FORMAT(1x,
'FAILURE (PLAS_RATE) IN SOLID ELEMENT ',i10,1x,
',GAUSS PT',i2
'AT TIME :'
subroutine mat121_newton(nel, ngl, nuparam, nuvar, nfunc, ifunc, npf, tf, timestep, time, uparam, uvar, rho, pla, dpla, soundsp, epsd, off, depsxx, depsyy, depszz, depsxy, depsyz, depszx, epspxx, epspyy, epspzz, epspxy, epspyz, epspzx, sigoxx, sigoyy, sigozz, sigoxy, sigoyz, sigozx, signxx, signyy, signzz, signxy, signyz, signzx, sigy, et, seq)
subroutine mat121_nice(nel, ngl, nuparam, nuvar, nfunc, ifunc, npf, tf, timestep, time, uparam, uvar, rho, pla, dpla, soundsp, epsd, off, depsxx, depsyy, depszz, depsxy, depsyz, depszx, epspxx, epspyy, epspzz, epspxy, epspyz, epspzx, sigoxx, sigoyy, sigozz, sigoxy, sigoyz, sigozx, signxx, signyy, signzz, signxy, signyz, signzx, sigy, et, seq)
subroutine sigeps121(nel, ngl, nuparam, nuvar, nfunc, ifunc, npf, tf, timestep, time, uparam, uvar, rho, pla, dpla, soundsp, epsd, off, loff, depsxx, depsyy, depszz, depsxy, depsyz, depszx, epspxx, epspyy, epspzz, epspxy, epspyz, epspzx, sigoxx, sigoyy, sigozz, sigoxy, sigoyz, sigozx, signxx, signyy, signzz, signxy, signyz, signzx, sigy, et, varnl, inloc, dt, ipg, npg, elbuf_tab)