28 SUBROUTINE m49law(MAT ,PM ,OFF ,SIG ,EPXE ,
29 2 THETA ,EPD ,CXX ,DF ,D1 ,
30 3 D2 ,D3 ,D4 ,D5 ,D6 ,
31 4 RHO0 ,DPDM ,SIGY ,DEFP ,DPLA ,
32 5 ESPE ,NEL ,JLAG ,JTHE ,
37#include "implicit_f.inc"
50 INTEGER MAT(MVSIZ),NEL
51 INTEGER,
INTENT(IN) :: JLAG
52 INTEGER,
INTENT(IN) :: JTHE
53 my_real PM(NPROPM,*),(MVSIZ) ,SIG(NEL,6),EPXE(MVSIZ),
54 . THETA(MVSIZ),EPD(MVSIZ) ,CXX(MVSIZ) ,DF(MVSIZ) , D1(MVSIZ) ,
55 . d2(mvsiz) ,d3(mvsiz) ,d4(mvsiz) ,d5(mvsiz) , d6(mvsiz) ,
56 . rho0(mvsiz) ,dpdm(mvsiz),sigy(mvsiz) ,defp(mvsiz), dpla(mvsiz),
58 my_real,
DIMENSION(NEL) ,
INTENT(INOUT) :: fheat
59 my_real,
DIMENSION(NEL) ,
INTENT(IN) :: vol
64 my_real g(mvsiz) ,g0 ,g1(mvsiz) ,g2(mvsiz) ,sig0,
65 . cb ,cn ,cb1 ,cb2 ,ch ,
66 . cf ,epmx ,sigmx ,sph ,t0 ,
67 . p(mvsiz) ,dav(mvsiz) ,tmelt ,emelt(mvsiz),qh(mvsiz) ,
68 . qd(mvsiz) ,aj2(mvsiz) ,scale(mvsiz) ,yld(mvsiz)
69 my_real qa, qb, qc, qe, rhocp
90 p(i) =-(sig(i,1)+sig(i,2)+sig(i,3))*third
91 dav(i)=-(d1(i)+d2(i)+d3(i))*third
98 qa = p(i)*df(i)**third
99 qb = one - ch*(theta(i)-t0)
100 IF(emelt(i)<=zero .OR. cf<=zero)
THEN
102 ELSEIF(espe(i)>=emelt(i))
THEN
105 qc = exp(cf * espe(i) / (espe(i)-emelt(i)))
107 g(i) = g0 * (cb1*qa + qb) * qc
108 qd(i) = (cb2*qa + qb) * qc
109 IF(epxe(i)<=zero)
THEN
111 ELSEIF(epxe(i)>epmx)
THEN
112 qe = sig0 * ((one + cb*epmx)**cn)
114 qe = sig0 * ((one + cb*epxe(i))**cn)
116 yld(i) =
min(sigmx, qe) * qd(i)
122 g1(i) = dt1*g(i)*off(i)
123 g2(i) = two*g1(i)*off(i)
124 sig(i,1)=sig(i,1)+p(i)+g2(i)*(d1(i)+dav(i))
125 sig(i,2)=sig(i,2)+p(i)+g2(i)*(d2(i)+dav(i))
126 sig(i,3)=sig(i,3)+p(i)+g2(i)*(d3(i)+dav(i))
127 sig(i,4)=sig(i,4)+g1(i)*d4(i)
128 sig(i,5)=sig(i,5)+g1(i)*d5(i)
129 sig(i,6)=sig(i,6)+g1(i)*d6(i)
133 dpdm(i) = dpdm(i) + four_over_3*g(i)
134 cxx(i)=sqrt(abs(dpdm(i))/rho0(i))
138 epd(i)=off(i)*
max(abs(d1(i)), abs(d2(i)), abs(d3(i)), half*abs(d4(i)),half*abs(d5
139 aj2(i)=half*(sig(i,1)**2+sig(i,2)**2+sig(i,3)**2)+sig(i,4)**2+sig(i,5)**2+sig(i,6)
140 aj2(i)=sqrt(three*aj2(i))
145 IF(theta(i)>=tmelt)
THEN
154 qh(i)= qd(i)*sig0*cb*cn * ((one + cb
155 ELSEIF(epxe(i)>zero)
THEN
156 qh(i)= qd(i)*sig0*cb*cn / ((one + cb*epxe(i))**(one-cn))
161 IF(aj2(i)<=yld(i))
THEN
163 ELSEIF(aj2(i)/=zero)
THEN
164 scale(i)=yld(i)/aj2(i)
173 dpla(i)=(one -scale(i))*aj2(i)/
max((three*g(i)+qh(i)),em15)
175 yld(i) =yld(i)+dpla(i)*qh(i)
176 sig(i,1)=scale(i)*sig(i,1)
177 sig(i,2)=scale(i)*sig(i,2)
178 sig(i,3)=scale(i)*sig(i,3)
179 sig(i,4)=scale(i)*sig(i,4)
180 sig(i,5)=scale(i)*sig(i,5)
181 sig(i,6)=scale(i)*sig(i,6)
182 epxe(i) =epxe(i)+dpla(i)
183 epxe(i) =epxe(i)*off(i)
194 IF (jthe /= 0 .AND. jlag /= 0)
THEN
196 fheat(i) = fheat(i) + sigy(i)*dpla(i)*vol(i)
198 ELSEIF(rhocp > zero)
THEN
200 theta(i) = theta(i) + sigy(i)*dpla(i) / rhocp
202 ! internal energy is incremented later in parent subroutine(
mmain)
subroutine m49law(mat, pm, off, sig, epxe, theta, epd, cxx, df, d1, d2, d3, d4, d5, d6, rho0, dpdm, sigy, defp, dpla, espe, nel, jlag, jthe, fheat, vol)
subroutine mmain(pm, elbuf_str, ix, nix, x, geo, iparg, nel, skew, bufmat, ipart, ipartel, nummat, matparam, imat, ipm, ngl, pid, npf, tf, mfxx, mfxy, mfxz, mfyx, mfyy, mfyz, mfzx, mfzy, mfzz, rx, ry, rz, sx, sy, sz, gama, voln, dvol, s1, s2, s3, s4, s5, s6, dxx, dyy, dzz, d4, d5, d6, wxx, wyy, wzz)