29 1 NEL, NUPARAM ,NUVAR , JLAG,
30 2 TIME, TIMESTEP,UPARAM, RHO0, RHO,
31 3 VOLUME, EINT, TEMP, JTHE,
32 4 EPSPXX, EPSPYY, EPSPZZ, EPSPXY,
33 5 EPSPYZ, EPSPZX, DEPSXX, DEPSYY,
34 6 DEPSZZ, DEPSXY, DEPSYZ, DEPSZX,
35 7 EPSXX, EPSYY, EPSZZ, EPSXY,
36 8 EPSYZ, EPSZX, SIGOXX, SIGOYY,
37 9 SIGOZZ, SIGOXY, SIGOYZ, SIGOZX,
38 A SIGNXX, SIGNYY, SIGNZZ, SIGNXY,
39 B SIGNYZ, SIGNZX, SIGVXX, SIGVYY,
40 C SIGVZZ, SIGVXY, SIGVYZ, SIGVZX,
41 D SOUNDSP, VISCMAX, UVAR, OFF,
42 E YLD, PLA, DEP, ETSE ,FHEAT )
46#include "implicit_f.inc"
94 INTEGER,
INTENT(IN) :: JTHE
95 INTEGER,
INTENT(IN) :: JLAG
96 INTEGER NEL, NUPARAM, NUVAR
98 . TIME,TIMESTEP,UPARAM(NUPARAM),
99 . RHO(NEL),RHO0(NEL),VOLUME(NEL),EINT(NEL),
100 . EPSPXX(NEL),EPSPYY(NEL),EPSPZZ(NEL),
101 . EPSPXY(NEL),EPSPYZ(NEL),EPSPZX(NEL),
102 . DEPSXX(NEL),DEPSYY(NEL),DEPSZZ(NEL),
103 . DEPSXY(NEL),DEPSYZ(NEL),DEPSZX(NEL),
104 . EPSXX(NEL) ,EPSYY(NEL) ,EPSZZ(NEL) ,
105 . EPSXY(NEL) ,EPSYZ(NEL) ,EPSZX(NEL) ,
106 . SIGOXX(NEL),SIGOYY(NEL),SIGOZZ(NEL),
107 . SIGOXY(NEL),SIGOYZ(NEL),SIGOZX(NEL)
112 . signxx(nel),signyy(nel),signzz(nel),
113 . signxy(nel),signyz(nel),signzx(nel),
114 . sigvxx(nel),sigvyy(nel),sigvzz(nel),
115 . sigvxy(nel),sigvyz(nel),sigvzx(nel),
116 . soundsp(nel),viscmax(nel),yld(nel) ,
117 . pla(nel),dep(nel),etse(nel)
121 my_real :: uvar(nel,nuvar), off(nel)
122 my_real ,
DIMENSION(NEL) ,
INTENT(INOUT) :: fheat
123 my_real ,
DIMENSION(NEL) ,
INTENT(INOUT) :: temp
127 INTEGER I,II,J,K,NITER,NINDX
130 . TOL,LAMDA,RES,DRES,SQR2INV,SEQ,YLDP,DAV,NU,YOUNG,SHEAR,G2,
131 . BULK,QVOCE,BVOCE,KSWIFT,KVOCE,KSWIFTP,KVOCEP,EXPV,
132 . K0,ALPHA,AN,EPS0,NN,DEPS0,EPSP0,CEPSP,CEPSPN,
133 . ETA,CP,TINI,TREF,TMELT,MTEMP,DEPSAD,SEFF,GEFF,F_EPS,GSS,
134 . GGSIG,G2GSIG,P12,P22,P33,G12,G22,G33,OMEGA,PLAP0
136 . gsig(6),psig(6),f_epsp(nel),f_temp(nel),svm(nel),
137 . dlam(nel),dlamin(nel),plap(nel),dheat(nel),
138 . sigtrxx(nel),sigtryy(nel),sigtrzz(nel),
139 . sigtrxy(nel),sigtryz(nel),sigtrzx(nel)
188 shear = young*half/(one+nu)
190 lamda = young*nu/(one+nu)/(one-two*nu)
191 bulk = young*third/(one-two*nu)
221 IF (isigi == 0 .and. time == zero)
THEN
223 f_temp(i)=
min(one,
max(zero,((tini-tref)/(tmelt-tref))**mtemp))
224 f_temp(i)= one - f_temp(i)
225 f_eps = alpha*(an*eps0**nn) + (one-alpha)*k0
226 yld(i) = f_eps * f_temp(i)
242 dav = depsxx(i) + depsyy(i) + depszz(i)
243 signxx(i) = sigoxx(i) + depsxx(i)*g2 + lamda*dav
244 signyy(i) = sigoyy(i) + depsyy(i)*g2 + lamda*dav
245 signzz(i) = sigozz(i) + depszz(i)*g2 + lamda*dav
247 signyz(i) = sigoyz(i) + depsyz(i)*shear
248 signzx(i) = sigozx(i) + depszx(i)*shear
249 sigtrxx(i) = signxx(i)
250 sigtryy(i) = signyy(i)
251 sigtrzz(i) = signzz(i)
252 sigtrxy(i) = signxy(i)
253 sigtryz(i) = signyz(i)
254 sigtrzx(i) = signzx(i)
256 svm(i) = sqrt(signxx(i)*signxx(i)
257 . + signyy(i)*signyy(i)*p22
258 . + signzz(i)*signzz(i)*(one+two*p12+p22)
259 . + signxy(i)*signxy(i)*p33
260 . + signyz(i)*signyz(i)*three
261 . + signzx(i)*signzx(i)*three
262 . + signxx(i)*signyy(i)*two*p12
263 . - signzz(i)*signyy(i)*two*(p12+p22)
264 . - signxx(i)*signzz(i)*two*(one+p12))
271 IF (svm(i) > yld(i))
THEN
288 IF( cepspn == zero )
THEN
289 dlamin(i) = uvar(i,4) + em10
291 dlamin(i) = five*em4*timestep*exp((em4)/cepspn)
294 dlam(i) = uvar(i,4) + em9
295 dlam(i) =
max(dlam(i), dlamin(i))
297 plap(i) = dlam(i) / timestep
298 f_temp(i) = ((temp(i)-tref)/(tmelt-tref))**mtemp
299 f_temp(i) =
min(one,
max(zero, f_temp(i)))
300 f_temp(i) = one - f_temp(i)
303 psig(1) = signxx(i) + signyy(i)*p12-signzz(i)*(one+p12)
305 psig(3) =-signxx(i)*(one+p12)- signyy(i)*(p12+p22)
306 . + signzz(i)*(one+two*p12+p22)
307 psig(4) = signxy(i)*p33
308 psig(5) = signyz(i)*three
309 psig(6) = signzx(i)*three
311 ggsig = dlam(i)*shear/svm(i)
313 signxx(i) = sigtrxx(i) - psig(1)*g2gsig
314 signyy(i) = sigtryy(i) - psig(2)*g2gsig
315 signzz(i) = sigtrzz(i) - psig(3)*g2gsig
316 signxy(i) = sigtrxy(i) - psig(4)*ggsig
317 signyz(i) = sigtryz(i) - psig(5)*ggsig
318 signzx(i) = sigtrzx(i) - psig(6)*ggsig
324 seff = sqrt(signxx(i)*signxx(i)
325 . + signyy(i)*signyy(i)*p22
326 . + signzz(i)*signzz(i)*(one+two*p12+p22)
327 . + signxy(i)*signxy(i)*p33
328 . + signyz(i)*signyz(i)*three
329 . + signzx(i)*signzx(i)*three
330 . + signxx(i)*signyy(i)*two*p12
331 . - signzz(i)*signyy(i)*two*(p12+p22)
332 . - signxx(i)*signzz(i)*two*(one+p12))
333 seff =
max(em20,seff)
335 geff = sqrt(signxx(i)*signxx(i)
336 . + signyy(i)*signyy(i)*g22
337 . + signzz(i)*signzz(i)*(one+two*g12+g22)
338 . + signxy(i)*signxy(i)*g33
339 . + signyz(i)*signyz(i)*three
340 . + signzx(i)*signzx(i)*three
341 . + signxx(i)*signyy(i)*two*g12
342 . - signzz(i)*signyy(i)*two*(g12+g22)
343 . - signxx(i)*signzz(i)*two*(one+g12))
344 geff =
max(em20,geff)
349 psig(1) = signxx(i) + signyy(i)*p12 - signzz(i)*(one+p12)
350 psig(2) = signxx(i)*p12 + signyy(i)*p22 - signzz(i)*(p12+p22
351 psig(3) =-signxx(i)*(one+p12) - signyy(i)*(p12+p22)
352 . + signzz(i)*(one+two
353 psig(4) = signxy(i)*p33
354 psig(5) = signyz(i)*three
355 psig(6) = signzx(i)*three
357 gsig(1) = signxx(i) + signyy(i)*g12 - signzz(i)*(one+g12)
358 gsig(2) = signxx(i)*g12 + signyy(i
360 . + signzz(i)*(one+two*g12+g22)
361 gsig(4) = signxy(i)*g33
362 gsig(5) = signyz(i)*three
363 gsig(6) = signzx(i)*three
366 expv = exp(-bvoce*pla(i))
367 kswift = an*(pla(i) + eps0)**nn
368 kvoce = k0 + qvoce*(one - expv)
369 f_eps = alpha*kswift + (one-alpha)*kvoce
370 uvar(i,2) = f_eps*f_temp(i)
373 f_epsp(i) = one + cepspn*log(plap(i)/deps0)
374 kswiftp = kswift*nn / (pla
375 kvocep = qvoce*bvoce*expv
376 yldp = alpha*kswiftp + (one - alpha)*kvocep
377 yldp = yldp * f_temp(i) * f_epsp(i)
378 yldp = yldp + yld(i) * cepspn / dlam(i)
379 yld(i) = uvar(i,2) * f_epsp(i)
384 IF ( (abs(res) < tol*uvar(i,2)) .and.
385 + (yld(i) > uvar(i,2)*(one-tol)) .and.
386 + ( plap(i) > deps0 ) .and.
387 + (abs(plap(i)-plap0) < plap0 *tol)
392 dres = psig(1)*gsig(1) + psig(2)*gsig(2) + psig(3)*gsig(3)
394 dres = dres / (seff*geff)
395 dres = -g2 * dres - yldp * gss
396 dlam(i) = dlam(i) - res / dres
399 IF ( (abs(res) < tol*uvar(i,2)) .and.
400 + (gss*dlam(i) / timestep < deps0) )
THEN
402 dlam(i) = uvar(i,4) + em10
407 dlam(i) =
max(dlam(i), dlamin(i))
408 dep(i) = dlam(i) * gss
409 pla(i) = uvar(i,1) + dep
410 plap(i) = dep(i) / timestep
413 ggsig = dlam(i)*shear
416 signyy(i) = sigtryy(i) - gsig(2)*g2gsig
417 signzz(i) = sigtrzz(i) - gsig(3)*g2gsig
418 signxy(i) = sigtrxy(i) - gsig(4)*ggsig
419 signyz(i) = sigtryz(i) - gsig(5)*ggsig
420 signzx(i) = sigtrzx(i) - gsig(6)*ggsig
433 IF (plap(i) <= deps0)
THEN
435 ELSEIF (plap(i) > depsad)
THEN
438 omega = ((plap(i)-deps0)**2 )*
439 . (three*depsad - two*plap(i) - deps0)
440 . /((depsad-deps0)**3)
442 dheat(i) = eta*omega*yld(i)*dep(i)
445 IF (jthe < 0 .AND. jlag /= 0)
THEN
448 fheat(i) = fheat(i) + dheat(i)*volume(i)
453 temp(i) = temp(i) + dheat(i) / (rho0(i)*cp)
463 soundsp(i)= sqrt((bulk+four_over_3*shear)/rho0(i))
subroutine sigeps84(nel, nuparam, nuvar, jlag, time, timestep, uparam, rho0, rho, volume, eint, temp, jthe, epspxx, epspyy, epspzz, epspxy, epspyz, epspzx, depsxx, depsyy, depszz, depsxy, depsyz, depszx, epsxx, epsyy, epszz, epsxy, epsyz, epszx, sigoxx, sigoyy, sigozz, sigoxy, sigoyz, sigozx, signxx, signyy, signzz, signxy, signyz, signzx, sigvxx, sigvyy, sigvzz, sigvxy, sigvyz, sigvzx, soundsp, viscmax, uvar, off, yld, pla, dep, etse, fheat)