28 SUBROUTINE lszk ( IFLAG,NEL ,PM ,OFF ,EINT ,MU ,
29 2 ESPE ,DVOL ,DF ,VNEW ,MAT ,PSH ,
58#include "implicit_f.inc"
67#include "vect01_c.inc"
72 INTEGER MAT(NEL), IFLAG, NEL
73 my_real PM(NPROPM,NUMMAT),
74 . off(nel) ,eint(nel) ,mu(nel) ,
75 . espe(nel) ,dvol(nel) ,df(nel) ,
76 . vnew(nel) ,pnew(nel) ,dpdm(nel),
82 my_real :: P0,PSH(NEL),GAMMA,E0,AA,BB,DVV,PP,AR0B,B,PC
91 psh(1:nel) = pm(88,mx)
96 pp = (gamma-one)*(one+mu(i))*espe(i) + ar0b*exp(b*log(one+mu(i)))
97 dpdm(i) = (gamma-one)*espe(i)+ar0b*b/(one+mu(i))*exp((b-one)*log(one+mu(i)))+(gamma-one)*df(i)*pp
98 dpde(i) = (gamma-one)*(one+mu(i))
99 pnew(i) =
max(pp,pc)*off(i)
100 pnew(i) = pnew(i) - psh(i)
103 ELSEIF(iflag == 1)
THEN
108 psh(1:nel) = pm(88,mx)
113 bb = (gamma-one)*(one+mu(i))
115 aa = ar0b*exp(b*log(one+mu(i)))
116 dvv = half*dvol(i)*df(i) /
max(em15,vnew(i))
117 pnew(i) = (aa + bb*espe(i) ) / (one+bb*dvv)
118 pnew(i) =
max(pnew(i),pc)*off(i)
119 eint(i) = eint(i) - half*dvol(i)*(pnew(i))
120 pnew(i) = pnew(i) - psh(i)
123 ELSEIF (iflag == 2)
THEN
128 psh(1:nel) = pm(88,mx)
132 IF (vnew(i) > zero)
THEN
133 pnew(i) = (gamma-one)*(one+mu(i))*espe(i) + ar0b*exp(b*log(one+mu(i)))
134 dpdm(i) = (gamma-one)*espe(i)+ar0b*b/(one+mu(i))*exp((b-one)*log(one+mu(i)))+(gamma-one)*df(i)*pnew(i)
135 dpde(i) = (gamma-one)*(one+mu(i))
136 pnew(i) = pnew(i)-psh(i)
subroutine lszk(iflag, nel, pm, off, eint, mu, espe, dvol, df, vnew, mat, psh, pnew, dpdm, dpde)