25 DOUBLE PRECISION,
DIMENSION(:, :, :),
ALLOCATABLE ::
mu_sm_ip 27 DOUBLE PRECISION,
DIMENSION(:, :, :),
ALLOCATABLE ::
mu_sl_ip 29 DOUBLE PRECISION,
DIMENSION(:, :, :),
ALLOCATABLE ::
xi_sm_ip 31 DOUBLE PRECISION,
DIMENSION(:, :, :),
ALLOCATABLE ::
xi_sl_ip 38 DOUBLE PRECISION,
DIMENSION(:, :, :),
ALLOCATABLE ::
fnu_s_ip 41 DOUBLE PRECISION,
DIMENSION(:, :, :),
ALLOCATABLE ::
ft_sm_ip 43 DOUBLE PRECISION,
DIMENSION(:, :, :),
ALLOCATABLE ::
ft_sl_ip 50 DOUBLE PRECISION,
DIMENSION(:,:,:),
ALLOCATABLE ::
kth_sl_ip 52 DOUBLE PRECISION,
DIMENSION(:,:,:),
ALLOCATABLE ::
knu_sm_ip 54 DOUBLE PRECISION,
DIMENSION(:,:,:),
ALLOCATABLE ::
knu_sl_ip 56 DOUBLE PRECISION,
DIMENSION(:,:,:),
ALLOCATABLE ::
kvel_s_ip 62 DOUBLE PRECISION,
DIMENSION(:,:),
ALLOCATABLE ::
ed_ss_ip 64 DOUBLE PRECISION,
DIMENSION(:,:,:),
ALLOCATABLE ::
edt_s_ip 66 DOUBLE PRECISION,
DIMENSION(:,:,:),
ALLOCATABLE ::
edvel_sm_ip 68 DOUBLE PRECISION,
DIMENSION(:,:,:),
ALLOCATABLE ::
edvel_sl_ip 70 DOUBLE PRECISION,
DIMENSION(:),
ALLOCATABLE ::
a2_gtsh 71 DOUBLE PRECISION,
DIMENSION(:),
ALLOCATABLE ::
xsi_gtsh 75 DOUBLE PRECISION,
DIMENSION(:, :),
ALLOCATABLE ::
ktmom_u_s 76 DOUBLE PRECISION,
DIMENSION(:, :),
ALLOCATABLE ::
ktmom_v_s 77 DOUBLE PRECISION,
DIMENSION(:, :),
ALLOCATABLE ::
ktmom_w_s 81 DOUBLE PRECISION,
PARAMETER ::
epm = 0.01d0
93 DOUBLE PRECISION FUNCTION kt_rvel(IJK, m)
104 use fun_avg, only: avg_x_e, avg_y_n, avg_z_t
110 INTEGER,
INTENT(IN) :: ijk
112 INTEGER,
INTENT(IN) :: M
117 INTEGER :: I, IMJK, IJMK, IJKM
119 DOUBLE PRECISION :: USCM, VSCM, WSCM, &
122 DOUBLE PRECISION :: vs_j, vs_jm
135 vs_j = v_s(ijk,m)+
vsh(ijk)
136 IF(fluid_at(ijmk))
THEN 137 vs_jm = v_s(ijmk,m)+
vsh(ijmk)
145 ugc = avg_x_e(
u_g(imjk),
u_g(ijk),i)
146 vgc = avg_y_n(
v_g(ijmk),
v_g(ijk))
147 wgc = avg_z_t(
w_g(ijkm),
w_g(ijk))
149 uscm = avg_x_e(u_s(imjk,m),u_s(ijk,m),i)
150 vscm = avg_y_n(vs_jm, vs_j)
151 wscm = avg_z_t(w_s(ijkm,m),w_s(ijk,m))
154 kt_rvel = sqrt((ugc - uscm)**2 + (vgc - vscm)**2 + &
177 USE fun_avg, only: avg_x_e, avg_y_n, avg_z_t
183 INTEGER,
INTENT(IN) :: ijk
185 INTEGER,
INTENT(IN) :: M
190 INTEGER :: I, IMJK, IJMK, IJKM
192 DOUBLE PRECISION :: USCM, VSCM, WSCM, &
194 DOUBLE PRECISION :: vs_j, vs_jm, speed, rvel
208 vs_j = v_s(ijk,m)+
vsh(ijk)
209 IF(fluid_at(ijmk))
THEN 210 vs_jm = v_s(ijmk,m)+
vsh(ijmk)
216 ugc = avg_x_e(u_g(imjk),u_g(ijk),i)
217 vgc = avg_y_n(v_g(ijmk),v_g(ijk))
218 wgc = avg_z_t(w_g(ijkm),w_g(ijk))
220 uscm = avg_x_e(u_s(imjk,m),u_s(ijk,m),i)
221 vscm = avg_y_n(vs_jm, vs_j)
222 wscm = avg_z_t(w_s(ijkm,m),w_s(ijk,m))
224 rvel = sqrt((ugc - uscm)**2 + (vgc - vscm)**2 + &
227 speed = sqrt(uscm**2+vscm**2+wscm**2)
233 (wgc-wscm)*wscm )/(rvel*speed)
253 DOUBLE PRECISION FUNCTION kt_dga(IJK, m)
266 INTEGER,
INTENT(IN) :: IJK
268 INTEGER,
INTENT(IN) :: M
273 DOUBLE PRECISION :: C_d, Re
275 DOUBLE PRECISION :: rvel
286 IF(re .LE. 1000.d0)
THEN 288 (
one + 0.15d0 * re**0.687d0)
294 kt_dga = 0.75d0 * c_d * rvel * rop_g(ijk) /
d_p(ijk,m)
331 INTEGER,
INTENT(IN) :: M
343 DOUBLE PRECISION :: ED_common_term
344 DOUBLE PRECISION :: EDvel_sL, EDvel_sM
345 DOUBLE PRECISION :: M_PM, M_PL, MPSUM, NU_PL, NU_PM, D_PM, &
347 DOUBLE PRECISION :: Ap_lm, Dp_lm, R1p_lm, R10p_lm, R3p_lm, &
348 R4p_lm, R5p_lm, Bp_lm
352 IF ( fluid_at(ijk) )
THEN 355 m_pm = (pi/6.d0)*(d_pm**3)*ro_s(ijk,m)
356 nu_pm = rop_s(ijk,m)/m_pm
361 m_pl = (pi/6.d0)*(d_pl**3)*ro_s(ijk,l)
364 dpsumo2 = (d_pm+d_pl)/2.d0
365 nu_pl = rop_s(ijk,l)/m_pl
367 ed_common_term = (3.d0/4.d0)*(dpsumo2*dpsumo2)*&
368 (1.d0+
c_e)*
g_0(ijk,m,l)*nu_pm*nu_pl*(m_pm*&
369 m_pl/mpsum)*((m_pm*m_pl)**1.5)
373 dp_lm = m_pl*m_pm/(2.d0*mpsum)
374 r1p_lm = 1.d0/( (ap_lm**1.5)*(dp_lm**3) )
375 r3p_lm = 1.d0/( (ap_lm**1.5)*(dp_lm**3.5) )
385 (m_pl/mpsum)*(dsqrt(pi)/6.d0)*r1p_lm*&
391 edvel_sl = ed_common_term*((1.d0-
c_e)*(m_pl/mpsum)*&
392 (dpsumo2*pi/48.d0)*(m_pm*m_pl/mpsum)*r3p_lm)
409 bp_lm = (m_pm*m_pl*(
theta_m(ijk,l)-&
411 dp_lm = (m_pl*m_pm*(m_pm*
theta_m(ijk,m)+m_pl*&
412 theta_m(ijk,l) ))/(2.d0*mpsum*mpsum)
414 r1p_lm = (1.d0/((ap_lm**1.5)*(dp_lm**3)))+ &
415 ((9.d0*bp_lm*bp_lm)/(ap_lm**2.5 * dp_lm**4))+&
416 ((30.d0*bp_lm**4)/(2.d0*ap_lm**3.5 * dp_lm**5))
418 r3p_lm = (1.d0/((ap_lm**1.5)*(dp_lm**3.5)))+&
419 ((21.d0*bp_lm*bp_lm)/(2.d0 * ap_lm**2.5 * dp_lm**4
436 ed_ss_ip(ijk,lm) = ed_common_term*dsqrt(pi)*(m_pm*m_pl
440 edt_s_ip(ijk,m,l) = -ed_common_term* (1.d0-
c_e)*(m_pl
445 edvel_sl = ed_common_term*( ((3.d0*dpsumo2*pi/40.d0)*m_pl
456 edvel_sm = ed_common_term*( (-(3.d0*dpsumo2*pi/40.d0)
504 INTEGER,
INTENT(IN) :: M
511 DOUBLE PRECISION :: press_star, c_star, zeta0_star, &
513 lambda_num, cd_num, zeta1
514 DOUBLE PRECISION :: D_PM, EP_SM
515 DOUBLE PRECISION :: nu0, Chi
519 IF ( fluid_at(ijk) )
THEN 529 nu0 = (96.d0/5.d0)*(ep_sm/d_pm)*dsqrt(
theta_m(ijk,m)/pi)
531 press_star = 1.d0 + 2.d0*(1.d0+
c_e)*ep_sm*chi
533 c_star = 32.0d0*(1.0d0 -
c_e)*(1.d0 - 2.0d0*
c_e*
c_e) &
536 zeta0_star = (5.d0/12.d0)*chi*(1.d0 -
c_e*
c_e) &
537 * (1.d0 + (3.d0/32.d0)*c_star)
539 nu_gamma_star = ((1.d0+
c_e)/48.d0)*chi*(128.d0-96.d0*
c_e +
549 cd_num = ( (4.d0/15.d0)*lambda_num*ep_sm*chi + &
550 (press_star-1.d0)*(2.d0/3.d0-
c_e)*c_star ) / &
551 ( 0.5d0*zeta0_star+nu_gamma_star + (5.d0*c_star/64.d0) *
557 zeta1 = -(1.d0-
c_e)*(press_star-1.d0) + (5.d0/32.d0) * &
558 (1.d0-
c_e*
c_e)*(1.d0+(3.d0*c_star/64.d0))*chi*cd_num
562 edvel_sm_ip(ijk,m,m) = (3.d0/2.d0)*rop_s(ijk,m)*zeta1
566 edt_s_ip(ijk,m,m) = (3.d0/2.d0)*rop_s(ijk,m)*nu0*zeta0_star
607 INTEGER,
INTENT(IN) :: M
614 DOUBLE PRECISION :: D_PM, EP_SM, V_p, N_p, M_p
615 DOUBLE PRECISION :: nu0, Chi
616 DOUBLE PRECISION :: VREL
617 DOUBLE PRECISION :: Re_m, Re_T
618 DOUBLE PRECISION :: zeta_star, mu2_0, mu4_0, mu4_1
619 DOUBLE PRECISION :: omega, nu_j, rho_10, rho_11
624 IF ( fluid_at(ijk) )
THEN 632 m_p = v_p * ro_s(ijk,m)
634 nu0 = (96.d0/5.d0)*(ep_sm/d_pm)*dsqrt(
theta_m(ijk,m)/pi)
639 re_m = d_pm*vrel*rop_g(ijk)/
mu_g(ijk)
640 re_t = ro_g(ijk)*d_pm*dsqrt(
theta_m(ijk,m)) /
mu_g(ijk)
645 d_pm/m_p)**2 / dsqrt(pi*
theta_m(ijk,m)) * &
649 mu2_0 = dsqrt(2d0*pi) * chi * (
one-
c_e**2)
652 mu4_0 = (4.5d0+
c_e**2) * mu2_0
657 mu4_1 = (6.46875d0+0.9375d0*
c_e**2)*mu2_0 + &
658 2d0*dsqrt(2d0*pi)* chi*(
one+
c_e)
663 zeta_star = 4.5d0*dsqrt(2d0*pi)*&
664 (ro_g(ijk)/ro_s(ijk,m))**2*re_m**2 * &
665 s_star(ep_sm,chi) / (ep_sm*(
one-ep_sm)**2 * re_t**4)
670 a2_gtsh(ijk) = (5d0*mu2_0 - mu4_0) / (mu4_1 - 5d0* &
671 (19d0/16d0*mu2_0 - 1.5d0*zeta_star))
690 rho_10 = 2d0*chi*ep_sm*(
c_e**2-
one)
691 rho_11 = 25d0/1024d0*ep_sm*chi**2*(
one-
c_e**2)* &
692 (
one+3d0/128d0*
a2_gtsh(ijk)) * (omega/10d0 - &
694 (nu_j +
g_gtsh(ep_sm, chi, ijk, m)/m_p + 1.5d0* &
722 DOUBLE PRECISION FUNCTION g_gtsh (EP_SM, Chi, IJK, M)
736 DOUBLE PRECISION,
INTENT(IN) :: EP_SM
738 DOUBLE PRECISION,
INTENT(IN) :: Chi
740 INTEGER,
INTENT(IN) :: IJK
743 INTEGER,
INTENT(IN) :: M
747 DOUBLE PRECISION :: Re_T
748 DOUBLE PRECISION :: Rdiss, RdissP
752 if(ep_sm <= 0.1d0)
then 753 rdissp =
one+3d0*dsqrt(ep_sm/2d0)
756 one + 3d0*dsqrt(ep_sm/2d0) + 135d0/64d0*ep_sm*dlog(ep_sm) + &
757 11.26d0*ep_sm*(
one-5.1d0*ep_sm+16.57d0*ep_sm**2-21.77d0* &
758 ep_sm**3) - ep_sm*chi*dlog(
epm)
763 rdiss = rdissp + re_t *
k_phi(ep_sm)
776 DOUBLE PRECISION FUNCTION k_phi (phi)
782 DOUBLE PRECISION,
INTENT(IN) :: phi
785 k_phi = (0.096d0 + 0.142d0*phi**0.212d0) / (1d0-phi)**4.454d0
796 DOUBLE PRECISION FUNCTION r_d (phi)
802 DOUBLE PRECISION,
INTENT(IN) :: phi
806 if((phi > 1d-15) .and. (phi <= 0.4d0))
then 807 r_d = (1d0+3d0*dsqrt(phi/2d0)+135d0/64d0*phi*dlog(phi)+17.14d0*phi
809 elseif(phi > 0.4d0)
then 810 r_d = 10d0*phi/(1d0-phi)**3 + 0.7d0
821 DOUBLE PRECISION FUNCTION s_star (phi, Chi)
827 DOUBLE PRECISION,
INTENT(IN) :: phi
829 DOUBLE PRECISION,
INTENT(IN) :: Chi
835 s_star =
r_d(phi)**2/(chi*(1d0+3.5d0*dsqrt(phi)+5.9*phi))
double precision, dimension(:,:), allocatable v_s
double precision, dimension(:,:,:), allocatable kvel_s_ip
double precision, dimension(:,:,:), allocatable fnu_s_ip
integer, dimension(:), allocatable i_of
double precision, dimension(:,:,:), allocatable mu_sl_ip
double precision, parameter one
double precision, dimension(:,:,:), allocatable ft_sl_ip
double precision, dimension(:,:,:), allocatable ft_sm_ip
double precision, dimension(:,:), allocatable w_s
double precision, dimension(:,:,:), allocatable knu_sm_ip
subroutine calc_gtsh_energy_dissipation_ss(M)
double precision, dimension(:,:,:), allocatable xi_sm_ip
double precision function g_0(IJK, M1, M2)
double precision function s_star(phi, Chi)
double precision, dimension(:,:), allocatable u_s
double precision, dimension(:), allocatable vsh
double precision, dimension(:), allocatable xsi_gtsh
double precision, dimension(:,:), allocatable d_p
subroutine calc_gd_99_energy_dissipation_ss(M)
double precision function r_d(phi)
double precision, parameter small_number
double precision, dimension(:,:,:), allocatable xi_sl_ip
double precision, dimension(:,:), allocatable ktmom_v_s
double precision, parameter zero_ep_s
double precision function g_gtsh(EP_SM, Chi, IJK, M)
double precision, dimension(:,:), allocatable theta_m
double precision, dimension(:,:), allocatable ktmom_w_s
double precision, dimension(:), allocatable v_g
double precision function kt_cos_theta(ijk, M)
double precision, dimension(:), allocatable a2_gtsh
double precision, dimension(:), allocatable w_g
double precision function kt_rvel(IJK, m)
double precision, parameter large_number
double precision, dimension(:,:,:), allocatable knu_sl_ip
double precision function kt_dga(IJK, m)
double precision, dimension(:,:), allocatable ro_s
double precision function k_phi(phi)
double precision, dimension(:), allocatable mu_g
double precision, parameter epm
double precision, dimension(:,:,:), allocatable mu_sm_ip
double precision, dimension(:), allocatable u_g
double precision function ep_s(IJK, xxM)
double precision, dimension(:,:), allocatable ed_ss_ip
double precision, dimension(:,:,:), allocatable kth_sl_ip
double precision, dimension(:,:), allocatable rop_s
double precision, dimension(:,:,:), allocatable edt_s_ip
subroutine calc_ia_energy_dissipation_ss(M)
double precision, parameter pi
double precision, dimension(:,:,:), allocatable edvel_sl_ip
double precision, dimension(:), allocatable ro_g
double precision, dimension(:), allocatable rop_g
double precision, dimension(:,:), allocatable ktmom_u_s
double precision, parameter zero
double precision, dimension(:,:,:), allocatable edvel_sm_ip