30 SUBROUTINE puff(IFLAG,NEL ,PM ,OFF ,EINT ,MU ,MU2,
31 2 ESPE ,DVOL ,DF ,VNEW ,MAT ,
55 USE constant_mod ,
ONLY : zero, em15, half, one, three_half, two, three, three100
68#include "vect01_c.inc"
73 INTEGER MAT(NEL), IFLAG, NEL
74 my_real PM(NPROPM,NUMMAT),
75 . off(nel) , eint(nel), mu(nel) ,
76 . mu2(nel) , espe(nel), dvol(nel), df(nel) ,
77 . vnew(nel), pnew(nel), dpdm(nel), dpde(nel)
82 my_real AA, BB, DVV, ETA, XX, GX, PRES, CC, EXPA, EE
83 my_real c1(nel),c2(nel),c3(nel),t1(nel),t2(nel), g0(nel),esubl(nel),hh(nel),pc(nel),psh(nel)
100 xx =mu(i)/(one+mu(i))
101 IF(mu(i) >= zero)
THEN
102 aa=(c1(i)+c3(i)*mu2(i))*mu(i)+c2(i)*mu2(i)
105 pres=
max(aa*gx+bb*espe(i),pc(i))*off(i)
106 dpdm(i)=(c1(i)+two*c2(i)*mu(i)+three*c3(i)*mu2(i))*gx+g0(i)*df(i)*df(i)*(pres-half*aa)
107 ELSEIF(espe(i) < esubl(i))
THEN
108 aa=(t1(i)+t2(i)*mu(i))*mu(i)
111 pres=
max(aa*gx+bb*espe(i),pc(i))*off(i)
112 dpdm(i)=(t1(i)+two*t2(i)*mu(i))*gx+g0(i)*df(i)*df(i)*(pres-half*aa)
116 bb=(hh(i)+(g0(i)-hh(i))*ee)*eta
117 cc= c1(i)/(g0(i)*esubl(i))
120 pres=
max(aa+bb*espe(i),pc(i))*off(i)
121 dpdm(i)=bb*df(i)*df(i)*(pres+esubl(i)*expa*cc) +(espe(i)+esubl(i
124 pnew(i) =
max(pres,pc(i))*off(i)
127 ELSEIF(iflag == 1)
THEN
142 dvv=half*dvol(i)*df(i) /
max(em15,vnew(i))
143 xx =mu(i)/(one+mu(i))
144 IF(mu(i) >= zero)
THEN
145 aa=(c1(i)+c3(i)*mu2(i))*mu(i)+c2(i)*mu2(i)
146 aa=aa*(one-g0(i)*half*xx)
148 ELSEIF(espe(i) < esubl(i))
THEN
149 aa=(t1(i)+t2(i)*mu(i))*mu(i)
150 aa=aa*(one-g0(i)*half*xx)
154 bb=(hh(i)+(g0(i)-hh(i))*sqrt(eta))*eta
155 cc=c1(i)/(g0(i)*esubl(i))
157 aa=bb*esubl(i)*(expa-one)
160 pnew(i)=(aa +bb*espe(i))/(one+ bb*dvv)
161 pnew(i)=
max(pnew(i),pc(i))*off(i)
162 eint(i)=eint(i)-half*dvol(i)*pnew(i)
165 ELSEIF(iflag == 2)
THEN
179 IF (vnew(i) > zero)
THEN
180 xx =mu(i)/(one+mu(i))
181 IF(mu(i) >= zero)
THEN
182 aa=(c1(i)+c3(i)*mu2(i))*mu(i)+c2(i)*mu2(i)
185 pres=
max(aa*gx+bb*espe(i),pc(i))*off(i)
186 dpdm(i)=(c1(i)+two*c2(i)*mu(i)+three*c3(i)*mu2(i))*gx+g0(i)*df(i)*df(i)*(pres-half*aa)
187 ELSEIF(espe(i)<esubl(i))
THEN
188 aa=(t1(i)+t2(i)*mu(i))*mu(i)
191 pres=
max(aa*gx+bb*espe(i),pc(i))*off(i)
192 dpdm(i)=(t1(i)+two*t2(i)*mu(i))*gx+g0(i)*df(i)*df(i)*(pres-half*aa)
196 bb=(hh(i)+(g0(i)-hh(i))*ee)*eta
197 cc= c1(i)/(g0(i)*esubl(i))
199 aa= bb*esubl(i)*(expa-one)
200 pres=
max(aa+bb*espe(i),pc(i))*off(i)
201 dpdm(i)=bb*df(i)*df(i)*(pres+esubl(i)*expa*cc) +
202 . (espe(i)+esubl(i)*(expa-one))*(hh(i)+three_half*ee*(g0(i)-hh(i)))
subroutine puff(iflag, nel, pm, off, eint, mu, mu2, espe, dvol, df, vnew, mat, pnew, dpdm, dpde)