29 2 ESPE ,DVOL ,DF ,VNEW ,MAT ,PSH ,
60#include "implicit_f.inc"
66#include "tabsiz_c.inc"
70#include "vect01_c.inc"
75 INTEGER,
INTENT(IN) :: MAT(NEL), IFLAG, NEL,NPF(SNPC)
76 my_real,
INTENT(INOUT) :: PM(,NUMMAT),
77 . OFF(NEL) ,EINT(NEL) ,MU(NEL) ,
78 . espe(nel) ,dvol(nel) ,df(nel) ,
79 . vnew(nel) ,pnew(nel) ,dpdm(nel),
86 my_real :: E0,AA,BB,DVV,PP
87 my_real :: XSCALE_A,XSCALE_B,FSCALE_A,FSCALE_B
88 INTEGER :: A_fun_id, B_fun_id
89 my_real :: res_a(nel),res_b(nel),deri_a(nel),deri_b(nel),pc
90 my_real,
EXTERNAL :: finter
97 psh(1:nel) = pm(88,mx)
103 fscale_a = pm(160,mx)
104 fscale_b = pm(161,mx)
107 IF(a_fun_id == 0)
THEN
111 res_b(i) = fscale_b*finter(b_fun_id,mu(i),npf,tf,deri_b(i))
113 ELSEIF(b_fun_id == 0)
THEN
115 res_a(i) = fscale_a*finter(a_fun_id,mu(i),npf
121 res_a(i) = fscale_a*finter(a_fun_id,mu(i),npf,tf,deri_a(i))
122 res_b(i) = fscale_b*finter(b_fun_id,mu(i),npf,tf
127 pp = res_a(i) + res_b(i) * espe(i) - psh(i)
128 dpdm(i) = deri_a(i)+deri_b(i)*espe(i) + res_b(i)*(pp+psh(i))/( (one+mu(i))*(one+mu(i)) )
130 pnew(i) =
max(pp,pc)*off(i)
134 ELSEIF(iflag == 1)
THEN
137 psh(1:nel) = pm(88,mx)
143 fscale_a = pm(160,mx)
144 fscale_b = pm(161,mx)
146 IF(a_fun_id == 0)
THEN
149 res_b(i) = fscale_b*finter(b_fun_id,mu(i),npf,tf,deri_b(i))
151 ELSEIF(b_fun_id == 0)
THEN
153 res_a(i) = fscale_a*finter(a_fun_id,mu(i),npf,tf,deri_a(i))
158 res_a(i) = fscale_a*finter(a_fun_id,mu(i),npf,tf,deri_a(i))
159 res_b(i) = fscale_b*finter(b_fun_id,mu(i),npf,tf,deri_b(i))
166 dvv = half*dvol(i)*df(i) /
max(em15,vnew(i))
167 pp = aa + bb * espe(i)
168 pnew(i) = (aa+bb*(espe(i)-psh(i)*dvv))/(one+bb*dvv)
169 pnew(i) =
max(pnew(i),pc )*off(i)
170 eint(i) = eint(i) - half*dvol(i)*(pnew(i)+psh(i) )
174 ELSEIF (iflag == 2)
THEN
177 psh(1:nel) = pm(88,mx)
183 fscale_a = pm(160,mx)
184 fscale_b = pm(161,mx)
186 IF(a_fun_id == 0)
THEN
189 res_b(i) = fscale_b*finter(b_fun_id,mu(i),npf,tf,deri_b(i))
192 ELSEIF(b_fun_id == 0)
THEN
194 res_a(i) = fscale_a*finter(a_fun_id,mu(i),npf,tf,deri_a(i))
200 res_a(i) = fscale_a*finter(a_fun_id,mu(i),npf,tf,deri_a(i))
201 res_b(i) = fscale_b*finter(b_fun_id,mu(i),npf,tf,deri_b(i))
205 IF (vnew(i) > zero)
THEN
206 pp = res_a(i) + res_b(i)*espe(i) - psh(i)
207 dpdm(i) = deri_a(i)+deri_b(i)*espe(i) + res_b(i)*(pp+psh(i))/( (one+mu(i))*(one+mu(i)) )
subroutine tabulated(iflag, nel, pm, off, eint, mu, espe, dvol, df, vnew, mat, psh, pnew, dpdm, dpde, npf, tf)