28 SUBROUTINE osborne (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), psh(nel) ,
82 my_real :: P0,E0,DVV,PP,dPdMU
83 my_real :: a1,a2,b0,b1,b2,c0,c1,d0, a2_,rho0
101 psh(1:nel) = pm(88,mx)
104 IF(mu(i)<zero)a2_=-a2
106 pp = (a1*mu(i)+a2_*mu(i)*mu(i)+(b0+b1*mu(i)+b2*mu(i)*mu(i))*espe(i)+(c1*mu(i)+c0)*espe(i)*espe(i))/denom
107 dpdmu = (a1+2*a2_*mu(i)+(two*b2*mu(i)+b1)*espe(i)+c1*espe(i)*espe(i))/denom
108 dpde(i) = (((b2*mu(i)+b1)*mu(i)+b0)+(two*(c1*mu(i)+c0))*espe(i) - pp/denom)/denom
109 dpdm(i) = dpdmu + dpde(i)*df(i)*df(i)*(pp)
110 pnew(i) = pp * off(i)
111 pnew(i) = pnew(i) - psh(i)
114 ELSEIF(iflag == 1)
THEN
127 psh(1:nel) = pm(88,mx)
130 IF(mu(i)<zero)a2_=-a2
131 dvv = dvol(i)*df(i) /
max(em15,vnew(i))
134 pp = (a1*mu(i)+a2_*mu(i)*mu(i)+(b0+b1*mu(i)+b2*mu(i)*mu(i))*espe(i)+(c1*mu(i)+c0)*espe(i)*espe(i))/denom
135 espe(i) = espe(i) - (pp)*dvv
137 pp = (a1*mu(i)+a2_*mu(i)*mu(i)+(b0+b1*mu(i)+b2*mu(i)*mu(i))*espe(i)+(c1*mu(i)+c0)*espe(i)*espe(i))/denom
138 espe(i) = espe(i) - (pp)*dvv
139 pnew(i) = pp * off(i)
140 eint(i) = eint(i) - half*dvol(i)*(pnew(i))
141 pnew(i) = pnew(i) - psh(i)
142 dpde(i) = (((b2*mu(i)+b1)*mu(i)+b0)+(two*(c1*mu(i)+c0))*espe(i) - pp/denom)/denom
145 ELSEIF(iflag == 2)
THEN
158 psh(1:nel) = pm(88,mx)
160 IF (vnew(i) > zero)
THEN
162 IF(mu(i)<zero)a2_=-a2
164 pp = (a1*mu(i)+a2_*mu(i)*mu(i)+(b0+b1*mu(i)+b2*mu(i)*mu(i))*espe(i)+(c1*mu(i)+c0)*espe(i)*espe(i))/denom
165 dpdmu = (a1+2*a2_*mu(i)+(two*b2*mu(i)+b1)*espe(i)+c1*espe(i)*espe(i))
166 dpde(i) = (((b2*mu(i)+b1)*mu(i)+b0)+(two*(c1*mu(i)+c0))*espe(i) - pp/denom)/denom
167 dpdm(i) = dpdmu + dpde(i)*df(i)*df(i)*(pp)
169 pnew(i) = pnew(i) - psh(i)
subroutine osborne(iflag, nel, pm, off, eint, mu, espe, dvol, df, vnew, mat, psh, pnew, dpdm, dpde)