32 4 D6, RHO0, DPDM, EPD,
33 5 IPLA, SIGY, DEFP, DPLA,
34 6 EPSP, TSTAR, TEMPEL, NEL,
39#include "implicit_f.inc"
48 INTEGER,
INTENT(IN) ::
49 INTEGER,
INTENT(IN) :: NEL
50 INTEGER,
INTENT(IN) :: IPLA
51 INTEGER,
INTENT(IN) :: MAT(NEL)
52 INTEGER,
INTENT(IN) :: JLAG
53 my_real,
INTENT(IN) :: PM(NPROPM,*)
54 my_real,
INTENT(IN) :: VOL(NEL)
56 my_real ,
DIMENSION(NEL) :: off,epxe,ssp,d1,d2,d3,d4,d5,d6,rho0,dpdm,epd,sigy,defp,dpla,epsp
57 my_real ,
DIMENSION(NEL) ,
INTENT(IN) :: tstar
58 my_real ,
DIMENSION(NEl) ,
INTENT(INOUT) :: tempel
59 my_real,
DIMENSION(NEL) ,
INTENT(INOUT) :: fheat
64 my_real :: rhocp,tmax,ct, ce, ch
65 my_real g(nel) ,g1(nel) ,g2(nel) ,qs(nel) ,ak(nel),
66 . qh(nel) ,tmelt(nel),aj2(nel) ,dav(nel),p(nel) ,
67 . epmx(nel) ,ca(nel) ,cb(nel) ,cc(nel) ,
68 . cn(nel) ,epxo(nel) ,epdr(nel),cmx(nel),sigmx(nel),
91 p(i) =-third*(sig(i,1)+sig(i,2)+sig(i,3))
92 dav(i)=-third*(d1(i)+d2(i)+d3(i))
94 g2(i)=two*g1(i)*off(i)
100 dpdm(i) = dpdm(i) + onep333*g(i)
101 ssp(i)=sqrt(abs(dpdm(i))/rho0(i))
107 sig(i,1)=sig(i,1)+p(i)+g2(i)*(d1(i)+dav(i))
108 sig(i,2)=sig(i,2)+p(i)+g2(i)*(d2(i)+dav(i))
109 sig(i,3)=sig(i,3)+p(i)+g2(i)*(d3(i)+dav(i))
110 sig(i,4)=sig(i,4)+g1(i)*d4(i)
111 sig(i,5)=sig(i,5)+g1(i)*d5(i)
112 sig(i,6)=sig(i,6)+g1(i)*d6(i)
116 epd(i)=off(i)*
max( abs(d1(i)), abs(d2(i)), abs(d3(i)),
117 . half*abs(d4(i)),half*abs(d5(i)),half*abs(d6(i)))
120 aj2(i)=half*(sig(i,1)**2+sig(i,2)**2+sig(i,3)**2)
121 . +sig(i,4)**2+sig(i,5)**2+sig(i,6)**2
122 aj2(i)=sqrt(three*aj2(i))
129 IF (tempel(i) >= tmelt(i))
THEN
135 ELSEIF (tempel(i) > t0(i))
THEN
136 IF (tempel(i) > tmax) cmx(i)=one
137 ct = one - tstar(i)**cmx(i)
140 IF(epd(i)<=epdr(i))
THEN
143 ce=one + cc(i) * log(epd(i)/epdr(i))
146 IF(epxe(i)<=zero)
THEN
148 ELSEIF(epxe(i)>epmx(i))
THEN
151 ch=ca(i)+cb(i)*epxe(i)**cn(i)
154 ak(i) =
min(sigmx(i),ch)*ce*ct
159 qh(i)= (cb(i)*cn(i)*epxe(i)**(cn(i) - one))*ce*ct
160 ELSEIF(epxe(i)>zero)
THEN
161 qh(i)= (cb(i)*cn(i)/epxe(i)**(one -cn(i)))*ce*ct
168 IF(aj2(i)<=ak(i))
THEN
170 ELSEIF(aj2(i)/=zero)
THEN
171 scale(i)=ak(i)/aj2(i)
179 sig(i,1)=scale(i)*sig(i,1)
180 sig(i,2)=scale(i)*sig(i,2)
181 sig(i,3)=scale(i)*sig(i,3)
182 sig(i,4)=scale(i)*sig(i,4)
183 sig(i,5)=scale(i)*sig(i,5)
184 sig(i,6)=scale(i)*sig(i,6)
185 dpla(i) =(one -scale(i))*aj2(i)/(three*g(i)+qh(i))
186 epxe(i)=epxe(i)+ dpla(i)
187 epxe(i)=epxe(i)*off(i)
192 sig(i,1)=scale(i)*sig(i,1)
193 sig(i,2)=scale(i)*sig(i,2)
194 sig(i,3)=scale(i)*sig(i,3)
195 sig(i,4)=scale(i)*sig(i,4)
196 sig(i,5)=scale(i)*sig(i,5)
197 sig(i,6)=scale(i)*sig(i,6)
198 dpla(i) =(one -scale(i))*aj2(i)/(three*g(i))
199 epxe(i)=epxe(i)+dpla(i)
200 epxe(i)=epxe(i)*off(i)
206 dpla(i)=(one -scale(i))*aj2(i)/(three*g(i)+qh(i))
208 ak(i)=ak(i)+dpla(i)*qh(i)
209 scale(i)=
min(one,ak(i)/
max(aj2(i),em15))
210 sig(i,1)=scale(i)*sig(i,1)
211 sig(i,2)=scale(i)*sig(i,2)
212 sig(i,3)=scale(i)*sig(i,3)
213 sig(i,4)=scale(i)*sig(i,4)
214 sig(i,5)=scale(i)*sig(i,5)
215 sig(i,6)=scale(i)*sig(i,6)
216 epxe(i)=epxe(i)+dpla(i)
217 epxe(i)=epxe(i)*off(i)
228 IF (jthe /= 0 .AND. jlag /= 0)
THEN
230 fheat(i) = fheat(i) + sigy(i)*dpla(i)*vol(i)
232 ELSEIF(rhocp > zero)
THEN
234 tempel(i) = tempel(i) + sigy(i)*dpla(i) / rhocp
subroutine m4law(pm, off, sig, epxe, mat, ssp, vol, d1, d2, d3, d4, d5, d6, rho0, dpdm, epd, ipla, sigy, defp, dpla, epsp, tstar, tempel, nel, jthe, fheat, jlag)