37 3 D6, NEL, RHO, BPRELD,
38 4 EINT, QOLD, VOL0, STIFN,
39 5 DT2T, NELTST, ITYPTST, OFFG,
40 6 GEO, PID, MUMAX, NGL,
41 7 SSP, DVOL, AIRE, VNEW,
42 8 VD2, DELTAX, VIS, PNEW,
43 9 PSH, QNEW, SSP_EQ, SOLD1,
44 A SOLD2, SOLD3, SOLD4, SOLD5,
45 B SOLD6, MSSA, DMELS, CONDE,
46 C AMU, VOL_AVG, DTEL, G_DT,
47 D OFF, IPM, RHOREF, RHOSP,
48 E VOL0DP, ISMSTR, JSPH, JTUR,
49 F ITY, JTHE, JSMS, NPG ,
50 G glob_therm,NUMGEO,IGEO)
55 USE prop_param_mod ,
only : n_var_igeo
59#include "implicit_f.inc"
73 INTEGER,
INTENT(IN) :: JSMS
74 INTEGER,
INTENT(IN) :: JTUR
75 INTEGER,
INTENT(IN) :: ITY
76 INTEGER,
INTENT(IN) :: JTHE
77 INTEGER,
INTENT(IN) :: ISMSTR
78 INTEGER,
INTENT(IN) :: JSPH,NPG
79 INTEGER,
INTENT(IN) :: NUMGEO
83 . PM(NPROPM,*), SIG(NEL,6), RHO(MVSIZ),
84 . D1(*), D2(*), D3(*), D4(*),D5(*), (*),
85 . BPRELD(NEL,*), OFF(*)
86 INTEGER NELTST,ITYPTST,PID(*),G_DT
87 INTEGER MAT(*),NGL(*),IPM(NPROPMI,*)
93 . vol0(*),stifn(*), offg(*),geo(npropg,*),mumax(*)
95 . vnew(*), vd2(*), deltax(*), ssp(*), aire(*), vis(*),
96 . psh(*), pnew(*),qnew(*) ,ssp_eq(*), dvol(*),
97 . sold1(*), sold2(*), sold3(*), sold4(*), sold5(*), sold6(*),
98 . mssa(*), dmels(*),conde(*),amu(*),vol_avg(*),
dtel(*),
100 DOUBLE PRECISION VOL0DP(*)
101 type (glob_therm_) ,
intent(inout) :: glob_therm
102 integer,
dimension(n_var_igeo,numgeo),
intent(in) :: igeo
108 . reduc ,reduc1 , t1, t2 , ee, nu, ggt, treps, p, tp
110 . c1(mvsiz), lmbd(mvsiz), gg(mvsiz),
111 . rho0(mvsiz), rho0_1,c1_1
115 . e1, e2, e3, e4, e5, e6, einc,
116 . bid1, bid2, bid3, dta
122 t1 = bpreld(i,1)+zep4*(bpreld(i,2)-bpreld(i,1))
123 t2 = bpreld(i,1)+zep7*(bpreld(i,2)-bpreld(i,1))
127 reduc =
min(reduc1*(one-tp/(t2-t1))+tp/(t2-t1), one)
133 ee = pm(20, mx)*reduc
134 gg(i) = pm(22, mx)*reduc
136 lmbd(i) = dt1*ee*nu/((one+nu)*(one-two*nu))
141 ssp(i)=sqrt((onep333*pm(22, mx)+c1_1)/rho0(i))
146 1 pm, off, rho, bid1,
147 2 bid2, ssp, bid3, stifn,
148 3 dt2t, neltst, ityptst, aire,
149 4 offg, geo, pid, vnew,
150 5 vd2, deltax, vis, d1,
152 7 mat, ngl, qnew, ssp_eq,
153 8 vol0, mssa, dmels, igeo,
154 9 facq0, conde,
dtel, g_dt,
155 a ipm, rhoref, rhosp, nel,
156 b ity, ismstr, jtur, jthe,
157 c jsms, npg , glob_therm)
160 1 pm, off, rho, bid1,
161 2 bid2, bid3, stifn, dt2t,
162 3 neltst, ityptst, offg, geo,
163 4 pid, mumax, ssp, vnew,
164 5 vd2, deltax, vis, d1,
166 7 mat, ngl, qnew, ssp_eq,
167 8 g_dt,
dtel, nel, ity,
174 pnew(i) = c1(i)*amu(i)
175 treps = d1(i)+d2(i)+d3(i)
177 sig(i,1) = sig(i,1)+two*ggt*d1(i)+lmbd(i)*treps
178 sig(i,2) = sig(i,2)+two*ggt*d2(i)+lmbd(i)*treps
179 sig(i,3) = sig(i,3)+two*ggt*d3(i)+lmbd(i)*treps
180 sig(i,4) = sig(i,4)+ggt*d4(i)
181 sig(i,5) = sig(i,5)+ggt*d5(i)
182 sig(i,6) = sig(i,6)+ggt*d6(i)
195 IF(tt >= (bpreld(i,2)-two*dt1))
THEN
196 p = -third*(sig(i,1)+sig(i,2)+sig(i,3))
197 rho(i)=rho0_1*(one+p/c1_1)
204 IF(tt >= (bpreld(i,2)-two*dt1))
THEN
205 p = -third*(sig(i,1)+sig(i,2)+sig(i,3))
206 rho(i)=rho0_1*(one+p/c1_1)
207 vol0dp(i) = vol0(i)*(one+p/c1_1)
212 ELSEIF(ismstr==2)
THEN
215 IF(offg(i) > one)
THEN
216 IF(tt >= (bpreld(i,2)-two*dt1))
THEN
217 p = -third*(sig(i,1)+sig(i,2)+sig(i,3))
218 rho(i)=rho0_1*(one+p/c1_1)
223 p = -third*(sig(i,1)+sig(i,2)+sig(i,3))
224 vol0(i) = vnew(i)*(one+p/c1_1)
225 rho(i) = rho0_1*vol0(i)/vnew(i)
226 ! amu = rho/rho0 - 1 in double precision
232 IF(offg(i) > one)
THEN
233 IF(tt >= (bpreld(i,2)-two*dt1))
THEN
234 p = -third*(sig(i,1)+sig(i,2)+sig(i,3))
235 rho(i) = rho0_1*(one+p/c1_1)
236 vol0dp(i) = vol0(i)*(one+p/c1_1)
240 p = -third*(sig(i,1)+sig(i,2)+sig(i,3))
241 vol0(i) = vnew(i)*(one+p/c1_1)
243 ! amu = vol0dp/voldp - 1 in single precision, voldp = v in large strain
244 rho(i) = rho0_1*vol0(i)/vnew(i)
248 ELSEIF(ismstr<=4)
THEN
251 p = -third*(sig(i,1)+sig(i,2)+sig(i,3))
252 vol0(i)=vnew(i)*(one+p/c1_1)
253 rho(i)= rho0_1*vol0(i)/vnew(i)
258 p = -third*(sig(i,1)+sig(i,2)+sig(i,3))
259 vol0(i) = vnew(i)*(one+p/c1_1)
260 rho(i) = rho0_1*vol0(i)/vnew(i)
268 e1=d1(i)*(sold1(i)+sig(i,1))
269 e2=d2(i)*(sold2(i)+sig(i,2))
270 e3=d3(i)*(sold3(i)+sig(i,3))
271 e4=d4(i)*(sold4(i)+sig(i,4))
272 e5=d5(i)*(sold5(i)+sig(i,5))
273 e6=d6(i)*(sold6(i)+sig(i,6))
275 eint(i)=(eint(i)+einc*off(i)) /
max(em15,vol0(i))
subroutine mqviscb(pm, off, rho, rk, temp, ssp, re, sti, dt2t, neltst, ityptst, aire, offg, geo, pid, vol, vd2, deltax, vis, d1, d2, d3, pnew, psh, mat, ngl, qvis, ssp_eq, vol0, mssa, dmels, igeo, facq0, conde, dtel, g_dt, ipm, rhoref, rhosp, nel, ity, ismstr, jtur, jthe, jsms, npg, glob_therm)
subroutine sboltlaw(pm, sig, mat, d1, d2, d3, d4, d5, d6, nel, rho, bpreld, eint, qold, vol0, stifn, dt2t, neltst, ityptst, offg, geo, pid, mumax, ngl, ssp, dvol, aire, vnew, vd2, deltax, vis, pnew, psh, qnew, ssp_eq, sold1, sold2, sold3, sold4, sold5, sold6, mssa, dmels, conde, amu, vol_avg, dtel, g_dt, off, ipm, rhoref, rhosp, vol0dp, ismstr, jsph, jtur, ity, jthe, jsms, npg, glob_therm, numgeo, igeo)