76 DOUBLE PRECISION,
INTENT(INOUT) :: sourcerhs
78 DOUBLE PRECISION,
INTENT(INOUT) :: sourcelhs
80 INTEGER,
INTENT(IN) :: M
82 INTEGER,
INTENT(IN) :: IJK
87 INTEGER :: I, J, K, IM, JM, KM, IMJK, IJMK, IJKM, &
88 IJKE, IJKW, IJKN, IJKS, IJKT, IJKB
92 DOUBLE PRECISION :: Tau_12_st
94 DOUBLE PRECISION :: SUM_EpsGo
96 DOUBLE PRECISION :: VSLIP
98 DOUBLE PRECISION :: Knu_e, Knu_w, Knu_n, Knu_s, &
101 DOUBLE PRECISION :: S1_rhs, S2_rhs, S3_rhs, &
102 S5a_rhs, S5b_rhs, S5c_rhs, S5_rhs, &
105 DOUBLE PRECISION :: S1_lhs, S3_lhs, S4_lhs, S6_lhs
122 ijkb = bottom_of(ijk)
138 sum_epsgo = sum_epsgo+
ep_s(ijk,mm)*
g_0(ijk,mm,mm)
164 IF(kt_type_enum == simonin_1996 .OR. &
165 kt_type_enum == ahmadi_1995)
THEN 166 s6_lhs = 3.d0 *
f_gs(ijk,m)
173 IF(kt_type_enum == simonin_1996)
THEN 175 ELSEIF(kt_type_enum == ahmadi_1995)
THEN 179 s7_rhs = 2.d0*
f_gs(ijk,m) * (
one/(
one+tau_12_st/ &
185 vslip = dsqrt( (
u_s(ijk,m)-
u_g(ijk))**2 + &
209 s5a_rhs = knu_e*(
ep_s(ijke,m)-
ep_s(ijk,m))*&
213 s5b_rhs = knu_n*(
ep_s(ijkn,m)-
ep_s(ijk,m))*&
217 s5c_rhs = knu_t*(
ep_s(ijkt,m)-
ep_s(ijk,m))*&
221 s5_rhs = s5a_rhs + s5b_rhs + s5c_rhs
226 sourcerhs = (s1_rhs + s2_rhs + s3_rhs + s7_rhs)*
vol(ijk) + &
287 DOUBLE PRECISION,
INTENT(INOUT) :: sourcerhs
289 DOUBLE PRECISION,
INTENT(INOUT) :: sourcelhs
291 INTEGER,
INTENT(IN) :: M
293 INTEGER,
INTENT(IN) :: IJK
298 INTEGER :: I, J, K, IM, JM, KM, IMJK, IJMK, IJKM,&
299 IJKE, IJKW, IJKN, IJKS, IJKT, IJKB
303 DOUBLE PRECISION :: UsM_e, UsM_w, VsM_n, VsM_s, WsM_t, WsM_b,&
304 UsL_e, UsL_w, VsL_n, VsL_s, WsL_t, WsL_b,&
305 UsM_p, VsM_p, WsM_P, UsL_p, VsL_p, WsL_p
307 DOUBLE PRECISION :: NU_PM_E, NU_PM_W, NU_PM_N, NU_PM_S, NU_PM_T,&
309 NU_PL_E, NU_PL_W, NU_PL_N, NU_PL_S, NU_PL_T,&
312 DOUBLE PRECISION :: T_PL_E, T_PL_W, T_PL_N, T_PL_S, T_PL_T,&
315 DOUBLE PRECISION :: M_PM, M_PL, D_PM, D_PL
317 DOUBLE PRECISION :: Knu_sL_e, Knu_sL_w, Knu_sL_n, Knu_sL_s, Knu_sL_t
325 DOUBLE PRECISION :: S10_rhs, S15_rhs, S16_rhs,&
326 S11_sum_rhs, S12_sum_rhs,&
327 S13_sum_rhs, S17_sum_rhs, S18_sum_rhs
329 DOUBLE PRECISION :: S14a_sum, S14b_sum, S14c_sum, &
330 S9_sum, s21a_sum, s21b_sum, s21c_sum
332 DOUBLE PRECISION :: S10_lhs, S16_lhs,&
333 S11_sum_lhs, S12_sum_lhs, S13_sum_lhs,&
334 S17_sum_lhs, S18_sum_lhs, S20_sum_lhs
351 ijkb = bottom_of(ijk)
381 usm_p = avg_x_e(
u_s(imjk,m),
u_s(ijk,m),i)
382 vsm_p = avg_y_n(
v_s(ijmk,m),
v_s(ijk,m) )
383 wsm_p = avg_z_t(
w_s(ijkm,m),
w_s(ijk,m) )
386 m_pm = (
pi/6.d0)*d_pm**3 *
ro_s(ijk,m)
387 nu_pm_p =
rop_s(ijk,m)/m_pm
388 nu_pm_e =
rop_s(ijke,m)/m_pm
389 nu_pm_w =
rop_s(ijkw,m)/m_pm
390 nu_pm_n =
rop_s(ijkn,m)/m_pm
391 nu_pm_s =
rop_s(ijks,m)/m_pm
392 nu_pm_t =
rop_s(ijkt,m)/m_pm
393 nu_pm_b =
rop_s(ijkb,m)/m_pm
412 m_pl = (
pi/6.d0)*d_pl**3 *
ro_s(ijk,l)
413 nu_pl_p =
rop_s(ijk,l)/m_pl
414 nu_pl_e =
rop_s(ijke,l)/m_pl
415 nu_pl_w =
rop_s(ijkw,l)/m_pl
416 nu_pl_n =
rop_s(ijkn,l)/m_pl
417 nu_pl_s =
rop_s(ijks,l)/m_pl
418 nu_pl_t =
rop_s(ijkt,l)/m_pl
419 nu_pl_b =
rop_s(ijkb,l)/m_pl
435 usl_p = avg_x_e(
u_s(imjk,l),
u_s(ijk,l),i)
436 vsl_p = avg_y_n(
v_s(ijmk,l),
v_s(ijk,l) )
437 wsl_p = avg_z_t(
w_s(ijkm,l),
w_s(ijk,l) )
441 s20_sum_lhs = s20_sum_lhs +
edt_s_ip(ijk,m,l)
445 s11_sum_lhs = s11_sum_lhs + zmax(-
edvel_sl_ip(ijk,m,l)* &
447 s11_sum_rhs = s11_sum_rhs + zmax(
edvel_sl_ip(ijk,m,l)* &
452 s12_sum_lhs = s12_sum_lhs + zmax(-
edvel_sm_ip(ijk,m,l)*&
454 s12_sum_rhs = s12_sum_rhs + zmax(
edvel_sm_ip(ijk,m,l)*&
462 s17_sum_lhs = s17_sum_lhs + 2.d0*
mu_sl_ip(ijk,m,l)*&
464 s17_sum_rhs = s17_sum_rhs + 2.d0*
mu_sl_ip(ijk,m,l)*&
476 s18_sum_lhs = s18_sum_lhs + zmax(-1.d0* &
479 s18_sum_rhs = s18_sum_rhs + zmax(&
554 sourcelhs = ( (s11_sum_lhs+s12_sum_lhs)+&
555 (s10_lhs+s16_lhs+s17_sum_lhs+&
556 s18_sum_lhs-s20_sum_lhs+s13_sum_lhs)*
vol(ijk) + &
557 zmax(s21a_sum+s21b_sum+s21c_sum)+ &
558 zmax(s14a_sum+s14b_sum+s14c_sum)+ zmax(s9_sum) ) / &
561 sourcerhs = ( s10_rhs+s15_rhs+s16_rhs+s17_sum_rhs+s18_sum_rhs+&
562 s13_sum_rhs) *
vol(ijk) + s11_sum_rhs+s12_sum_rhs+ &
563 zmax(- (s14a_sum+s14b_sum+s14c_sum) ) + zmax(-s9_sum) + &
564 zmax(- (s21a_sum+s21b_sum+s21c_sum) )
620 DOUBLE PRECISION,
INTENT(INOUT) :: sourcerhs
622 DOUBLE PRECISION,
INTENT(INOUT) :: sourcelhs
624 INTEGER,
INTENT(IN) :: M
626 INTEGER,
INTENT(IN) :: IJK
631 INTEGER :: I, J, K, IM, JM, KM, IMJK, IJMK, IJKM,&
632 IJKE, IJKW, IJKN, IJKS, IJKT, IJKB
634 DOUBLE PRECISION :: NU_PM_E, NU_PM_W, NU_PM_N, NU_PM_S, NU_PM_T,&
637 DOUBLE PRECISION :: M_PM, D_PM
639 DOUBLE PRECISION :: Knu_sM_e, Knu_sM_w, Knu_sM_n, Knu_sM_s,&
642 DOUBLE PRECISION :: S8_rhs, S9_rhs, S10_rhs, S11_rhs, S12_rhs,&
643 S13a_rhs, S13b_rhs, S14a_rhs, S14b_rhs, S15a_rhs
646 DOUBLE PRECISION :: S8_lhs, S10_lhs, S11_lhs, S12_lhs, S13a_lhs,&
647 S13b_lhs, S14a_lhs, S14b_lhs, S15a_lhs, S15b_lhs
649 DOUBLE PRECISION :: VSLIP, Kslip, Tslip_rhs, Tslip_lhs, Tvis_lhs
650 DOUBLE PRECISION :: ep_sM
652 DOUBLE PRECISION :: chi, Sgama_lhs, Spsi_rhs
669 ijkb = bottom_of(ijk)
696 m_pm = (
pi/6.d0)*d_pm**3 *
ro_s(ijk,m)
700 nu_pm_p =
rop_s(ijk,m)/m_pm
701 nu_pm_e =
rop_s(ijke,m)/m_pm
702 nu_pm_w =
rop_s(ijkw,m)/m_pm
703 nu_pm_n =
rop_s(ijkn,m)/m_pm
704 nu_pm_s =
rop_s(ijks,m)/m_pm
705 nu_pm_t =
rop_s(ijkt,m)/m_pm
706 nu_pm_b =
rop_s(ijkb,m)/m_pm
724 s11_lhs = (3.d0/2.d0)*
edt_s_ip(ijk,m,m)
736 IF(kt_type_enum == gtsh_2012)
THEN 737 s11_lhs = 1.5d0*
rop_s(ijk,m) * s11_lhs
738 s11_rhs = 1.5d0*
rop_s(ijk,m) * s11_rhs
739 s12_lhs = 1.5d0*
rop_s(ijk,m) * s12_lhs
740 s12_rhs = 1.5d0*
rop_s(ijk,m) * s12_rhs
741 sgama_lhs = 3d0*nu_pm_p *
g_gtsh(ep_sm, chi, ijk, m)
754 s13a_rhs = knu_sm_e*zmax( (nu_pm_e-nu_pm_p) )*
odx_e(i)*
ayz(ijk)
755 s13a_lhs = knu_sm_e*zmax( -(nu_pm_e-nu_pm_p) )*
odx_e(i)*
ayz(ijk)
757 s13b_rhs = knu_sm_w*zmax( -(nu_pm_p-nu_pm_w) )*
odx_e(im)*
ayz(imjk)
758 s13b_lhs = knu_sm_w*zmax( (nu_pm_p-nu_pm_w) )*
odx_e(im)*
ayz(imjk)
760 s14a_rhs = knu_sm_n*zmax( (nu_pm_n-nu_pm_p) )*
ody_n(j)*
axz(ijk)
761 s14a_lhs = knu_sm_n*zmax( -(nu_pm_n-nu_pm_p) )*
ody_n(j)*
axz(ijk)
763 s14b_rhs = knu_sm_s*zmax( -(nu_pm_p-nu_pm_s) )*
ody_n(jm)*
axz(ijmk)
764 s14b_lhs = knu_sm_s*zmax( (nu_pm_p-nu_pm_s) )*
ody_n(jm)*
axz(ijmk)
766 s15a_rhs = knu_sm_t*zmax( (nu_pm_t-nu_pm_p) )*
odz_t(k)*
ox(i)*
axy(ijk
783 (kt_type_enum == gd_1999))
THEN 785 vslip = (
u_s(ijk,m)-
u_g(ijk))**2 + (
v_s(ijk,m)-
v_g(ijk))**2 +&
790 kslip =
switch*81.d0*ep_sm*(
mu_g(ijk)*vslip)**2.d0 / &
791 (chi*
d_p(ijk,m)**3.d0*
ro_s(ijk,m)*dsqrt(
pi))
799 sourcelhs = sourcelhs + tslip_lhs + tvis_lhs
800 sourcerhs = sourcerhs + tslip_rhs
double precision, dimension(:,:), allocatable v_s
double precision, dimension(:), allocatable tau_1
double precision, dimension(:,:,:), allocatable trd_s2_ip
double precision, dimension(:,:,:), allocatable kvel_s_ip
integer, dimension(:), allocatable i_of
double precision, dimension(:,:), allocatable trd_s_c
double precision, dimension(:,:), allocatable mu_s_c
double precision, dimension(:,:,:), allocatable mu_sl_ip
double precision, dimension(:), allocatable k_turb_g
subroutine source_granular_energy_ia(SOURCELHS, SOURCERHS, IJK, M)
double precision, parameter one
double precision, dimension(:,:), allocatable kphi_s
double precision, dimension(:), allocatable axy
double precision, dimension(:,:), allocatable w_s
double precision, dimension(:,:), allocatable trd_s2
integer, dimension(:), allocatable im1
double precision, dimension(:,:,:), allocatable knu_sm_ip
double precision, parameter switch
double precision, dimension(:), allocatable k_12
double precision function g_0(IJK, M1, M2)
double precision, dimension(:), allocatable ayz
subroutine source_granular_energy(SOURCELHS, SOURCERHS, IJK, M)
double precision, dimension(:,:), allocatable u_s
double precision, dimension(:,:), allocatable lambda_s_c
integer, dimension(:), allocatable k_of
double precision, dimension(:), allocatable ody_n
double precision, dimension(:,:), allocatable p_s_c
double precision, dimension(:), allocatable xsi_gtsh
double precision, dimension(:,:), allocatable d_p
integer, dimension(:), allocatable j_of
double precision, dimension(:), allocatable odx_e
integer, dimension(:), allocatable jm1
double precision, parameter small_number
double precision, dimension(:,:,:), allocatable xi_sl_ip
double precision, dimension(:), allocatable ox
double precision function g_gtsh(EP_SM, Chi, IJK, M)
double precision, dimension(:,:), allocatable theta_m
double precision, dimension(:), allocatable v_g
double precision, dimension(:), allocatable w_g
double precision, dimension(:), allocatable axz
double precision, dimension(:,:,:), allocatable knu_sl_ip
double precision, parameter dil_ep_s
double precision, dimension(:,:), allocatable ro_s
integer, dimension(:), allocatable km1
double precision, dimension(:), allocatable mu_g
double precision, dimension(:), allocatable u_g
subroutine source_granular_energy_gd(SOURCELHS, SOURCERHS, IJK, M)
double precision function ep_s(IJK, xxM)
double precision, dimension(:,:), allocatable f_gs
double precision, dimension(:,:,:), allocatable kth_sl_ip
double precision, dimension(:,:), allocatable rop_s
double precision, dimension(:,:,:), allocatable edt_s_ip
double precision, parameter pi
double precision, dimension(:), allocatable vol
double precision, dimension(:,:,:), allocatable edvel_sl_ip
double precision, dimension(:), allocatable odz_t
double precision, parameter zero
double precision, dimension(:,:,:), allocatable edvel_sm_ip