20 use discretelement
, only: pinc, pijk
23 use discretelement
, only: des_vel_new, ro_sol
25 use discretelement
, only: des_radius, pvol
27 use discretelement
, only: fc
36 use functions, only: is_nonexistent, is_ghost, is_entering_ghost, is_exiting_ghost
54 INTEGER :: IJK, M, NINDX, NP, L
58 DOUBLE PRECISION :: VSLP(3), VREL
60 DOUBLE PRECISION :: G0_ML
62 DOUBLE PRECISION :: EPSoDP
64 DOUBLE PRECISION :: lDP
66 DOUBLE PRECISION :: lDss
68 DOUBLE PRECISION :: OoEPg, EPg_2
70 DOUBLE PRECISION :: D_FORCE(3)
84 IF(.NOT.fluid_at(ijk)) cycle
85 IF(pinc(ijk) == 0) cycle
88 epg_2 = ep_g(ijk)*ep_g(ijk)
97 DO nindx = 1,pinc(ijk)
98 np =
pic(ijk)%P(nindx)
100 IF(is_nonexistent(np)) cycle
101 IF(is_ghost(np) .OR. is_entering_ghost(np) .OR. is_exiting_ghost
104 ldp = 2.0d0*des_radius(np)
121 vslp = des_vel_new(np,:) - velcs(:,m)
123 vrel = sqrt(dot_product(vslp,vslp))
126 ro_sol(np), g0_ml, vrel)
128 ldss = ldss*
rop_s(ijk,m)*ro_sol(np)
136 d_force(:) = d_force(:) - ldss*vslp(:)
140 fc(np,:) = fc(np,:) + d_force(:)*pvol(np)
168 use discretelement
, only: pinc, pijk, des_vol_node
170 use discretelement
, only: des_vel_new, ro_sol
172 use discretelement
, only: des_radius
174 use discretelement
, only: sdrag_am, sdrag_bm, f_sds
185 use functions, only: is_nonexistent, is_ghost
186 use functions, only: is_entering_ghost, is_exiting_ghost
203 INTEGER :: IJK, M, NINDX, NP, L
207 DOUBLE PRECISION :: VSLP(3), VREL
209 DOUBLE PRECISION :: G0_ML
211 DOUBLE PRECISION :: EPSoDP
213 DOUBLE PRECISION :: lDP
215 DOUBLE PRECISION :: lDss
217 DOUBLE PRECISION :: OoEPg, EPg_2
219 DOUBLE PRECISION :: lFORCE
225 sdrag_am(ijk,:) =
zero 226 sdrag_bm(ijk,:,:) =
zero 228 IF(.NOT.fluid_at(ijk)) cycle
229 IF(pinc(ijk) == 0) cycle
231 ooepg =
one/ep_g(ijk)
232 epg_2 = ep_g(ijk)*ep_g(ijk)
241 DO nindx = 1,pinc(ijk)
242 np =
pic(ijk)%P(nindx)
244 IF(is_nonexistent(np)) cycle
245 IF(is_ghost(np) .OR. is_entering_ghost(np) .OR. is_exiting_ghost
248 ldp = 2.0d0*des_radius(np)
253 vslp = des_vel_new(np,:) - velcs(:,m)
255 vrel = sqrt(dot_product(vslp,vslp))
275 IF(close_packed(m)) ldss = ldss + &
281 sdrag_am(ijk,m) = sdrag_am(ijk,m) + lforce
282 sdrag_bm(ijk,:,m) = sdrag_bm(ijk,:,m) + &
283 lforce*des_vel_new(np,:)
289 f_sds(ijk,:) = sdrag_am(ijk,:)
317 use fun_avg, only: avg_x_e, avg_y_n, avg_z_t
334 INTEGER,
INTENT(IN) :: IJK
336 DOUBLE PRECISION,
INTENT(OUT) :: lVELFP(3,
dimension_m)
343 INTEGER :: IMJK, IJMK, IJKM
350 IF(cut_u_treatment_at(imjk))
THEN 351 lvelfp(1,m) = (theta_ue_bar(imjk)*
u_s(imjk,m) + &
352 theta_ue(imjk)*
u_s(ijk,m))
354 lvelfp(1,m) = avg_x_e(
u_s(imjk,m),
u_s(ijk,m),
i_of(ijk))
358 IF(cut_v_treatment_at(ijmk))
THEN 359 lvelfp(2,m) = (theta_vn_bar(ijmk)*
v_s(ijmk,m) + &
360 theta_vn(ijmk)*
v_s(ijk,m))
362 lvelfp(2,m) = avg_y_n(
v_s(ijmk,m),
v_s(ijk,m))
371 lvelfp(3,m) = avg_z_t(
w_s(ijkm,m),
w_s(ijk,m))
394 use discretelement
, only: pinc
396 use discretelement
, only: pvol, des_radius
418 INTEGER,
INTENT(IN) :: IJK
420 DOUBLE PRECISION,
INTENT(OUT) :: lEPSoDP
425 INTEGER :: NP, NINDX, M
429 DO nindx = 1,pinc(ijk)
430 np =
pic(ijk)%P(nindx)
431 IF(is_nonexistent(np)) cycle
432 IF(is_ghost(np) .OR. is_entering_ghost(np) .OR.&
433 is_exiting_ghost(np)) cycle
434 lepsodp = lepsodp + pvol(np)/des_radius(np)
437 lepsodp = lepsodp/(2.0d0*
vol(ijk))
441 lepsodp = lepsodp +
ep_s(ijk,m)/d_p(ijk,m)
subroutine drag_ss_dem_noninterp
double precision, dimension(:,:), allocatable v_s
integer, dimension(:), allocatable i_of
double precision, dimension(:), allocatable ep_g
double precision, parameter one
double precision, dimension(:,:), allocatable w_s
double precision segregation_slope_coefficient
double precision, dimension(:), allocatable theta_wt
double precision function g_0(IJK, M1, M2)
logical, dimension(dim_m) close_packed
logical, dimension(:), allocatable cut_u_treatment_at
double precision, dimension(:,:), allocatable u_s
double precision, dimension(:), allocatable theta_wt_bar
double precision, dimension(:), allocatable theta_vn_bar
double precision, dimension(:,:), allocatable d_p
double precision, dimension(:), allocatable theta_vn
double precision, dimension(:), allocatable theta_ue
subroutine calc_cell_center_csolids_vel(IJK, lVELFP)
subroutine calc_epsodp(IJK, lEPSoDP)
subroutine drag_ss_tfm_noninterp
double precision, dimension(:,:), allocatable ro_s
logical, dimension(:), allocatable cut_w_treatment_at
double precision, dimension(:), allocatable p_star
double precision, dimension(:), allocatable theta_ue_bar
logical, dimension(:), allocatable cut_v_treatment_at
double precision function ep_s(IJK, xxM)
double precision, dimension(:,:), allocatable rop_s
type(iap1), dimension(:), allocatable pic
double precision, dimension(:), allocatable vol
double precision, parameter zero
subroutine drag_ss_syam0(ldss, d_pm, d_pl, ro_m, ro_l, g0_ml, vrel