35 . NEL ,NUPARAM,NUVAR ,UPARAM ,UVAR ,
36 . GS ,ET ,DEPSXX ,DEPSYY ,DEPSXY ,
37 . EPSXX ,EPSYY ,EPSXY ,EPSYZ ,EPSZX ,
38 . SIGOXX ,SIGOYY ,SIGOXY ,SIGOYZ ,SIGOZX ,
39 . SIGNXX ,SIGNYY ,SIGNXY ,SIGNYZ ,SIGNZX ,
40 . NUMTABL,ITABLE ,TABLE )
50#include "implicit_f.inc"
58 INTEGER ,
INTENT(IN) :: NEL,NUPARAM,NUVAR,NUMTABL
59 INTEGER ,
DIMENSION(NUMTABL),
INTENT(IN) :: ITABLE
60 my_real ,
INTENT(IN) :: GS
61 my_real ,
DIMENSION(NUPARAM) ,
INTENT(IN) :: UPARAM
62 my_real ,
DIMENSION(NEL) ,
INTENT(IN) :: DEPSXX,DEPSYY,DEPSXY,
63 . EPSXX,EPSYY,EPSXY,EPSYZ,,SIGOXX,SIGOYY,SIGOXY,SIGOYZ,SIGOZX
64 my_real ,
DIMENSION(NEL) ,
INTENT(OUT) ::
65 . signxx,signyy,signxy,signyz,signzx,et
66 my_real ,
DIMENSION(NEL,NUVAR) ,
INTENT(INOUT) :: uvar
67 TYPE(
ttable),
DIMENSION(NTABLE) :: TABLE
71 INTEGER :: I,II,NINDXU,NINDXL,NINDXR,NINDXT,NINDXC,NREAC,FUNC
73 my_real :: nu12,nu21,g12,a11,a12,a22,rcomp,
74 . fscale,fscale1,fscale2,fscalet,dw,ht,hf,
75 . det,s,d,t,p1,p2,r,dezz,svm2,xint,yint
76 INTEGER ,
DIMENSION(NEL) :: INDXU,INDXL,INDXR,INDXT,INDXC,INDXX
77 my_real ,
DIMENSION(NEL) :: epsq,svm,etx,etl,etu,exx,eyy,dx,dy,
78 . sigf,emax,smax,eminrl,sminrl,emaxrl,smaxrl,beta
79 INTEGER ,
DIMENSION(NEL,1) :: IPOS1
80 my_real ,
DIMENSION(NEL,1) :: XX1
105 ireload = nint(uparam(21))
106 det = one / (one - nu12*nu21)
117 emax(1:nel) = uvar(1:nel,1)
118 smax(1:nel) = uvar(1:nel,2)
119 eminrl(1:nel) = uvar(1:nel,3)
121 sminrl(1:nel) = uvar(1:nel,5)
122 smaxrl(1:nel) = uvar(1:nel,6)
127 s = half*(epsxx(i) + epsyy(i))
128 d = half*(epsxx(i) - epsyy(i))
129 r = sqrt(epsxy(i)**2 + d*d)
132 IF (p1 > zero .and. p1 >= -p2)
THEN
133 IF (nint(uvar(i,7)) == 1)
THEN
151 signxy(i) = g12*epsxy(i) * beta(i)
152 signyz(i) = gs *epsyz(i) * beta(i)
153 signzx(i) = gs *epszx(i) * beta(i)
161 signxx(i) = (a11*epsxx(i) + a12*epsyy(i))*beta(i)
162 signyy(i) = (a12*epsxx(i) + a22*epsyy(i))*beta(i)
167 IF (nindxt > 0 .and. fund == 0)
THEN
168 ndim = table(func)%NDIM
170 epsq(i) = sqrt((epsxx(i)**2 + epsyy(i)**2) / (one + nu21**2))
172 xx1(1:nel,1) = epsq(1:nel)
179 a11 = etl(i) * det * fscale1
182 signxx(i) = sigoxx(i) + a11*depsxx(i) + a12*depsyy(i)
183 signyy(i) = sigoyy(i) + a12*depsxx(i) + a22*depsyy(i)
190 signxx(i) = (a11*epsxx(i) + a12*epsyy(i))*rcomp
191 signyy(i) = (a12*epsxx(i) + a22*epsyy(i))*rcomp
208 epsq(i) = sqrt((epsxx(i)**2 + epsyy(i)**2) / (one + nu21**2))
210 xx1(1:nel,1) = epsq(1:nel)
217 signxx(i) = (a11*epsxx(i) + a12*epsyy(i))*beta(i)
218 signyy(i) = (a12*epsxx(i) + a22*epsyy(i))*beta(i)
219 svm2 = signxx(i)**2 + signyy(i)**2 - signxx(i)*signyy(i)
233 ndim = table(func)%NDIM
235 epsq(i) = sqrt((epsxx(i)**2 + epsyy(i)**2) / (one + nu21**2))
238 xx1(1:nel,1) = epsq(1:nel)
245 a11 = etl(i) * det * fscale1
248 signxx(i) = sigoxx(i) + a11*depsxx(i) + a12*depsyy(i)
249 signyy(i) = sigoyy(i) + a12*depsxx(i) + a22*depsyy(i)
257 epsq(i) = sqrt((epsxx(i)**2 + epsyy(i)**2) / (one + nu21**2))
258 svm(i) = sqrt(signxx(i)**2 + signyy(i)**2 - signxx(i)*signyy(i))
263 dw = epsq(i) - uvar(i,8)
264 IF (dw < zero .and. uvar(i,10) >= zero)
THEN
267 ELSE IF (svm(i) >= smax(i) .or. uvar(i,10) == -one)
THEN
279 a11 = etl(i) * det * fscale1
282 signxx(i) = sigoxx(i) + a11*depsxx(i) + a12*depsyy(i)
283 signyy(i) = sigoyy(i) + a12*depsxx(i) + a22*depsyy(i)
284 svm2 = signxx(i)**2 + signyy(i)**2 - signxx(i)*signyy(i)
288 emaxrl(i) =
max(em20, epsq(i))
296 IF (ireload == 0)
THEN
300 xx1(i,1) = epsq(i) * xint / emaxrl(i)
306 xx1(i,1) = emax(i) * (epsq(i) - eminrl(i)) / (emax(i) - eminrl(i))
313 IF (ireload == 1) then
316 ht = (smax(i)-sminrl(i)) / (emax(i)-eminrl(i))
317 hf = smax(i) / emax(i)
318 etx(i) = fscale * etx(i) * ht / hf
323 signxx(i) = sigoxx(i) + a11*depsxx(i) + a12*depsyy(i)
324 signyy(i) = sigoyy(i) + a12*depsxx(i) + a22*depsyy(i)
327 emaxrl(i) =
max(em20, epsq(i))
333 ht = smax(i) / emax(i)
335 etx(i) = fscale * etx(i) * ht / hf
340 signxx(i) = sigoxx(i) + a11*depsxx
341 signyy(i) = sigoyy(i) + a12*depsxx(i) + a22*depsyy(i)
342 svm2 = signxx(i)**2 + signyy(i)**2 - signxx(i)*signyy(i)
344 emaxrl(i) =
max(em20, emax(i))
352 xx1(i,1) = epsq(i) * xint / emaxrl(i)
360 etx(i) = etu(i) * (smaxrl(i) / emaxrl(i)) * (xint / yint)
361 IF (epsq(i) > zero)
THEN
362 etx(i) =
max(etx(i), svm(i) / epsq(i))
368 a11 = etx(i) * det * fscale2
371 signxx(i) = sigoxx(i) + a11*depsxx(i) + a12*depsyy(i)
372 signyy(i) = sigoyy(i) + a12*depsxx(i) + a22*depsyy(i)
373 svm2 = signxx(i)**2 + signyy(i)**2 - signxx(i)*signyy(i)
381 uvar(1:nel,1) = emax(1:nel)
382 uvar(1:nel,2) = smax(1:nel)
383 uvar(1:nel,3) = eminrl(1:nel)
384 uvar(1:nel,4) = emaxrl(1:nel)
385 uvar(1:nel,5) = sminrl(1:nel)
386 uvar(1:nel,6) = smaxrl(1:nel)
394 uvar(i,8) = sqrt((epsxx(i)**2 + epsyy(i)**2) / (one + nu21**2))