35 1 NEL ,NUPARAM,NUVAR ,NFUNC ,IFUNC ,TBURN ,
36 2 NPF ,TF ,TIME ,TIMESTEP,UPARAM ,BFRAC ,
37 3 RHO0 ,RHO ,VOLUME ,EINT ,SIGY ,DELTAX ,
38 4 EPSPXX ,EPSPYY ,EPSPZZ ,EPSPXY ,EPSPYZ ,EPSPZX ,
39 5 DEPSXX ,DEPSYY ,DEPSZZ ,DEPSXY ,DEPSYZ ,DEPSZX ,
40 6 EPSXX ,EPSYY ,EPSZZ ,EPSXY ,EPSYZ ,EPSZX ,
41 7 SIGOXX ,SIGOYY ,SIGOZZ ,SIGOXY ,SIGOYZ ,SIGOZX ,
42 8 SIGNXX ,SIGNYY ,SIGNZZ ,SIGNXY ,SIGNYZ ,SIGNZX ,
43 9 SIGVXX ,SIGVYY ,SIGVZZ ,SIGVXY ,SIGVYZ ,SIGVZX ,
44 A SOUNDSP,VISCMAX,UVAR ,OFF ,NFT ,V ,
45 B W ,X ,IX ,NIX ,JTHE ,
46 C GEO ,PID ,ILAY ,NG ,ELBUF_TAB,PM ,
47 D IPARG ,BUFVOIS ,IPM ,BUFMAT ,STIFN ,
48 E VD2 ,VDX ,VDY ,VDZ ,MAT ,VOLN ,
49 F QNEW ,DDVOL ,QOLD ,PSH)
75#include "implicit_f.inc"
87 INTEGER NEL, NUPARAM, NUVAR,NFT,NIX,JTHE,
88 . IX(NIX,*), PID(*), ILAY, NG,PM(NPROPM,*),IPARG(*),MAT(*),
91 . TIME ,TIMESTEP ,UPARAM(NUPARAM),
92 . SIGY(NEL) ,VK(NEL) ,
93 . RHO(NEL) ,RHO0(NEL) ,VOLUME(NEL),
94 . EINT(NEL) ,BUFVOIS(*) ,QNEW(NEL) ,
95 . DDVOL(NEL) ,QOLD(NEL) ,
96 . EPSPXX(NEL) ,EPSPYY(NEL),EPSPZZ(NEL),
97 . EPSPXY() ,EPSPYZ(NEL),EPSPZX(NEL),
98 . DEPSXX() ,DEPSYY(NEL),DEPSZZ(NEL),
99 . DEPSXY(NEL) ,DEPSYZ(NEL),DEPSZX(NEL),
100 . EPSXX(NEL) ,EPSYY(NEL) ,EPSZZ(NEL) ,
101 . EPSXY(NEL) ,EPSYZ(NEL) ,EPSZX(NEL) ,
102 . sigoxx(nel) ,sigoyy(nel),sigozz(nel),
103 . sigoxy(nel) ,sigoyz(nel),sigozx(nel),
104 . v(3,*) ,w(3,*) ,x(3,*) ,
105 . geo(npropg,*),bufmat(*) ,
106 . stifn(mvsiz) ,vd2(*) ,vdx(*) ,
107 . vdy(*) ,vdz(*) ,ssp
109 my_real,
intent(inout) :: psh(nel)
110 TYPE (ELBUF_STRUCT_),
TARGET,
DIMENSION(NGROUP) :: ELBUF_TAB
115 . SIGNXX(NEL),SIGNYY(NEL),SIGNZZ(NEL),
116 . SIGNXY(NEL),SIGNYZ(NEL),SIGNZX(NEL),
117 . SIGVXX(NEL),SIGVYY(NEL),SIGVZZ(NEL),
118 . SIGVXY(NEL),SIGVYZ(NEL),SIGVZX(NEL),
119 . SOUNDSP(NEL),VISCMAX(NEL)
123 my_real UVAR(NEL,NUVAR), OFF(NEL), TBURN(NEL), BFRAC(NEL), DELTAX(NEL)
127 INTEGER NPF(*), NFUNC, IFUNC(NFUNC)
132 my_real,
EXTERNAL :: finter
144 my_real :: p,qa,qb,qal,qbl, pold,vold,einc,pnew
145 my_real :: bulk, d, eg, gr, c,
alpha,beta, c1, c2,fscale_g,fscale_b,fscale_p,fscale_rho
146 my_real :: p0,xl, dd, volo, espe, e0, total_bfrac, delta_bf, brate
147 my_real :: pg,pg_,ps, mu_g, mu_p, mu, rho_g,rho_g_, rho_s, rhog, rho_si
148 INTEGER :: funcb, funcg
149 INTEGER :: IBID, IBFRAC, I , K
150 my_real :: MASS, DF, TB, , G_RHOC2, P_RHOC2, RHOC2, SSP_G, SSP_S, MASS_G, MASS_S, VS
151 my_real :: VOL_G, VOL_S, fac,compac,INVrhog
152 my_real :: m0,rho_s0,,Y_old,Y,FUNC_DOT,FUNC,V0,TMP
154 TYPE(G_BUFEL_) ,
POINTER :: GBUF
155 TYPE(L_BUFEL_) ,
POINTER :: LBUF
156 TYPE(BUF_LAY_) ,
POINTER :: BUFLY
160 gbuf => elbuf_tab(ng)%GBUF
161 lbuf => elbuf_tab(ng)%BUFLY(ilay)%LBUF(1,1,1)
162 bufly => elbuf_tab(ng)%BUFLY(ilay)
177 fscale_g = uparam(12)
178 fscale_b = uparam(13)
179 fscale_p = uparam(14)
180 fscale_rho = uparam(15)
188 eint(i) = eg*rho0(i)*volume(i)
189 uvar(i,1) = p0-psh(i)
190 uvar(i,2) = p0-psh(i)
191 uvar(i,3) = rho0(i)/compac
193 uvar(i,5) = p0-psh(i)
195 uvar(i,7) = rho0(i)*volume(i)
197 signxx(1:nel) = - (p0-psh(i))
198 signyy(1:nel) = - (p0-psh(i))
199 signzz(1:nel) = - (p0-psh(i))
210 soundsp(i)= sqrt(bulk/rho0(i))
218 mass = rho(i)*volume(i)
231 IF(bfrac(i) < one)
THEN
234 IF(time > tb) bfrac(i) = c1*(time-tb)*two_third/xl
235 IF(bfrac(i) < em04)
THEN
237 ELSEIF(bfrac(i) > one)
THEN
247 IF(bfrac(i) <= zero)
THEN
250 ELSEIF(uvar(i,6) /= one)
THEN
253 brate = fscale_b*finter(funcb,(pg_)/fscale_p,npf,tf,diff)
254 delta_bf = gr*exp(c*log((one-
alpha*uvar(i,6))))*brate*timestep
255 uvar(i,6) = uvar(i,6) + delta_bf
256 uvar(i,6) =
max(
min(one,uvar(i,6)),zero)
257 total_bfrac = bfrac(i)*uvar(i,6)
260 total_bfrac = bfrac(i)*uvar(i,6)
266 mass_s=(one-uvar(i,6))*uvar(i,7)
267 mass_g=uvar(i,7)-mass_s
269 rho_s=(one-uvar(i,6))*rho(i)
273 rho_si=rho0(i)/compac*(uvar(i,2)/bulk+one)
277 IF(mass_g > zero)rho_g=mass_g/(voln(i)-mass_s/
max(em10,rho_si))
278 pg = p0+rho_g*eg*exp(rho_g/d)
279 ps = p0+bulk*(rho_si/rho0(i)-one)
280 ssp_s = sqrt(bulk/rho0(i))
282 ssp_g = rho0(i)/d*pg + exp(rho_g/d)* pg / (rho_g/rho0(i))**2
283 ssp_g = sqrt(one/rho_g * ssp_g)
291 ssp = total_bfrac*ssp_g + (one-total_bfrac)*ssp_s
292 pnew = total_bfrac*pg + (one-total_bfrac)*ps
293 pnew = (pnew-psh(i))*off(i)
321 open(unit=1,file=
'F.txt' )
322 open(unit=2,file=
'Pg.txt' )
323 open(unit=3,file=
'rhoS.txt' )
324 open(unit=4,file=
'Ifrac.txt' )
326 open(unit=1,file=
'F.txt' , position=
"append")
327 open(unit=2,file=
'Pg.txt' , position=
"append")
328 open(unit=3,file=
'rhoS.txt', position=
"append")
329 open(unit=4,file=
'Ifrac.txt',position=
"append")
332 WRITE(1,*)time,uvar(i,6)
subroutine sigeps105(nel, nuparam, nuvar, nfunc, ifunc, tburn, npf, tf, time, timestep, uparam, bfrac, rho0, rho, volume, eint, sigy, deltax, epspxx, epspyy, epspzz, epspxy, epspyz, epspzx, depsxx, depsyy, depszz, depsxy, depsyz, depszx, epsxx, epsyy, epszz, epsxy, epsyz, epszx, sigoxx, sigoyy, sigozz, sigoxy, sigoyz, sigozx, signxx, signyy, signzz, signxy, signyz, signzx, sigvxx, sigvyy, sigvzz, sigvxy, sigvyz, sigvzx, soundsp, viscmax, uvar, off, nft, v, w, x, ix, nix, jthe, geo, pid, ilay, ng, elbuf_tab, pm, iparg, bufvois, ipm, bufmat, stifn, vd2, vdx, vdy, vdz, mat, voln, qnew, ddvol, qold, psh)