29 1 NEL ,NUVAR ,TIMESTEP,
30 2 NPRONY ,KV ,GI , BETA ,RHO0 ,
31 3 EPSPXX ,EPSPYY ,EPSPXY ,EPSPYZ ,EPSPZX ,
32 4 SIGVXX ,SIGVYY ,SIGVXY ,SIGVYZ ,SIGVZX ,
33 5 SOUNDSP,UVAR ,OFF ,NVAR_DAMP)
38#include "implicit_f.inc"
69 INTEGER NEL, NUVAR,NPRONY
70 INTEGER ,
INTENT(IN) :: NVAR_DAMP
72 . TIMESTEP,KV,GI(NPRONY),BETA(NPRONY),
73 . RHO0(NEL), EPSPXX(NEL),EPSPYY(NEL),
74 . epspxy(nel),epspyz(nel),epspzx(nel)
79 . sigvxx(nel),sigvyy(nel),
80 . sigvxy(nel),sigvyz(nel),sigvzx(nel),
86 . uvar(nel,nuvar), off(nel),thk(nel)
91 my_real :: G,DAV,EPXX,EPYY,EPZZ,P,
92 . AA(MVSIZ,NPRONY),BB(MVSIZ,NPRONY),H0(6),EPSPZZ(MVSIZ),
93 . H(6,),S(6),A1(MVSIZ),A2(MVSIZ),FAC
108 ii = (j-1)*(nuvar-nvar_damp)/nprony
109 aa(i,j) = exp(-beta(j)*timestep)
110 bb(i,j) = timestep*gi(j)*exp(-half*beta(j)*timestep)
114 h0(3) = uvar(i, (j - 1)*6 + 3)
115 a1(i) = a1(i) + aa(i,j)*h0(3)
116 a2(i) = a2(i) + bb(i,j)
123 fac = one/
max(em20,two_third*a2(i) + kv)
124 epspzz(i) = -a1(i) + (third*a2(i)-kv)*(epspxx(i) + epspyy(i))
125 epspzz(i)= fac*epspzz(i)
130 dav = third*(epspxx(i) + epspyy(i) + epspzz(i))
133 epxx = epspxx(i) - dav
134 epyy = epspyy(i) - dav
135 epzz = epspzz(i) - dav
138 ii = (j-1)*(nuvar-nvar_damp)/nprony
140 h0(1) = uvar(i, (j - 1)*6 + 1)
141 h0(2) = uvar(i, (j - 1)*6 + 2)
142 h0(3) = uvar(i, (j - 1)*6 + 3)
143 h0(4) = uvar(i, (j - 1)*6 + 4)
144 h0(5) = uvar(i, (j - 1)*6 + 5)
145 h0(6) = uvar(i, (j - 1)*6 + 6)
148 h(1,j) = aa(i,j)*h0(1) + bb(i,j)*epxx
149 h(2,j) = aa(i,j)*h0(2) + bb(i,j)*epyy
150 h(3,j) = aa(i,j)*h0(3) + bb(i,j)*epzz
151 h(4,j) = aa(i,j)*h0(4) + half*bb(i,j)*epspxy(i)
152 h(5,j) = aa(i,j)*h0(5) + half*bb(i,j)*epspyz(i)
153 h(6,j) = aa(i,j)*h0(6) + half*bb(i,j)*epspzx(i)
155 uvar(i, (j - 1)*6 + 1) = h(1,j)
156 uvar(i, (j - 1)*6 + 2) = h(2,j)
157 uvar(i, (j - 1)*6 + 3) = h(3,j)
158 uvar(i, (j - 1)*6 + 4) = h(4,j)
159 uvar(i, (j - 1)*6 + 5) = h(5,j)
160 uvar(i, (j - 1)*6 + 6) = h(6,j)
188 sigvxx(i) = sigvxx(i)*off(i)
189 sigvyy(i) = sigvyy(i)*off(i)
190 sigvxy(i) = sigvxy(i)*off(i)
191 sigvyz(i) = sigvyz(i)*off(i)
192 sigvzx(i) = sigvzx(i)*off(i)
194 soundsp(i) = sqrt(soundsp(i)**2 + g/rho0(i))
subroutine prony_modelc(nel, nuvar, timestep, nprony, kv, gi, beta, rho0, epspxx, epspyy, epspxy, epspyz, epspzx, sigvxx, sigvyy, sigvxy, sigvyz, sigvzx, soundsp, uvar, off, nvar_damp)