33 1 NEL ,NUPARAM ,NUVAR ,TBURN ,
34 2 TIME ,UPARAM ,BFRAC ,
35 3 RHO0 ,RHO ,EINT ,DELTAX ,
36 4 EPSPXX ,EPSPYY ,EPSPZZ ,
37 8 SIGNXX ,SIGNYY ,SIGNZZ ,SIGNXY ,SIGNYZ ,SIGNZX ,
38 9 SIGVXX ,SIGVYY ,SIGVZZ ,SIGVXY ,SIGVYZ ,SIGVZX ,
39 A SOUNDSP,VISCMAX ,UVAR ,OFF ,
40 C GEO ,PID ,ILAY ,NG ,ELBUF_TAB,
52#include "implicit_f.inc"
64 INTEGER NEL, NUPARAM, NUVAR, PID(*), ILAY, NG
66 . TIME ,UPARAM(NUPARAM),
67 . RHO(NEL) ,RHO0(NEL) ,
68 . EINT(NEL) ,QNEW(NEL) ,
70 . EPSPXX(NEL) ,EPSPYY(NEL),EPSPZZ(NEL),
73 TYPE (ELBUF_STRUCT_),
TARGET,
DIMENSION(NGROUP) :: ELBUF_TAB
78 . signxx(nel),signyy(nel),signzz(nel),
79 . signxy(nel),signyz(nel),signzx(nel),
80 . sigvxx(nel),sigvyy(nel),sigvzz(nel),
81 . sigvxy(nel),sigvyz(nel),sigvzx(nel),
82 . soundsp(nel),viscmax(nel)
83 my_real,
INTENT(INOUT) :: dpde(nel)
87 my_real uvar(nel,nuvar), off(nel), tburn(nel), bfrac(nel), deltax(nel)
106 . d, pcj, e0, p0, vcj,c,psh,
107 . a(5),r(5),al(5),bl(5),rl(5),
109 . qa,qb,qal,qbl,dd,bhe,
110 . lambda1,lambda2,lambda3,lambda4,lambda5,
112 . dldv1,dldv2,dldv3,dldv4,dldv5,
114 . erlv1,erlv2,erlv3,erlv4,erlv5,
117 . rv1,rv2,rv3,rv4,rv5,
118 . rhoc2_1,rhoc2_2,rhoc2_3,rhoc2_4,rhoc2_5,
123 my_real :: XL, DF, TB
125 TYPE(G_BUFEL_) ,
POINTER :: GBUF
126 TYPE(L_BUFEL_) ,
POINTER :: LBUF
127 TYPE(BUF_LAY_) ,
POINTER :: BUFLY
131 GBUF => elbuf_tab(ng)%GBUF
132 lbuf => elbuf_tab(ng)%BUFLY(ilay)%LBUF(1,1,1)
133 bufly => elbuf_tab(ng)%BUFLY(ilay)
258 ibfrac = nint(uparam(03))
264 a(1:5) = uparam(09:13)
265 r(1:5) = uparam(14:18)
266 al(1:5)= uparam(19:23)
267 bl(1:5)= uparam(24:28)
268 rl(1:5)= uparam(29:33)
277 uvar(1:nel,4) = voln(1:nel)
286 IF(bfrac(i) < one)
THEN
289 IF(ibfrac/=1 .AND. time > tb) bfrac(i) = d*(time-tb)*two_third/xl
290 IF(ibfrac/=2) bfrac(i) =
max( bfrac(i) , bhe * (one - rho0(i)/rho(i)) )
291 IF(bfrac(i) < em04)
THEN
293 ELSEIF(bfrac(i) > one)
THEN
301 v0 = rho(i)*voln(i) / rho0(i)
302 espe = eint(i)/
max(em20,v0)
313 erlv1 = exp(-rl(1)*vv)
314 erlv2 = exp(-rl(2)*vv)
315 erlv3 = exp(-rl(3)*vv)
316 erlv4 = exp(-rl(4)*vv)
317 erlv5 = exp(-rl(5)*vv)
319 lambda1 = (al(1)*vv+bl(1))*erlv1
320 lambda2 = (al(2)*vv+bl(2))*erlv2
321 lambda3 = (al(3)*vv+bl(3))*erlv3
322 lambda4 = (al(4)*vv+bl(4))*erlv4
323 lambda5 = (al(5)*vv+bl(5))*erlv5
325 lambda = lambda1 + lambda2 + lambda3 + lambda4 + lambda5 + ww
329 dldv1 = al(1)*erlv1-(al(1)*vv+bl(1))*rl(1)*erlv1
330 dldv2 = al(2)*erlv2-(al(2)*vv+bl(2))*rl(2)*erlv2
331 dldv3 = al(3)*erlv3-(al(3)*vv+bl(3))*rl
332 dldv4 = al(4)*erlv4-(al(4)*vv+bl
333 dldv5 = al(5)*erlv5-(al(5)*vv+bl(5))*rl(5)*erlv5
335 dldv = dldv1 + dldv2 + dldv3 + dldv4 + dldv5
343 p1 = a(1)*(one-lambda/rv1)*exp(-rv1)
344 p2 = a(2)*(one-lambda/rv2)*exp(-rv2)
345 p3 = a(3)*(one-lambda/rv3)*exp(-rv3)
347 p5 = a(5)*(one-lambda/rv5)*exp(-rv5)
349 p = p1+p2+p3+p4+p5 + lambda*espe/vv + c*(one-lambda/ww)*exp((-ww-one)*log(vv))
351 rhoc2_1 = a(1)*( (vv*dldv-lambda)/r(1) + r(1)*vv*vv - lambda*vv )*exp(-rv1)
352 rhoc2_2 = a(2)*( (vv*dldv-lambda)/r(2) + r(2)*vv*vv - lambda*vv )*exp(-rv2)
353 rhoc2_3 = a(3)*( (vv*dldv-lambda)/r(3) + r(3)*vv*vv - lambda*vv )*exp(-rv3)
354 rhoc2_4 = a(4)*( (vv*dldv-lambda)/r(4) + r(4)*vv*vv - lambda*vv )*exp(-rv4)
355 rhoc2_5 = a(5)*( (vv*dldv-lambda)/r(5) + r(5)*vv*vv - lambda*vv )*exp(-rv5)
359 rhoc2 = rhoc2_1 + rhoc2_2 + rhoc2_3 + rhoc2_4 + rhoc2_5
360 rhoc2 = rhoc2 + c*((ww+one)*(one-lambda/ww)+vv*dldv/ww)*exp(-ww*log(vv))
361 rhoc2 = rhoc2 + (espe)*lambda + lambda*vv*(p+psh) - (espe)*vv*dldv
363 ssp = sqrt(
max(rhoc2/rho0(i),em20))
366 dd = -epspxx(i)-epspyy(i)-epspzz(i)
370 viscmax(i) = rho(i)*(qal*
max(zero,dd) + qbl*ssp)
371 qnew(i) = viscmax(i)*
max(zero,dd)
374 denom = (one+half*dv*lambda/vv)
378 pnew = p - lambda/vv*half*(uvar(i,5)+psh)*dv
380 pnew = (one-bfrac(i))*p0 + bfrac(i)*pnew
381 pnew =
max(-psh, pnew-psh)*off(i)
385 dvol = half*(voln(i)-uvar(i,4))
387 eint(i) = eint(i) - (psh+psh)*dvol
subroutine sigeps97(nel, nuparam, nuvar, tburn, time, uparam, bfrac, rho0, rho, eint, deltax, epspxx, epspyy, epspzz, signxx, signyy, signzz, signxy, signyz, signzx, sigvxx, sigvyy, sigvzz, sigvxy, sigvyz, sigvzx, soundsp, viscmax, uvar, off, geo, pid, ilay, ng, elbuf_tab, voln, qnew, qold, dpde)