30 SUBROUTINE visc_prony(VISC ,NPRONY ,NEL ,NVARVIS ,UVARVIS ,
31 . EPSPXX ,EPSPYY ,EPSPZZ ,EPSPXY ,EPSPYZ ,EPSPZX ,
32 . SV1 ,SV2 ,SV3 ,SV4 ,SV5 ,SV6 ,
33 . TIMESTEP,RHO ,VISCMAX ,SOUNDSP ,NVAR_DAMP)
41#include "implicit_f.inc"
45 INTEGER ,
INTENT(IN) :: NEL,NVARVIS,NPRONY
46 INTEGER ,
INTENT(IN) :: NVAR_DAMP
51 . epspxx(nel),epspyy(nel),epspzz(nel),
52 . epspxy(nel),epspyz(nel),epspzx(nel),
53 . sv1(nel),sv2(nel),sv3(nel
54 TYPE(visc_param_) ,
INTENT(IN) :: VISC
59 . viscmax(nel),soundsp(nel)
63 my_real ,
INTENT(INOUT) :: uvarvis(nel,nvarvis)
70 my_real,
DIMENSION(NEL) :: p,epxx,epyy,epzz,trace
72 . aa(nprony),bb(nprony),gv(nprony),beta(nprony),h0(6),h(6),
73 . aak(nprony),bbk(nprony),betak(nprony),kv(nprony),hp0,
83 gv(j) = visc%UPARAM(1 + j)
84 beta(j) = visc%UPARAM(1 + j + nprony
85 kv(j) = visc%UPARAM(1 + j + nprony*2)
86 betak(j) = visc%UPARAM(1 + j + nprony*3)
89 aa(j) = exp(-beta(j)*timestep)
90 bb(j) = two*timestep*gv(j)*exp(-half*beta(j)*timestep)
92 aak(j) = exp(-betak(j)*timestep)
93 bbk(j) = timestep*kv(j)*exp(-half*betak(j)*timestep)
99 trace(i) = -(epspxx(i) + epspyy(i) + epspzz(i))
104 epxx(i) = epspxx(i) + dav
105 epyy(i) = epspyy(i) + dav
106 epzz(i) = epspzz(i) + dav
117 ii = (j-1)*(nvarvis-nvar_damp)/nprony
120 h0(1) = uvarvis(i,ii + 1)
121 h0(2) = uvarvis(i,ii + 2)
122 h0(3) = uvarvis(i,ii + 3)
123 h0(4) = uvarvis(i,ii + 4)
124 h0(5) = uvarvis(i,ii + 5)
125 h0(6) = uvarvis(i,ii + 6)
126 hp0 = uvarvis(i,ii + 7)
128 h(1) = aa(j)*h0(1) + bb(j)*epxx(i)
129 h(2) = aa(j)*h0(2) + bb(j)*epyy(i
130 h(3) = aa(j)*h0(3) + bb(j)*epzz(i)
131 h(4) = aa(j)*h0(4) + half*bb(j)*epspxy(i)
132 h(5) = aa(j)*h0(5) + half*bb(j)*epspyz(i)
133 h(6) = aa(j)*h0(6) + half*bb(j)*epspzx(i)
134 hp = aak(j)*hp0 + bbk(j)*trace(i)
136 uvarvis(i,ii + 1) = h(1)
137 uvarvis(i,ii + 2) = h(2)
138 uvarvis(i,ii + 3) = h(3)
140 uvarvis(i,ii + 5) = h(5)
141 uvarvis(i,ii + 6) = h(6)
142 uvarvis(i,ii + 7) = hp
144 sv1(i) = sv1(i) + h(1)
145 sv2(i) = sv2(i) + h(2)
146 sv3(i) = sv3(i) + h(3)
147 sv4(i) = sv4(i) + h(4)
148 sv5(i) = sv5(i) + h(5)
149 sv6(i) = sv6(i) + h(6)
155 sv1(i) = sv1(i) - p(i)
156 sv2(i) = sv2(i) - p(i)
157 sv3(i) = sv3(i) - p(i)
159 soundsp(i) = sqrt(soundsp(i)**2 + (four_over_3*g + rbulk)/rho(i))
164 trace(i) = epspxx(i) + epspyy(i) + epspzz(i)
168 epxx(i) = epspxx(i) - dav
169 epyy(i) = epspyy(i) - dav
170 epzz(i) = epspzz(i) - dav
181 ii = (j-1)*(nvarvis-nvar_damp)/nprony
184 h0(1) = uvarvis(i,ii + 1)
185 h0(2) = uvarvis(i,ii + 2)
186 h0(3) = uvarvis(i,ii + 3)
188 h0(5) = uvarvis(i,ii + 5)
189 h0(6) = uvarvis(i,ii + 6)
190 hp0 = uvarvis(i,ii + 7)
192 h(1) = aa(j)*h0(1) + bb(j)*epxx(i)
193 h(2) = aa(j)*h0(2) + bb(j)*epyy(i)
194 h(3) = aa(j)*h0(3) + bb(j)*epzz(i)
195 h(4) = aa(j)*h0(4) + half*bb(j)*epspxy(i)
196 h(5) = aa(j)*h0(5) + half*bb(j)*epspyz(i)
197 h(6) = aa(j)*h0(6) + half*bb(j)*epspzx(i)
199 uvarvis(i,ii + 1) = h(1)
200 uvarvis(i,ii + 2) = h(2)
201 uvarvis(i,ii + 3) = h(3)
202 uvarvis(i,ii + 4) = h(4)
203 uvarvis(i,ii + 5) = h(5)
204 uvarvis(i,ii + 6) = h(6)
206 sv1(i) = sv1(i) + h(1)
207 sv2(i) = sv2(i) + h(2)
208 sv3(i) = sv3(i) + h(3)
209 sv4(i) = sv4(i) + h(4)
210 sv5(i) = sv5(i) + h(5)
211 sv6(i) = sv6(i) + h(6)
216 sv1(i) = sv1(i) - p(i)
217 sv2(i) = sv2(i) - p(i)
218 sv3(i) = sv3(i) - p(i)
220 soundsp(i) = sqrt(soundsp(i)**2 + (four_over_3*g + rbulk)/rho(i))
subroutine visc_prony(visc, nprony, nel, nvarvis, uvarvis, epspxx, epspyy, epspzz, epspxy, epspyz, epspzx, sv1, sv2, sv3, sv4, sv5, sv6, timestep, rho, viscmax, soundsp, nvar_damp)