55 INTEGER IJK, I, J, K, IM, JM, KM, IMJK, IJMK, IJKM,&
56 IJKE, IJKW, IJKN, IJKS, IJKT, IJKB
59 DOUBLE PRECISION NiE, NiW, NiN, NiS, NiT,&
63 DOUBLE PRECISION Mi, NonZeroTheta
66 DOUBLE PRECISION ThermMobilityX, ThermMobilityY, ThermMobilityZ
69 DOUBLE PRECISION DelDotJoi, FiDotJoi, JoiXC, JoiYC, JoiZC
70 DOUBLE PRECISION FiXC, FiYC, FiZC,ni(
smax), SIGMAI(
smax)
76 DOUBLE PRECISION DufourX, DufourY, DufourZ, DijQTerm, &
77 DijQTermE, DijQTermW, DijQTermN, DijQTermS, DijQTermT
80 DOUBLE PRECISION DijQTermE_H,DijQTermE_A,DijQTermW_H,DijQTermW_A,DijQTermN_H
86 DOUBLE PRECISION SOURCERHS, PressureRhs, ShearProduction, BulkViscRhs
91 DOUBLE PRECISION SOURCELHS, PressureLhs, CollDissipation, BulkViscLhs
92 DOUBLE PRECISION UGC, USCM, VGC, VSCM, WGC, WSCM
108 ijkb = bottom_of(ijk)
136 colldissipation = 1.5d0*ntotal*
zeta0(ijk)
158 mi = (
pi/6.d0)*
d_p(ijk,l)**3 *
ro_s(ijk,l)
160 nip =
rop_s(ijk,l) /mi
161 nie =
rop_s(ijke,l)/mi
162 niw =
rop_s(ijkw,l)/mi
163 nin =
rop_s(ijkn,l)/mi
164 nis =
rop_s(ijks,l)/mi
180 IF(abs(dijqterme_h) .le. abs(dijqterme_a))
THEN 181 dijqterme = dijqterme_h
183 dijqterme = dijqterme_a
186 dijqtermw_h = avg_x_s(dijqtermw, dijqterm, im)
187 dijqtermw_a = avg_x(dijqtermw, dijqterm, im)
188 IF(abs(dijqtermw_h) .le. abs(dijqtermw_a))
THEN 189 dijqtermw = dijqtermw_h
191 dijqtermw = dijqtermw_a
194 dijqtermn_h = avg_y_s(dijqterm, dijqtermn, j)
195 dijqtermn_a = avg_y(dijqterm, dijqtermn, j)
196 IF(abs(dijqtermn_h) .le. abs(dijqtermn_a))
THEN 197 dijqtermn = dijqtermn_h
199 dijqtermn = dijqtermn_a
202 dijqterms_h = avg_y_s(dijqterms, dijqterm, jm)
203 dijqterms_a = avg_y(dijqterms, dijqterm, jm)
204 IF(abs(dijqterms_h) .le. abs(dijqterms_a))
THEN 205 dijqterms = dijqterms_h
207 dijqterms = dijqterms_a
210 dufourx = dufourx + ( dijqterme*(nie-nip)*
odx_e(i) - &
211 dijqtermw*(nip-niw)*
odx_e(im) )*
ayz(ijk
216 nit =
rop_s(ijkt,l)/mi
217 nib =
rop_s(ijkb,l)/mi
228 IF(abs(dijqtermt_h) .le. abs(dijqtermt_a))
THEN 229 dijqtermt=dijqtermt_h
231 dijqtermt=dijqtermt_a
234 dijqtermb_h = avg_z_s(dijqtermb, dijqterm, km)
235 dijqtermb_a = avg_z(dijqtermb, dijqterm, km)
237 IF(abs(dijqtermb_h) .le. abs(dijqtermb_a))
THEN 238 dijqtermb=dijqtermb_h
240 dijqtermb=dijqtermb_a
243 dufourz = dufourz + ( dijqtermt*(nit-nip)*
odz_t(k)*
ox(i
250 lijtermw_h = avg_x_s(
lij(ijkw,m,l),
lij(ijk,m,l),im)
251 lijtermw_a = avg_x(
lij(ijkw,m,l),
lij(ijk,m,l),im)
252 IF(abs(lijtermw_h) .le. abs(lijtermw_a))
THEN 253 lijtermw = lijtermw_h
255 lijtermw = lijtermw_a
258 lijterme_h = avg_x_s(
lij(ijk,m,l),
lij(ijke,m,l),i)
259 lijterme_a = avg_x(
lij(ijk,m,l),
lij(ijke,m,l),i)
261 IF(abs(lijterme_h) .le. abs(lijterme_a))
THEN 262 lijterme = lijterme_h
264 lijterme = lijterme_a
267 lijtermn_h = avg_y_s(
lij(ijk,m,l),
lij(ijkn,m,l),j)
268 lijtermn_a = avg_y(
lij(ijk,m,l),
lij(ijkn,m,l),j)
269 IF(abs(lijtermn_h) .le. abs(lijtermn_a))
THEN 270 lijtermn = lijtermn_h
272 lijtermn = lijtermn_a
275 lijterms_h = avg_y_s(
lij(ijks,m,l),
lij(ijk,m,l),jm)
276 lijterms_a = avg_y(
lij(ijks,m,l),
lij(ijk,m,l),jm)
277 IF(abs(lijterms_h) .le. abs(lijterms_a))
THEN 278 lijterms = lijterms_h
280 lijterms = lijterms_a
283 thermmobilityx = thermmobilityx + ( &
284 fix(ijk,l) *lijterme -
fix(imjk,l)*lijtermw )*
ayz 291 lijtermt_h = avg_z_s(
lij(ijk,m,l),
lij(ijkt,m,l),k)
292 lijtermt_a = avg_z(
lij(ijk,m,l),
lij(ijkt,m,l),k)
293 IF(abs(lijtermt_h) .le. abs(lijtermt_a))
THEN 294 lijtermt = lijtermt_h
296 lijtermt = lijtermt_a
299 lijtermb_h = avg_z_s(
lij(ijkb,m,l),
lij(ijk,m,l),km)
300 lijtermb_a = avg_z(
lij(ijkb,m,l),
lij(ijk,m,l),km)
301 IF(abs(lijtermb_h) .le. abs(lijtermb_a))
THEN 302 lijtermb = lijtermb_h
304 lijtermb = lijtermb_a
307 thermmobilityz = thermmobilityz + ( &
308 fiz(ijk,l) *lijtermt -
fiz(ijkm,l)*lijtermb )*
axy 315 mi = (
pi/6.d0)*
d_p(ijk,m)**3 *
ro_s(ijk,m)
317 deldotjoi = deldotjoi + 1.5d0*
theta_m(ijk,
mmax)/mi * ( &
327 joixc = avg_x_e(
joix(imjk,m),
joix(ijk,m),i)
328 joiyc = avg_y_n(
joiy(ijmk,m),
joiy(ijk,m))
329 joizc = avg_z_t(
joiz(ijkm,m),
joiz(ijk,m))
332 fixc = avg_x_e(
fix(imjk,m),
fix(ijk,m),i)
333 fiyc = avg_y_n(
fiy(ijmk,m),
fiy(ijk,m))
334 fizc = avg_z_t(
fiz(ijkm,m),
fiz(ijk,m))
336 fidotjoi = fidotjoi + ( joixc*fixc + joiyc*fiyc + joizc*fizc
340 ugc = avg_x_e(
u_g(imjk),
u_g(ijk),i)
341 vgc = avg_y_n(
v_g(ijmk),
v_g(ijk))
342 wgc = avg_z_t(
w_g(ijkm),
w_g(ijk))
343 uscm = avg_x_e(
u_s(imjk,m),
u_s(ijk,m),i)
344 vscm = avg_y_n(
v_s(ijmk,m),
v_s(ijk,m))
345 wscm = avg_z_t(
w_s(ijkm,m),
w_s(ijk,m))
347 vslip = (uscm-ugc)**2 + (vscm-vgc)**2 + (wscm-wgc)**2
363 sink_fluid = sink_fluid/nonzerotheta
365 sourcerhs = (pressurerhs + shearproduction + bulkviscrhs + dissdivurhs
double precision, dimension(:,:), allocatable joix
double precision, dimension(:,:), allocatable v_s
integer, dimension(:), allocatable i_of
double precision, dimension(:,:), allocatable trd_s_c
double precision, dimension(:,:), allocatable mu_s_c
double precision, dimension(:), allocatable axy
double precision, dimension(:,:), allocatable w_s
double precision, dimension(:,:), allocatable trd_s2
integer, dimension(:), allocatable im1
double precision, parameter switch
double precision, dimension(:,:), allocatable fix
double precision, dimension(:), allocatable ayz
double precision, dimension(:,:), allocatable u_s
double precision, dimension(:,:), allocatable lambda_s_c
integer, dimension(:), allocatable k_of
double precision, dimension(:,:), allocatable fiz
double precision, dimension(:), allocatable ody_n
double precision, dimension(:,:), allocatable p_s_c
double precision, dimension(:,:), allocatable d_p
double precision, dimension(:,:,:), allocatable lij
integer, dimension(:), allocatable j_of
double precision, dimension(:), allocatable odx_e
integer, dimension(:), allocatable jm1
subroutine source_ghd_granular_energy(SOURCELHS, SOURCERHS, IJK)
double precision, parameter small_number
double precision, dimension(:), allocatable ox
double precision, dimension(:,:), allocatable theta_m
double precision, dimension(:), allocatable v_g
double precision, dimension(:,:), allocatable joiy
double precision, dimension(:), allocatable zetau
double precision, dimension(:), allocatable w_g
double precision, dimension(:), allocatable axz
double precision, parameter dil_ep_s
double precision, dimension(:,:), allocatable ro_s
integer, dimension(:), allocatable km1
double precision, dimension(:), allocatable u_g
double precision, dimension(:,:), allocatable rop_s
double precision, dimension(:,:), allocatable fiy
double precision, dimension(:), allocatable zeta0
double precision, parameter pi
double precision, dimension(:), allocatable vol
double precision, dimension(:,:,:), allocatable dijq
double precision, dimension(:), allocatable odz_t
double precision, parameter zero
double precision, dimension(:,:), allocatable joiz