19 use run, only: lun_1984, simonin_1996, ahmadi_1995
20 use run, only: ia_2005, gd_1999, ghd_2007, gtsh_2012
22 use usr_prop, only: solidssolids_drag
28 INTEGER,
INTENT(IN) :: L, M
40 CALL calc_usr_prop(solidssolids_drag,ll=l,lm=m)
42 IF (granular_energy)
THEN 43 SELECT CASE (kt_type_enum)
44 CASE(lun_1984, simonin_1996, ahmadi_1995)
48 CASE (gd_1999, gtsh_2012)
58 WRITE (*,
'(A)')
'DRAG_SS' 59 WRITE (*,
'(A,A)')
'Unknown KT_TYPE: ', kt_type
95 USE fun_avg, only: avg_x_e, avg_y_n, avg_z_t
106 INTEGER,
INTENT(IN) :: M, L
111 INTEGER :: I, IJK, IMJK, IJMK, IJKM
116 DOUBLE PRECISION :: USCM, USCL, VSCM, VSCL, WSCM, WSCL
118 DOUBLE PRECISION :: VREL
120 DOUBLE PRECISION :: D_pm, D_pl
122 DOUBLE PRECISION :: RO_M, RO_L
124 DOUBLE PRECISION :: G0_ML
126 DOUBLE PRECISION :: lDss
132 IF (wall_at(ijk)) cycle
143 uscl = avg_x_e(
u_s(imjk,l),
u_s(ijk,l),i)
144 vscl = avg_y_n(
v_s(ijmk,l),
v_s(ijk,l))
145 wscl = avg_z_t(
w_s(ijkm,l),
w_s(ijk,l))
147 uscm = avg_x_e(
u_s(imjk,m),
u_s(ijk,m),i)
148 vscm = avg_y_n(
v_s(ijmk,m),
v_s(ijk,m))
149 wscm = avg_z_t(
w_s(ijkm,m),
w_s(ijk,m))
152 vrel = sqrt((uscl - uscm)**2 + (vscl - vscm)**2 + &
163 CALL drag_ss_syam0(ldss, d_pm, d_pl, ro_m, ro_l, g0_ml, vrel)
164 f_ss(ijk,lm) = ldss*rop_s(ijk,m)*rop_s(ijk,l)
185 SUBROUTINE drag_ss_syam0(ldss, d_pm, d_pl, ro_m, ro_l, g0_ml, vrel)
196 DOUBLE PRECISION,
INTENT(OUT) :: lDss
198 DOUBLE PRECISION,
INTENT(IN) :: D_pm, D_pl
200 DOUBLE PRECISION,
INTENT(IN) :: RO_M, RO_L
202 DOUBLE PRECISION,
INTENT(IN) :: G0_ML
204 DOUBLE PRECISION,
INTENT(IN) :: VREL
209 DOUBLE PRECISION :: DPSUM
211 DOUBLE PRECISION :: const
216 dpsum**2/(2.d0*
pi*(ro_l*d_pl**3+ro_m*d_pm**3))
217 ldss = const * g0_ml * vrel
259 INTEGER,
INTENT(IN) :: M, L
269 DOUBLE PRECISION :: D_pm, D_pl
271 DOUBLE PRECISION :: RO_M, RO_L
273 DOUBLE PRECISION :: G0_ML
275 DOUBLE PRECISION :: thetaM, thetaL
277 DOUBLE PRECISION :: lDss
279 DOUBLE PRECISION :: DPSUM
281 DOUBLE PRECISION :: M_PM, M_PL, MPSUM, DPSUMo2
282 DOUBLE PRECISION :: Ap_lm, Dp_lm, Bp_lm, R2p_lm
283 DOUBLE PRECISION :: F_common_term
288 IF (wall_at(ijk)) cycle
303 m_pm = (
pi/6.d0) * d_pm**3 *ro_m
304 m_pl = (
pi/6.d0) * d_pl**3 *ro_l
310 IF(thetam >
zero .AND. thetal >
zero)
THEN 311 ap_lm = (m_pm*thetal+m_pl*thetam)/2.d0
312 bp_lm = (m_pm*m_pl*(thetal-thetam ))/(2.d0*mpsum)
313 dp_lm = (m_pl*m_pm*(m_pm*thetam+m_pl*thetal ))/&
316 r2p_lm = ( 1.d0/( 2.d0*ap_lm**1.5 * dp_lm*dp_lm ) )+&
317 ( (3.d0*bp_lm*bp_lm)/( ap_lm**2.5 * dp_lm**3 ) )+&
318 ( (15.d0*bp_lm**4)/( 2.d0*ap_lm**3.5 * dp_lm**4 ) )
320 f_common_term = (dpsumo2*dpsumo2/4.d0)*(m_pm*m_pl/mpsum)*&
321 g0_ml*(1.d0+
c_e)*(m_pm*m_pl)**1.5
326 ldss = f_common_term/(m_pm*m_pl)*dsqrt(
pi)*r2p_lm*&
335 segregation_slope_coefficient*
p_star(ijk)
double precision, dimension(:,:), allocatable v_s
integer, dimension(:), allocatable i_of
double precision, parameter one
double precision, dimension(:,:), allocatable f_ss
double precision, dimension(:,:), allocatable w_s
double precision segregation_slope_coefficient
double precision function g_0(IJK, M1, M2)
logical, dimension(dim_m) close_packed
double precision, dimension(:,:), allocatable u_s
subroutine calc_usr_prop(lprop, lM, lL, lerr)
double precision, dimension(:,:), allocatable d_p
subroutine mfix_exit(myID, normal_termination)
double precision, dimension(:,:), allocatable theta_m
logical, dimension((dim_m *(dim_m-1)/2)+1) usr_fss
double precision, dimension(:,:), allocatable ro_s
double precision, dimension(:), allocatable p_star
double precision, dimension(:,:), allocatable rop_s
double precision, parameter pi
subroutine drag_ss_ia(L, M)
subroutine drag_ss_syam(L, M)
double precision, parameter zero
subroutine drag_ss_syam0(ldss, d_pm, d_pl, ro_m, ro_l, g0_ml, vrel