31 1 NEL ,TIME ,TIMESTEP,UPARAM ,OFF ,
32 2 EPSD ,STIFM ,IFUNC ,MAXFUNC ,NPF ,TF ,
33 3 AREA ,DEPSZZ ,DEPSYZ ,DEPSZX ,NUPARAM ,EPSZZ ,
34 4 SIGOZZ ,SIGOYZ ,SIGOZX ,SIGNZZ ,SIGNYZ ,SIGNZX ,
35 5 PLA ,JSMS ,DMELS ,SYM, UVAR ,NUVAR ,
40#include "implicit_f.inc"
78 INTEGER NEL,NUPARAM,NUVAR,MAXFUNC,JSMS
79 INTEGER IFUNC(*),NPF(*)
81 . TIME,TIMESTEP,ASRATE
83 . UPARAM(NUPARAM),OFF(NEL),TF(*),PLA(NEL),AREA(NEL),
84 . epsd(nel),depszz(nel),depsyz(nel),depszx(nel),
85 . sigozz(nel),sigoyz(nel),sigozx(nel),epszz(nel),
86 . stifm(nel),signzz(nel),signyz(nel),signzx(nel),
87 . dmels(*),uvar(nel,nuvar), sym(nel),dmg(nel)
91 INTEGER :: II,IEL,ITER,NITER,IRATE,NRATE,IDYIELD,IPLAS,IFUNN,IFUNT,
92 . ICOMP,NTRAC,NCOMP,VP
93 INTEGER ,
DIMENSION(NEL) :: ELTRAC,ELCOMP
94 my_real :: YOUNGT,YOUNGC,SHEAR,DYDX,
95 . SVMN,SVMT,DTB,ALPHA,BETA,SVM,TS,TN,XSCALE,RNC,RSC,XFAC,YFAC,
96 . AA,AN,AS,NORMEF,NZZ,NYZ,NZX,FACN,FACT,SZZ,SYZ,SZX,
97 . fpx,fpy,fprim,sign,sigt,sig_eff,phi,dtinv,dszz,dsyz,dszx,dyld,yld0
98 my_real ,
DIMENSION(NEL) :: dsigx,dsigy,dsigz,dep,depst,stf,epsp,ht,
99 . fyield,hyield, rn,hn,rs,sigtrzz,sigtryz,sigtrzx
122 icomp = nint(uparam(12))
124 vp = nint(uparam(14))
125 dtinv = one /
max(em20,timestep)
129 epsp(1:nel) = sqrt(depszz(1:nel)**2 + depsyz(1:nel)**2 + depszx(1:nel)**2) *dtinv
130 uvar(1:nel,1) = asrate*epsp(1:nel) + (one - asrate)*uvar(:nel,1)
131 epsd(1:nel) = uvar(1:nel,1)
133 epsp(:nel) = uvar(:nel,1)
139 IF (youngc == youngt)
THEN
143 IF (sigozz(iel) > zero)
THEN
154 IF (sigozz(iel) > zero)
THEN
166 stf(1:nel) = young(1:nel) * area(1:nel)
167 dsigz(1:nel) = young(1:nel) * depszz(1:nel)
168 dsigy(1:nel) = shear*depsyz(1:nel
169 dsigx(1:nel) = shear*depszx(1:nel)
170 signzz(1:nel) = sigozz(1:nel) + dsigz(1:nel) * off(1:nel)
171 signyz(1:nel) = sigoyz(1:nel) + dsigy(1:nel) * off(1:nel)
172 signzx(1:nel) = sigozx(1:nel) + dsigx(1:nel) * off(1:nel)
173 stifm(1:nel) = stifm(1:nel) + stf(1:nel)*off(1:nel)
174 sigtrzz(1:nel) = signzz(1:nel)
175 sigtryz(1:nel) = signyz(1:nel)
176 sigtrzx(1:nel) = signzx(1:nel)
179 IF (idtmins==2 .AND. jsms/=0)
THEN
180 dtb = (dtmins/dtfacs)**2
182 dmels(iel)=
max(dmels(iel),half*dtb*stf(iel)*off(iel))
190 rn(iel) = finter(ifunn,epsp(iel)*xscale,npf,tf,dydx) * rnc !/ area(iel)
200 rs(iel) = finter(ifunt,epsp(iel)*xscale,npf,tf,dydx) * rsc
208 fyield(iel) =
max(zero, finter(idyield,pla(iel)*xfac,npf,tf,dydx))
209 fyield(iel) = fyield(iel)*(one-dmg(iel))*yfac
210 hyield(iel) = dydx*yfac
215 IF (beta == two)
THEN
218 aa = rn(iel)*(one-alpha*sin(sym(iel)))
219 an = one/
max(em20,aa)**2
220 as = one/
max(em20,rs(iel))**2
221 sig_eff = an * sigtrzz(iel
223 phi = sig_eff - yld0**2
224 IF (sig_eff > zero .and. phi > zero)
THEN
225 normef = sqrt(sigtrzz(iel)**2 + sigtryz(iel)**2 + sigtrzx(iel)**2)
226 nzz = sigtrzz(iel) / normef
227 nyz = sigtryz(iel) / normef
228 nzx = sigtrzx(iel) / normef
229 facn = two*an*young(iel)
233 dszz = -facn*signzz(iel)*nzz
234 dsyz = -fact*signyz(iel)*nyz
235 dszx = -fact*signzx(iel)*nzx
236 dyld = -two*fyield(iel)*hyield(iel)
237 fprim = dszz + dsyz + dszx + dyld
238 IF(fprim .NE. zero)
THEN
239 dep(iel) = dep(iel) - phi / fprim
240 signzz(iel) = sigtrzz(iel) - young(iel)*dep(iel) * nzz
241 signyz(iel) = sigtryz(iel) - shear*dep(iel) * nyz
242 signzx(iel) = sigtrzx(iel) - shear*dep(iel) * nzx
243 fyield(iel) = yld0 + hyield(iel)*dep(iel)
244 sig_eff = an * signzz(iel)** 2 + as * (signyz(iel)**2 + signzx(iel)**2)
245 phi = sig_eff - fyield(iel)**2
248 dep(iel) =
max(zero, dep(iel))*off(iel)
249 pla(iel) = pla(iel) + dep(iel)
257 aa = rn(iel)*(one-alpha*sin(sym(iel)))
258 an = one/
max(em20,aa)**2
259 as = one/
max(em20,rs(iel))**2
260 sig_eff = an * sigtrzz(iel)** 2 + as * (sigtryz(iel)**2 + sigtrzx(iel)**2)
262 phi = sig_eff - yld0**2
263 IF (sig_eff > zero .and. phi > zero)
THEN
264 normef = sqrt(sigtrzz(iel)**2 + sigtryz(iel)**2 + sigtrzx(iel)**2)
265 nzz = sigtrzz(iel) / normef
266 nyz = sigtryz(iel) / normef
267 nzx = sigtrzx(iel) / normef
268 facn = two*an*young(iel)
271 dszz = -facn*signzz(iel)*nzz
272 dsyz = -fact*signyz(iel)*nyz
273 dszx = -fact*signzx(iel)*nzx
274 dyld = -two*fyield(iel)*hyield(iel)
275 fprim = dszz + dsyz + dszx + dyld
277 IF(fprim .NE. zero)
THEN
278 dep(iel) = dep(iel) - phi / fprim
279 signzz(iel) = sigtrzz(iel) - young(iel)*dep(iel) * nzz
280 signyz(iel) = sigtryz(iel) - shear*dep(iel) * nyz
281 signzx(iel) = sigtrzx(iel) - shear*dep(iel
282 fyield(iel) = yld0 + hyield(iel)*dep(iel)
283 sig_eff = an * signzz(iel)** 2 + as * (signyz(iel)**2 + signzx(iel)**2)
284 phi = sig_eff - fyield(iel)**2
287 dep(iel) =
max(zero, dep(iel))*off(iel)
288 pla(iel) = pla(iel) + dep(iel)
295 sig_eff = as * (sigtryz(iel)**2 + sigtrzx(iel)**2)
297 phi = sig_eff - yld0**2
298 IF (sig_eff > zero .and. phi > zero)
THEN
299 normef = sqrt(sigtryz(iel)**2 + sigtrzx(iel)**2)
300 nyz = sigtryz(iel) / normef
301 nzx = sigtrzx(iel) / normef
304 dsyz = -fact*signyz(iel)*nyz
305 dszx = -fact*signzx(iel)*nzx
306 dyld = -two*fyield(iel)*hyield(iel)
307 fprim = dsyz + dszx + dyld
308 IF(fprim .NE. zero)
THEN
309 dep(iel) = dep(iel) - phi / fprim
310 signyz(iel) = sigtryz(iel) - shear*dep(iel) * nyz
311 signzx(iel) = sigtrzx(iel) - shear*dep(iel) * nzx
312 fyield(iel) = yld0 + hyield(iel)*dep(iel)
313 sig_eff = as * (signyz(iel)**2 + signzx(iel)**2)
314 phi = sig_eff - fyield(iel)**2
317 dep(iel) =
max(zero, dep(iel))*off(iel)
318 pla(iel) = pla(iel) + dep(iel)
328 aa = rn(iel)*(one-alpha*sin(sym(iel)))
329 an = one/
max(em20,aa)**beta
330 as = one/
max(em20,rs(iel))**beta
331 svmn = abs(signzz(iel))
332 svmt = sqrt(signyz(iel)**2 + signzx(iel)**2)
333 sig_eff = an * svmn**beta + as * svmt**beta
335 phi = sig_eff - yld0**beta
336 IF (sig_eff > zero .and. phi > zero)
THEN
337 normef = sqrt(sigtrzz(iel)**2+sigtryz(iel)**2 + sigtrzx(iel)**2)
338 nzz = sigtrzz(iel) / normef
339 nyz = sigtryz(iel) / normef
340 nzx = sigtrzx(iel) / normef
341 facn = beta*an*young(iel)
345 svmt =
max(svmt,em20)
349 dszz = -facn*nzz*abs(szz)**(beta-one) * sign(one,szz)
350 dsyz = -fact*nyz*syz*svmt**(beta-two)
352 dyld = -beta*hyield(iel)*fyield(iel)**(beta-one)
353 fprim = dszz + dsyz + dszx + dyld
354 IF(fprim .NE. zero)
THEN
355 dep(iel) = dep(iel) - phi / fprim
356 signzz(iel) = sigtrzz(iel) - young(iel)*dep(iel) * nzz
357 signyz(iel) = sigtryz(iel) - shear*dep(iel) * nyz
358 signzx(iel) = sigtrzx(iel) - shear*dep(iel) * nzx
359 fyield(iel) =
max(zero, yld0 + hyield(iel)*dep(iel))
360 svmt = sqrt(signyz(iel)**2 + signzx(iel)**2)
361 sig_eff = an * abs(signzz(iel))**beta + as * svmt**beta
362 phi = sig_eff - fyield(iel)**beta
365 dep(iel) =
max(zero, dep(iel))*off(iel)
366 pla(iel) = pla(iel) + dep(iel)
374 aa = rn(iel)*(one-alpha*sin(sym(iel)))
375 an = one/
max(em20,aa)**beta
376 as = one/
max(em20,rs(iel))**beta
377 svmn = abs(signzz(iel))
378 svmt = sqrt(signyz(iel)**2 + signzx(iel)**2)
379 sig_eff = an * svmn**beta + as * svmt**beta
381 phi = sig_eff - yld0**beta
382 IF (sig_eff > zero .and. phi > zero)
THEN
383 normef = sqrt(sigtrzz(iel)**2+sigtryz(iel)**2 + sigtrzx(iel)**2)
384 nzz = sigtrzz(iel) / normef
385 nyz = sigtryz(iel) / normef
386 nzx = sigtrzx(iel) / normef
387 facn = beta*an*young(iel)
391 svmt =
max(svmt,em20)
395 dszz = -facn*nzz*abs(szz)**(beta-one) * sign(one,szz)
396 dsyz = -fact*nyz*syz*svmt**(beta-two)
397 dszx = -fact*nzx*szx*svmt**(beta-two)
398 dyld = -beta*hyield(iel)*fyield(iel)**(beta-one)
399 fprim = dszz + dsyz + dszx + dyld
400 IF(fprim .NE. zero)
THEN
401 dep(iel) = dep(iel) - phi / fprim
402 signzz(iel) = sigtrzz(iel) - young(iel)*dep(iel) * nzz
403 signyz(iel) = sigtryz(iel) - shear*dep(iel) * nyz
404 signzx(iel) = sigtrzx(iel) - shear*dep(iel) * nzx
405 fyield(iel) =
max(zero, yld0 + hyield(iel)*dep(iel))
406 svmt = sqrt(signyz(iel)**2 + signzx(iel)**2)
407 sig_eff = an * abs(signzz(iel))**beta + as * svmt**beta
408 phi = sig_eff - fyield(iel)**beta
411 dep(iel) =
max(zero, dep(iel))*off(iel)
412 pla(iel) = pla(iel) + dep(iel)
418 as = one/
max(em20,rs(iel))**beta
419 svmt = sqrt(signyz(iel)**2 + signzx(iel)**2)
420 sig_eff = as * svmt**beta
422 phi = sig_eff - yld0**beta
423 IF (sig_eff > zero .and. phi > zero)
THEN
425 nyz = sigtryz(iel) / normef
426 nzx = sigtrzx(iel) / normef
430 svmt =
max(svmt,em20)
433 dsyz = -fact*nyz*syz*svmt**(beta-two)
434 dszx = -fact*nzx*szx*svmt**(beta-two)
435 dyld = -beta*hyield(iel)*fyield(iel)**(beta-one)
436 fprim = dsyz + dszx + dyld
437 IF(fprim .NE. zero)
THEN
438 dep(iel) = dep(iel) - phi / fprim
439 signyz(iel) = sigtryz(iel) - shear*dep(iel) * nyz
440 signzx(iel) = sigtrzx(iel) - shear*dep(iel) * nzx
441 fyield(iel) = yld0 + hyield(iel)*dep(iel)
442 svmt = sqrt(signyz(iel)**2 + signzx(iel)**2)
443 sig_eff = as * svmt**beta
444 phi = sig_eff - fyield(iel)**beta
447 dep(iel) =
max(zero, dep(iel))*off(iel)
448 pla(iel) = pla(iel) + dep(iel)
460 epsp(iel) = dep(iel) * dtinv
461 uvar(iel,1) = asrate*epsp(iel) + (one - asrate)*uvar(iel,1)
462 epsd(iel) = uvar(iel,1)