29 1 IFLAG,NEL ,PM ,OFF ,EINT ,MU , MU2,
30 2 ESPE ,DVOL ,DF ,VNEW ,MAT ,PSH ,
31 3 PNEW ,DPDM ,DPDE ,VAREOS, NVAREOS)
69#include "implicit_f.inc"
77#include "vect01_c.inc"
82 INTEGER,
INTENT(IN) :: MAT(NEL), IFLAG, NEL, NVAREOS
83 my_real PM(NPROPM,NUMMAT),
84 . OFF(NEL) , EINT(NEL), MU(NEL) ,
85 . mu2(nel) , espe(nel), dvol(nel), df(nel) ,
86 . vnew(nel), pnew(nel), dpdm(nel), dpde(nel)
87 my_real,
INTENT(INOUT) :: vareos(nel,nvareos)
88 my_real,
INTENT(INOUT) :: psh(nel)
93 my_real AA, BB, DVV, ETA, ENEW, OMEGA, XX, EXPA, EXPB,
94 . PP, FACC1, FACC2, FACPB,
95 . c1(nel),c2(nel),ptia(nel),ptib(nel),ezero(nel),
96 .
alpha(nel),beta(nel),esubl(nel),vsubl(nel),
122 IF(df(i)> vsubl(i) .OR. (df(i)<=vsubl(i).AND.espe(i)>=esubl(i)))
THEN
125 expa=exp(-
alpha(i)*xx*xx)
132 omega= one+espe(i)/(ezero(i)*eta**2)
133 aa=facc1*c1(i)*mu(i)+facc2*c2(i)*mu2(i)
134 bb=ptia(i)+facpb*ptib(i)/omega
135 pp=
max(aa+bb*eta*espe(i),pc(i))*off(i)
136 dpdm(i)=facc1*c1(i)+two*facc2*c2(i)*mu(i)+bb*eta*pp*df(i)*df(i)
137 . +espe(i)*( bb+(two*espe(i)/eta-pp*df(i)*df(i))
138 . *ptib(i)*facpb/(ezero(i)*eta*omega**2) )
141 pnew(i) =
max(pp,pc(i))*off(i)
144 ELSEIF(iflag == 1)
THEN
161 dvv=half*dvol(i)*df(i) /
max(em15,vnew(i))
163 omega= one+espe(i)/(ezero(i)*eta**2)
171 IF(df(i)>vsubl(i).OR.(df(i)<=vsubl(i).AND.espe(i)>=esubl(i)))
THEN
174 expa=exp(-
alpha(i)*xx*xx)
180 aa=facc1*c1(i)*mu(i)+facc2*c2(i)*mu2(i)
181 bb=(ptia(i)+facpb*ptib(i)/omega)*eta
182 pnew(i)=(aa +bb*espe(i))/(one+ bb*dvv)
183 enew=espe(i) - pnew(i)*dvv
185 omega= one+enew/(ezero(i)*eta**2)
186 bb=(ptia(i)+facpb*ptib(i)/omega)*eta
187 pnew(i)=(aa +bb*espe(i))/(one+ bb*dvv)
188 pnew(i)=
max(pnew(i),pc(i))*off(i)
189 eint(i)= eint(i) - half*dvol(i)*pnew(i)
194 ELSEIF(iflag == 2)
THEN
210 IF (vnew(i) > zero)
THEN
218 IF(df(i) > vsubl(i) .OR. (df(i) <= vsubl(i) .AND. espe(i) >= esubl(i)))
THEN
220 xx = mu(i)/(one+mu(i))
221 expa= exp(-
alpha(i)*xx*xx)
222 expb= exp(beta(i)*xx)
228 omega= one+espe(i)/(ezero(i)*eta**2)
229 aa=facc1*c1(i)*mu(i)+facc2*c2(i)*mu2(i)
230 bb=ptia(i)+facpb*ptib(i)/omega
231 pp=
max(aa+bb*eta*espe(i),pc(i))*off(i)
232 dpdm(i)=facc1*c1(i)+two*facc2*c2(i)*mu(i)+bb*eta*pp*df(i)*df(i)
233 . +espe(i)*( bb+(two*espe(i)/eta-pp*df(i)*df(i))
234 . *ptib(i)*facpb/(ezero(i)*eta*omega**2) )
subroutine tillotson(iflag, nel, pm, off, eint, mu, mu2, espe, dvol, df, vnew, mat, psh, pnew, dpdm, dpde, vareos, nvareos)