33 1 PM ,OFF ,SIG ,EINT ,RHO ,
34 2 EPSQ ,EPXE ,VOL ,MAT ,SSP ,
35 3 DVOL ,VNEW ,D1 ,D2 ,D3 ,
36 4 D4 ,D5 ,D6 ,SOLD1 ,SOLD2 ,
37 5 SOLD3 ,SOLD4 ,SOLD5 ,SOLD6 ,TF ,
38 6 NPF ,SIGY ,DEFP ,IPM ,PNEW ,
39 7 PSH ,MU ,SEQ_OUTPUT,NEL ,NUMMAT ,
44 USE constant_mod ,
ONLY : em14, zero, em20, three, third, two, half, one, onep333, ep20
58 INTEGER,
INTENT(IN) :: NPF(*),MAT(NEL),IPM(NPROPMI,NUMMAT),NEL
59 my_real,
INTENT(IN) :: PM(NPROPM,NUMMAT)
60 my_real,
INTENT(IN) :: OFF(NEL),EINT(NEL)
61 my_real,
INTENT(IN) :: RHO(NEL), VOL(NEL), TF(*), SEQ_OUTPUT(NEL)
62 my_real,
INTENT(IN) :: VNEW(NEL)
63 my_real,
INTENT(IN) :: D1(NEL), D2(NEL), D3(NEL), D4(NEL), D5(NEL), D6(NEL)
64 my_real,
INTENT(IN) :: DVOL(NEL), MU(NEL)
65 my_real,
INTENT(IN) :: SOLD1(NEL), SOLD2(NEL), SOLD3(NEL)
66 my_real,
INTENT(IN) :: sold4(nel), sold5(nel), sold6(nel)
67 my_real,
INTENT(INOUT) :: mu_bak(nel)
68 my_real,
INTENT(INOUT) :: psh(nel)
69 my_real,
INTENT(INOUT) :: ssp(nel)
70 my_real,
INTENT(INOUT) :: pnew(nel)
71 my_real,
INTENT(INOUT) :: sig(nel,6)
72 my_real,
INTENT(INOUT) :: epxe(nel),defp(nel),epsq(nel),dpla(nel)
73 my_real,
INTENT(INOUT) :: sigy(nel)
74 INTEGER,
INTENT(IN) :: NUMMAT
78 INTEGER I, MX, IFUNC, NPOINT
79 my_real :: dpdm(nel),dpdm0
80 my_real :: t1(nel), t2(nel), t3(nel), t4(nel),t5(nel), t6(nel)
81 my_real :: pold(nel), p(nel), pne1, ptot, pmin
86 my_real :: mumin, mumax
87 my_real :: g0(nel),a0(nel),a1(nel),a2(nel),amax, yield2(nel)
91 my_real,
EXTERNAL :: finter
121 g43 = onep333*pm(22,mx)
130 a0(1:nel) = pm(38,mx)
131 a1(1:nel) = pm(39,mx)
132 a2(1:nel) = pm(40,mx)
134 rho0(1:nel) = pm(1,mx)
142 pold(i)=-third*(sig(i,1)+sig(i,2)+sig(i,3))
149 t1(i)=sig(i,1)+pold(i)
150 t2(i)=sig(i,2)+pold(i)
151 t3(i)=sig(i,3)+pold(i)
161 p(i) = facy*finter(ifunc,mu(i),npf,tf,dpdm(i))
162 p_ = finter(ifunc,mu_bak(i),npf,tf,dpdm0)
166 alpha=mu_bak(i)/mumax
169 pne1 = p_-(mu_bak(i)-mu(i))*bulk(i)
170 if(mu_bak(i) > mumin) p(i) =
min(pne1, p(i))
171 p(i) =
max(p(i),pmin) *off(i)
172 if(mu(i) > mu_bak(i)) mu_bak(i) =
min(mumax,mu(i))
179 dpdm(i) =
max(bulk(i),dpdm(i))
180 dpdm(i)= g43 +
max(bulk(i),dpdm(i))
181 ssp(i)=sqrt(abs(dpdm(i))/rho0(i))
188 p(i)=
max(pmin,p(i))*off(i)
189 pnew(i) = p(i)-psh(i)
207 svrt = third*(d1(i)+d2(i)+d3(i))
208 t1(i)=t1(i)+gg*(d1(i)-svrt)
209 t2(i)=t2(i)+gg*(d2(i)-svrt)
210 t3(i)=t3(i)+gg*(d3(i)-svrt)
220 aj2(i)=half*(t1(i)**2+t2(i)**2+t3(i)**2)+t4(i)**2+t5(i)**2+t6(i)**2
222 g0(i) =a0(i)+a1(i)*ptot+a2(i)*ptot*ptot
223 g0(i)=
min(amax,g0(i))
224 g0(i)=
max(zero,g0(i))
225 IF(ptot <= pstar)g0(i)=zero
226 yield2(i)=aj2(i)-g0(i)
234 IF(yield2(i)<=zero .AND. g0(i)>zero)
THEN
237 ratio(i) = sqrt(g0(i)/(aj2(i)+ em14))
247 sig(i,1)=ratio(i)*t1(i)*off(i)
248 sig(i,2)=ratio(i)*t2(i)*off(i)
249 sig(i,3)=ratio(i)*t3(i)*off(i)
250 sig(i,4)=ratio(i)*t4(i)*off(i)
251 sig(i,5)=ratio(i)*t5(i)*off(i)
252 sig(i,6)=ratio(i)*t6(i)*off(i)
253 dpla(i)=(one-ratio(i))*sqrt(aj2(i))*dt1 /
max(em20,three*g)
261 defp(i) = defp(i) + dpla(i)
subroutine m21law(pm, off, sig, eint, rho, epsq, epxe, vol, mat, ssp, dvol, vnew, d1, d2, d3, d4, d5, d6, sold1, sold2, sold3, sold4, sold5, sold6, tf, npf, sigy, defp, ipm, pnew, psh, mu, seq_output, nel, nummat, dpla, mu_bak)