def slip_ratio(vls, Dp, d, epsilon, nu, rhol, rhos, Cvt): """ Return the slip ratio (Xi) for the given slurry. Dp = Pipe diameter (m) d = Particle diameter (m) epsilon = absolute pipe roughness (m) nu = fluid kinematic viscosity in m2/sec rhol = density of the fluid (ton/m3) rhos = particle density (ton/m3) Cvt = transport volume concentration """ Rsd = (rhos-rhol)/rhol vt = heterogeneous.vt_ruby(d, Rsd, nu) # particle shape factor assumed for sand for now CD = (4/3.)*((gravity*Rsd*d)/vt**2) # eqn 4.4-6 without the shape factor Rep = vt*d/nu # eqn 4.2-6 top = 4.7 + 0.41*Rep**0.75 bottom = 1. + 0.175*Rep**0.75 beta = top/bottom # eqn 4.6-4 KC = 0.175*(1+beta) vls_ldv = LDV(vls, Dp, d, epsilon, nu, rhol, rhos, Cvt) Xi_ldv = (1/(2*CD)) * (1-Cvt/KC)**beta * (vls_ldv/vls) # eqn 8.12-1 vs_ldv = vls_ldv * Xi_ldv Kldv = 1/(1 - Xi_ldv) # eqn 7.9-14 Xi_fb = 1-((Cvt*vs_ldv)/(stratified.Cvb-Kldv*Cvt)*(vs_ldv-vls)+Kldv*Cvt*vs_ldv) # eqn 8.12-2 Xi_th = min(Xi_fb, Xi_ldv) # eqn 8.12-3 vls_t = vls_ldv*(5 * (1/(2*CD)) * (1-Cvt/KC)**beta * (1-Cvt/stratified.Cvb)**(-1))**(1./4) # eqn8.12-4 Xi_t = (1-Cvt/stratified.Cvb) * (1-(4./5)*(vls/vls_t)) # 8.12-5 Xi = Xi_th*(1-(vls/vls_t)**alpha_xi) + Xi_t *(vls/vls_t)**alpha_xi # eqn 8.12-7 return min(max(Xi, 0.0),1.0)
def slip_ratio(vls, Dp, d, epsilon, nu, rhol, rhos, Cvt): """ Return the slip ratio (Xi) for the given slurry. Dp = Pipe diameter (m) d = Particle diameter (m) epsilon = absolute pipe roughness (m) nu = fluid kinematic viscosity in m2/sec rhol = density of the fluid (ton/m3) rhos = particle density (ton/m3) Cvt = transport volume concentration """ if vls == 0.0: vls = 0.01 Rsd = (rhos-rhol)/rhol vt = heterogeneous.vt_ruby(d, Rsd, nu) # particle shape factor assumed for sand for now CD = (4/3.)*((gravity*Rsd*d)/vt**2) # eqn 4.4-6 without the shape factor Rep = vt*d/nu # eqn 4.2-6 top = 4.7 + 0.41*Rep**0.75 bottom = 1. + 0.175*Rep**0.75 beta = top/bottom # eqn 4.6-4 KC = 0.175*(1+beta) vls_ldv = LDV(vls, Dp, d, epsilon, nu, rhol, rhos, Cvt) Xi_ldv = (1/(2*CD)) * (1-Cvt/KC)**beta * (vls_ldv/vls) # eqn 8.12-1 vs_ldv = vls_ldv * Xi_ldv Kldv = 1/(1 - Xi_ldv) # eqn 7.9-14 Xi_fb = 1-((Cvt*vs_ldv)/(stratified.Cvb-Kldv*Cvt)*(vs_ldv-vls)+Kldv*Cvt*vs_ldv) # eqn 8.12-2 Xi_th = min(Xi_fb, Xi_ldv) # eqn 8.12-3 vls_t = vls_ldv*(5 * (1/(2*CD)) * (1-Cvt/KC)**beta * (1-Cvt/stratified.Cvb)**(-1))**(1./4) # eqn8.12-4 Xi_t = (1-Cvt/stratified.Cvb) * (1-(4./5)*(vls/vls_t)) # 8.12-5 Xi = Xi_th*(1-(vls/vls_t)**alpha_xi) + Xi_t *(vls/vls_t)**alpha_xi # eqn 8.12-7 return min(max(Xi, 0.0),1.0)
def test_settlingVelocity(self): nu = 0.001005/(0.9982*1000) rhos = 2.65 rhol = DHLLDV_constants.water_density[20] Rsd = (rhos-rhol)/rhol self.assertAlmostEqual(heterogeneous.vt_ruby(0.075/1000, Rsd, nu), 0.0044591) self.assertAlmostEqual(heterogeneous.vt_ruby(0.2/1000, Rsd, nu), 0.0256840) self.assertAlmostEqual(heterogeneous.vt_ruby(0.4/1000, Rsd, nu), 0.0592375) self.assertAlmostEqual(heterogeneous.vt_ruby(0.8/1000, Rsd, nu), 0.1020475) self.assertAlmostEqual(heterogeneous.vt_ruby(1.6/1000, Rsd, nu), 0.1549654) self.assertAlmostEqual(heterogeneous.vt_ruby(10./1000, Rsd, nu), 0.4018323) self.assertAlmostEqual(heterogeneous.vt_ruby(20./1000, Rsd, nu), 0.5691956)
def LDV(vls, Dp, d, epsilon, nu, rhol, rhos, Cvs, max_steps=10): """ Return the LDV for the given slurry. Dp = Pipe diameter (m) d = Particle diameter (m) epsilon = absolute pipe roughness (m) nu = fluid kinematic viscosity in m2/sec rhol = density of the fluid (ton/m3) rhos = particle density (ton/m3) Cvs = insitu volume concentration """ Rsd = (rhos-rhol)/rhol fbot = (2*gravity*Rsd*Dp)**0.5 #Very Small Particles vls = 1.0 Re = homogeneous.pipe_reynolds_number(vls, Dp, nu) lambdal = homogeneous.swamee_jain_ff(Re, Dp, epsilon) FL_vs = 1.4*(nu*Rsd*gravity)**(1./3.)*(8/lambdal)**0.5/fbot # eqn 8.10-1 vlsldv = FL_vs*fbot steps = 0 while not (1.00001 >= vls/vlsldv > 0.99999) and steps < max_steps: vls = (vls + vlsldv)/2 Re = homogeneous.pipe_reynolds_number(vls, Dp, nu) lambdal = homogeneous.swamee_jain_ff(Re, Dp, epsilon) FL_vs = 1.4*(nu*Rsd*gravity)**(1./3.)*(8/lambdal)**0.5/fbot # eqn 8.10-1 vlsldv = FL_vs*fbot steps += 1 #Small Particles vls = 4.0 Re = homogeneous.pipe_reynolds_number(vls, Dp, nu) lambdal = homogeneous.swamee_jain_ff(Re, Dp, epsilon) alphap = 3.4 * (1.65/Rsd)**(2./9) #Eqn 8.10-3 vt = heterogeneous.vt_ruby(d, Rsd, nu) Rep = vt*d/nu # eqn 4.2-6 top = 4.7 + 0.41*Rep**0.75 bottom = 1. + 0.175*Rep**0.75 beta = top/bottom # eqn 4.6-4 KC = 0.175*(1+beta) FL_ss = alphap * (vt*Cvs*(1-Cvs/KC)**beta/(lambdal*fbot))**(1./3) # eqn 8.10-3 vlsldv = FL_ss*fbot steps = 0 while not (1.00001 >= vls/vlsldv > 0.99999) and steps < max_steps: vls = (vls + vlsldv)/2 Re = homogeneous.pipe_reynolds_number(vls, Dp, nu) lambdal = homogeneous.swamee_jain_ff(Re, Dp, epsilon) FL_ss = alphap * (vt*Cvs*(1-Cvs/KC)**beta/(lambdal*fbot))**(1./3) # eqn 8.10-3 vlsldv = FL_ss*fbot steps += 1 FL_s = max(FL_vs, FL_ss) #Eqn 8.10-4 #Large particles vls=4.3 if d <= 0.015*Dp: Cvr_ldv = 0.0065/(2*gravity*Rsd*Dp) # Eqn 8.10-7 else: Cvr_ldv = 0.053*(d/Dp)**0.5/(2*gravity*Rsd*Dp) # Eqn 8.10-7 Re = homogeneous.pipe_reynolds_number(vls, Dp, nu) lambdal = homogeneous.swamee_jain_ff(Re, Dp, epsilon) FL_r = alphap*((1-Cvs/KC)**beta * Cvs * (stratified.musf*stratified.Cvb*pi/8)**0.5 * Cvr_ldv**0.5/lambdal)**(1./3) # Eqn 8.10-6 vlsldv = FL_r*fbot steps = 0 while not (1.00001 >= vls/vlsldv > 0.99999) and steps < max_steps: vls = (vls + vlsldv)/2 Re = homogeneous.pipe_reynolds_number(vls, Dp, nu) lambdal = homogeneous.swamee_jain_ff(Re, Dp, epsilon) FL_r = alphap*((1-Cvs/KC)**beta * Cvs * (stratified.musf*stratified.Cvb*pi/8)**0.5 * Cvr_ldv**0.5/lambdal)**(1./3) # Eqn 8.10-6 vlsldv = FL_r*fbot steps += 1 #The Upper limit d0 = 0.0005*(1.65/Rsd)**0.5 #Eqn 8.10-8 drough = 2./1000 # note: only valid for sand with Rsd=1.65 if d > drough: FL_ul = FL_r elif FL_s <= FL_r: FL_ul = FL_s else: FL_ul = FL_s*exp(-1*d/d0) + FL_r*(1-exp(-1*d/d0)) # Eqn 8.10-8 vls = 2.0 Re = homogeneous.pipe_reynolds_number(vls, Dp, nu) lambdal = homogeneous.swamee_jain_ff(Re, Dp, epsilon) A = -1 B = vt*(1-Cvs/KC)**beta/stratified.musf C = ((8.5**2/lambdal)*(vt/(gravity*d)**0.5)**(10./3)*(nu*gravity)**(2./3))/stratified.musf vlsldv = (-1*B - (B**2-4*A*C)**0.5)/(2*A) # Eqn 8.10-11 steps = 0 while not (1.00001 >= vls/vlsldv > 0.99999) and steps < max_steps: vls = (vls + vlsldv)/2 Re = homogeneous.pipe_reynolds_number(vls, Dp, nu) lambdal = homogeneous.swamee_jain_ff(Re, Dp, epsilon) A = -1 B = vt*(1-Cvs/KC)**beta/stratified.musf C = ((8.5**2/lambdal)*(vt/(gravity*d)**0.5)**(10./3)*(nu*gravity)**(2./3))/stratified.musf vlsldv = (-1*B - (B**2-4*A*C)**0.5)/(2*A) # Eqn 8.10-11 steps += 1 FL_ll = vlsldv/fbot # Eqn 8.10-12 FL = max(FL_ul, FL_ll) # Eqn 8.10-13 return FL*fbot
def test_sqrtcx(self): Rsd = (self.rhos-self.rhol)/self.rhol vt = heterogeneous.vt_ruby(self.d_med, Rsd, self.nul) self.assertAlmostEqual(heterogeneous.sqrtcx(0.06593595, self.d_med), 1.11123615097589) self.assertAlmostEqual(heterogeneous.sqrtcx(vt, self.d_med), 1.11123615097589)
def test_vt(self): Rsd = (self.rhos-self.rhol)/self.rhol vt = heterogeneous.vt_ruby(self.d_med, Rsd, self.nul) self.assertAlmostEqual(vt*10, 0.0659215101289695*10, places=7)