33 use discretelement
, only: max_pip
35 use discretelement
, only: des_explicitly_coupled
37 use discretelement
, only: pijk
39 use discretelement
, only: f_gp
41 use discretelement
, only: des_vel_new
43 use discretelement
, only: fc
45 use discretelement
, only: p_force
47 use discretelement
, only: pvol
49 use discretelement
, only: drag_fc
74 INTEGER :: NP, IJK, LC
76 DOUBLE PRECISION :: WEIGHT
78 DOUBLE PRECISION :: lEPg, VELFP(3), lPF(3), vel_p(3)
80 DOUBLE PRECISION :: D_FORCE(3)
90 lp_bnd = merge(27,9,
do_k)
103 IF(.NOT.is_normal(np)) cycle
111 IF(des_interp_on)
THEN 116 lepg = lepg + ep_g(ijk)*weight
118 velfp(1) = velfp(1) + ugc(ijk)*weight
119 velfp(2) = velfp(2) + vgc(ijk)*weight
120 velfp(3) = velfp(3) + wgc(ijk)*weight
122 lpf = lpf + p_force(:,ijk)*weight
134 IF(.NOT.fluid_at(pijk(np,4)))
THEN 135 drag_fc(np,:) = 0.0d0
140 ELSEIF(des_explicitly_coupled)
THEN 141 drag_fc(np,:) = f_gp(np)*(velfp - des_vel_new(np,:))
145 vel_p = des_vel_new(np,:)
151 d_force = f_gp(np)*velfp
154 d_force = f_gp(np)*(velfp - des_vel_new(np,:))
159 fc(np,:) = fc(np,:) + d_force(:)
160 IF(model_a) fc(np,:) = fc(np,:) + lpf*pvol(np)
190 use discretelement
, only: des_explicitly_coupled
192 use discretelement
, only: max_pip
194 use discretelement
, only: pijk
196 use discretelement
, only: f_gp
198 use discretelement
, only: des_vel_new
200 use discretelement
, only: drag_bm
202 use discretelement
, only: f_gds
240 INTEGER :: NP, IJK, LC
242 DOUBLE PRECISION :: WEIGHT
244 DOUBLE PRECISION :: lEPg, VELFP(3), vel_p(3)
248 DOUBLE PRECISION :: lFORCE
250 DOUBLE PRECISION :: lDRAG_BM(3)
258 lp_bnd = merge(27,9,
do_k)
271 IF(.NOT.is_normal(np)) cycle
272 IF(.NOT.fluid_at(pijk(np,4))) cycle
279 IF(des_interp_on)
THEN 284 lepg = lepg + ep_g(ijk)*weight
286 velfp(1) = velfp(1) + ugc(ijk)*weight
287 velfp(2) = velfp(2) + vgc(ijk)*weight
288 velfp(3) = velfp(3) + wgc(ijk)*weight
299 IF(lepg ==
zero) lepg = ep_g(pijk(np,4))
302 vel_p = des_vel_new(np,:)
308 ldrag_bm = lforce*des_vel_new(np,:)
310 IF(des_interp_on)
THEN 316 drag_bm(ijk,1) = drag_bm(ijk,1) + ldrag_bm(1)*weight
318 drag_bm(ijk,2) = drag_bm(ijk,2) + ldrag_bm(2)*weight
320 drag_bm(ijk,3) = drag_bm(ijk,3) + ldrag_bm(3)*weight
322 f_gds(ijk) = f_gds(ijk) + lforce*weight
326 weight =
one/vol(ijk)
329 drag_bm(ijk,1) = drag_bm(ijk,1) + ldrag_bm(1)*weight
331 drag_bm(ijk,2) = drag_bm(ijk,2) + ldrag_bm(2)*weight
333 drag_bm(ijk,3) = drag_bm(ijk,3) + ldrag_bm(3)*weight
336 f_gds(ijk) = f_gds(ijk) + lforce*weight
345 IF(des_interp_on)
THEN 346 CALL des_collect_gdata(f_gds)
347 CALL des_collect_gdata(drag_bm)
378 use fun_avg, only: avg_x_e, avg_y_n, avg_z_t
403 INTEGER :: IJK, IMJK, IJMK, IJKM
409 IF(fluid_at(ijk))
THEN 411 IF(cut_u_treatment_at(imjk))
THEN 412 ugc(ijk) = (theta_ue_bar(imjk)*lug(imjk) + &
413 theta_ue(imjk)*lug(ijk))
415 ugc(ijk) = avg_x_e(lug(imjk),lug(ijk),
i_of(ijk))
419 IF(cut_v_treatment_at(ijmk))
THEN 420 vgc(ijk) = (theta_vn_bar(ijmk)*lvg(ijmk) + &
421 theta_vn(ijmk)*lvg(ijk))
423 vgc(ijk) = avg_y_n(lvg(ijmk),lvg(ijk))
432 wgc(ijk) = avg_z_t(lwg(ijkm),lwg(ijk))
integer, dimension(:), allocatable i_of
integer, dimension(:,:), allocatable filter_cell
double precision, dimension(:), allocatable ep_g
double precision, parameter one
logical mppic_pdrag_implicit
subroutine des_drag_gp(NP, PARTICLE_VEL, FLUID_VEL, EPg)
double precision, dimension(:), allocatable theta_wt
double precision, dimension(:), allocatable v_go
logical, dimension(:), allocatable cut_u_treatment_at
double precision, dimension(:), allocatable u_go
double precision, dimension(:), allocatable theta_wt_bar
double precision, dimension(:,:), allocatable filter_weight
double precision, dimension(:), allocatable theta_vn_bar
double precision, dimension(:), allocatable theta_vn
double precision, dimension(:), allocatable v_g
double precision, dimension(:), allocatable theta_ue
double precision, dimension(:), allocatable w_g
double precision, dimension(:), allocatable w_go
logical, dimension(:), allocatable cut_w_treatment_at
double precision, dimension(:), allocatable theta_ue_bar
logical, dimension(:), allocatable cut_v_treatment_at
double precision, dimension(:), allocatable u_g
double precision, dimension(:), allocatable vol
double precision, dimension(:), allocatable des_stat_wt
subroutine calc_cell_center_gas_vel(lUg, lVg, lWg, UGC, VGC, WGC)
double precision, parameter zero