29 g0ep_avg, th, mu_g_avg, ro_g_avg, ros_avg, &
30 dp_avg, k_12_avg, tau_12_avg, tau_1_avg, vrel, vslip,&
31 del_u, s_s, s_dd, vel, w_vel, m, gw, hw, cw)
50 DOUBLE PRECISION,
INTENT(IN) :: g0
52 DOUBLE PRECISION,
INTENT(IN) :: EPS
54 DOUBLE PRECISION,
INTENT(IN) :: EPG, ep_star_avg
56 DOUBLE PRECISION,
INTENT(IN) :: g0EP_avg
58 DOUBLE PRECISION,
INTENT(INOUT) :: TH
60 DOUBLE PRECISION,
INTENT(IN) :: Mu_g_avg
62 DOUBLE PRECISION,
INTENT(IN) :: RO_g_avg
64 DOUBLE PRECISION,
INTENT(IN) :: ROS_avg
66 DOUBLE PRECISION,
INTENT(IN) :: DP_avg
68 DOUBLE PRECISION,
INTENT(IN) :: K_12_avg, Tau_12_avg, Tau_1_avg
70 DOUBLE PRECISION,
INTENT(IN) :: VREL
72 DOUBLE PRECISION,
INTENT(IN) :: VSLIP
74 DOUBLE PRECISION,
INTENT(IN) :: VEL
76 DOUBLE PRECISION,
INTENT(IN) :: W_VEL
78 DOUBLE PRECISION,
INTENT(IN) :: DEL_U
80 DOUBLE PRECISION,
INTENT(IN) :: S_S
82 DOUBLE PRECISION,
INTENT(IN) :: S_dd
84 INTEGER,
INTENT(IN) :: M
87 DOUBLE PRECISION,
INTENT(INOUT) :: Gw
89 DOUBLE PRECISION,
INTENT(INOUT) :: Hw
91 DOUBLE PRECISION,
INTENT(INOUT) :: Cw
96 DOUBLE PRECISION :: Mu_s
98 DOUBLE PRECISION :: F_2
100 DOUBLE PRECISION :: Pf
102 DOUBLE PRECISION :: Pc
104 DOUBLE PRECISION :: Chi, N_Pff
106 DOUBLE PRECISION :: Mu
108 DOUBLE PRECISION :: Mu_b
110 DOUBLE PRECISION :: Mu_star
112 DOUBLE PRECISION :: Re_g
114 DOUBLE PRECISION :: C_d
116 DOUBLE PRECISION :: Beta, DgA
118 DOUBLE PRECISION :: ZETA
120 DOUBLE PRECISION :: Sigma_c, Tau_2_c, Tau_12_st, Nu_t
121 DOUBLE PRECISION :: Tau_2, zeta_c_2, MU_2_T_Kin, Mu_2_Col
122 DOUBLE PRECISION :: Tmp_Ahmadi_Const
124 DOUBLE PRECISION :: dpc_dphi
126 DOUBLE PRECISION :: g0_loc
133 IF (mype.eq.pe_io)
THEN 135 'Warning: Negative granular temp at wall set to 1e-8' 145 IF (vslip ==
zero)
THEN 162 f_2 =
tan_phi_w*ros_avg*eps*(1d0+ 4.d0 *
eta *g0ep_avg)*th
169 f_2 = (
phip*dsqrt(3d0*th)*
pi*ros_avg*eps*g0_loc)&
170 /(6d0*(
one-ep_star_avg))
175 mu = (5d0*dsqrt(
pi*th)*dp_avg*ros_avg)/96d0
176 mu_b = (256d0*mu*eps*g0ep_avg)/(5d0*
pi)
179 re_g = epg*ro_g_avg*dp_avg*vrel/mu_g_avg
180 IF (re_g.lt.1000d0)
THEN 185 dga = 0.75d0*c_d*ro_g_avg*epg*vrel/(dp_avg*epg**(2.65d0))
199 mu_star = ros_avg*eps* g0_loc*th* mu/ &
200 (ros_avg*g0ep_avg*th + 2.0d0*
switch*dga/ros_avg* mu)
203 mu_s = ((2d0+
alpha)/3d0)*((mu_star/(
eta*(2d0-
eta)*&
204 g0_loc))*(
one+1.6d0*
eta*g0ep_avg&
206 g0ep_avg)+(0.6d0*mu_b*
eta))
214 tau_2_c = dp_avg/(6.d0*eps*g0_loc*dsqrt(16.d0*(th+
small_number)
224 IF(eps < (
one-ep_star_avg))
THEN 226 one/(
one+ tau_1_avg/tau_12_st * (
one-eps/(
one-ep_star_avg))*
228 tmp_ahmadi_const =
one 230 mu_s = tmp_ahmadi_const &
231 *0.1045d0*(
one/g0_loc+3.2d0*eps+12.1824d0*g0_loc*eps*eps)
242 zeta = ((48d0*
eta*(1d0-
eta)*ros_avg*eps*eps*g0_loc*&
244 (
sqrt_pi*dp_avg*2d0*mu_s))**0.5d0
248 zeta = dsqrt(s_s + (th/(dp_avg*dp_avg)))
251 IF (epg < ep_star_avg)
THEN 263 IF (del_u .GE.
zero)
THEN 264 n_pff = dsqrt(3d0)/(2d0*
sin_phi)
269 IF ((del_u/(zeta*n_pff*dsqrt(2d0)*
sin_phi)) .GT. 1d0)
THEN 271 ELSEIF( del_u ==
zero )
THEN 274 pf = pc*(1d0 - (del_u/(zeta*n_pff*dsqrt(2d0)*
sin_phi)))**&
278 chi = dsqrt(2d0)*pf*
sin_phi*(n_pff - (n_pff-1d0)*&
279 ((pf/pc)**(1d0/(n_pff-1d0))))
282 pf = pc*((n_pff/(n_pff-1d0))**(n_pff-1d0))
289 pf = pf * eps/(
one-epg)
290 chi = chi * eps/(
one-epg)
298 IF(vslip ==
zero .OR. zeta ==
zero)
THEN 302 hw = hw / (mu_s + chi/(2d0*zeta))
double precision, parameter one
double precision, parameter switch
subroutine calc_gw_hw_cw(g0, EPS, EPG, ep_star_avg, g0EP_avg, TH, Mu_g_avg, RO_g_avg, ROs_avg, DP_avg, K_12_avg, Tau_12_avg, Tau_1_avg, VREL, VSLIP, DEL_U, S_S, S_dd, VEL, W_VEL, M, gw, hw, cw)
double precision, parameter alpha
double precision, parameter small_number
double precision eps_f_min
double precision, parameter half
double precision, parameter large_number
double precision tan_phi_w
double precision, parameter pi
double precision, parameter sqrt_pi
double precision, parameter zero