"""Chemical Engineering Design Library (ChEDL). Utilities for process modeling.
Copyright (C) 2016, 2017, 2018, 2020 Caleb Bell <Caleb.Andrew.Bell@gmail.com>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
This module contains correlations for calculating the pressure drop across
a packed bed. Several correlations for void fraction are also included.
For reporting bugs, adding feature requests, or submitting pull requests,
please use the `GitHub issue tracker <https://github.com/CalebBell/fluids/>`_
or contact the author at Caleb.Andrew.Bell@gmail.com.
.. contents:: :local:
Packed Bed Correlation Interfaces
---------------------------------
.. autofunction:: dP_packed_bed
.. autofunction:: dP_packed_bed_methods
Packed Bed Correlations
-----------------------
.. autofunction:: Ergun
.. autofunction:: Kuo_Nydegger
.. autofunction:: Jones_Krier
.. autofunction:: Carman
.. autofunction:: Hicks
.. autofunction:: Brauer
.. autofunction:: KTA
.. autofunction:: Erdim_Akgiray_Demir
.. autofunction:: Fahien_Schriver
.. autofunction:: Tallmadge
.. autofunction:: Idelchik
.. autofunction:: Harrison_Brunner_Hecker
.. autofunction:: Montillet_Akkari_Comiti
.. autofunction:: Guo_Sun
Voidage Correlations
--------------------
.. autofunction:: voidage_Benyahia_Oneil
.. autofunction:: voidage_Benyahia_Oneil_spherical
.. autofunction:: voidage_Benyahia_Oneil_cylindrical
"""
from math import exp, pi, sqrt
__all__ = ['dP_packed_bed', 'dP_packed_bed_methods', 'Ergun', 'Kuo_Nydegger', 'Jones_Krier', 'Carman', 'Hicks',
'Brauer', 'KTA', 'Erdim_Akgiray_Demir', 'Fahien_Schriver',
'Tallmadge', 'Idelchik',
'Harrison_Brunner_Hecker', 'Montillet_Akkari_Comiti', 'Guo_Sun',
'voidage_Benyahia_Oneil',
'voidage_Benyahia_Oneil_spherical', 'voidage_Benyahia_Oneil_cylindrical']
[docs]def Ergun(dp, voidage, vs, rho, mu, L=1.0):
r'''Calculates pressure drop across a packed bed of spheres using a
correlation developed in [1]_, as shown in [2]_ and [3]_. Eighteenth most
accurate correlation overall in the review of [2]_.
Most often presented in the following form:
.. math::
\Delta P = \frac{150\mu (1-\epsilon)^2 v_s L}{\epsilon^3 d_p^2}
+ \frac{1.75 (1-\epsilon) \rho v_s^2 L}{\epsilon^3 d_p}
It is also often presented with a term for sphericity, which is multiplied
by particle diameter everywhere in the equation. However, this is highly
empirical and better correlations for beds of differently-shaped particles
exist. To use sphericity in this model, multiple the input particle
diameter by the spericity separately.
In the review of [2]_, it is expressed in terms of a parameter `fp`, shown
below. This is a convenient means of expressing all forms of pressure drop
in packed beds correlations in a way that allows for easy comparison.
.. math::
f_p = \left(150 + 1.75\left(\frac{Re}{1-\epsilon}\right)\right)
\frac{(1-\epsilon)^2}{\epsilon^3 Re}
.. math::
f_p = \frac{\Delta P d_p}{\rho v_s^2 L}
.. math::
Re = \frac{\rho v_s d_p}{\mu}
Parameters
----------
dp : float
Particle diameter of spheres [m]
voidage : float
Void fraction of bed packing [-]
vs : float
Superficial velocity of the fluid (volumetric flow rate/cross-sectional
area)[m/s]
rho : float
Density of the fluid [kg/m^3]
mu : float
Viscosity of the fluid, [Pa*s]
L : float, optional
Length the fluid flows in the packed bed [m]
Returns
-------
dP : float
Pressure drop across the bed [Pa]
Notes
-----
The first term in this equation represents laminar loses, and the second,
turbulent loses. Developed with data from spheres, sand, and pulverized
coke. Fluids tested were carbon dioxide, nitrogen, methane, and hydrogen.
Validity range shown in [3]_ is :math:`1 < Re_{Erg} < 2300`.
Over predicts pressure drop for :math:`Re_{Erg} > 700`.
Examples
--------
>>> Ergun(dp=8E-4, voidage=0.4, vs=1E-3, rho=1E3, mu=1E-3)
1338.8671874999995
References
----------
.. [1] Ergun, S. (1952) "Fluid flow through packed columns",
Chem. Eng. Prog., 48, 89-94.
.. [2] Erdim, Esra, Ömer Akgiray, and İbrahim Demir. "A Revisit of Pressure
Drop-Flow Rate Correlations for Packed Beds of Spheres." Powder
Technology 283 (October 2015): 488-504. doi:10.1016/j.powtec.2015.06.017.
.. [3] Jones, D. P., and H. Krier. "Gas Flow Resistance Measurements
Through Packed Beds at High Reynolds Numbers." Journal of Fluids
Engineering 105, no. 2 (June 1, 1983): 168-172. doi:10.1115/1.3240959.
'''
Re = dp*rho*vs/mu
fp = (150 + 1.75*(Re/(1-voidage)))*(1-voidage)**2/(voidage**3*Re)
return fp*rho*vs**2*L/dp
[docs]def Kuo_Nydegger(dp, voidage, vs, rho, mu, L=1.0):
r'''Calculates pressure drop across a packed bed of spheres using a
correlation developed in [1]_, as shown in [2]_ and [3]. Thirty-eighth most
accurate correlation overall in the review of [2]_.
.. math::
f_p = \left(276.23 + 5.05\left(\frac{Re}{1-\epsilon}\right)^{0.87}
\right)\frac{(1-\epsilon)^2}{\epsilon^3 Re}
.. math::
f_p = \frac{\Delta P d_p}{\rho v_s^2 L}
.. math::
Re = \frac{\rho v_s d_p}{\mu}
Parameters
----------
dp : float
Particle diameter of spheres [m]
voidage : float
Void fraction of bed packing [-]
vs : float
Superficial velocity of the fluid (volumetric flow rate/cross-sectional
area)[m/s]
rho : float
Density of the fluid [kg/m^3]
mu : float
Viscosity of the fluid, [Pa*s]
L : float, optional
Length the fluid flows in the packed bed [m]
Returns
-------
dP : float
Pressure drop across the bed [Pa]
Notes
-----
Validity range shown in [2]_ as for a range of
:math:`460 < Re < 14600`.
:math:`0.3760 < \epsilon < 0.3901`.
Developed with data from rough granular ball propellants beds, with air.
Examples
--------
>>> Kuo_Nydegger(dp=8E-1, voidage=0.4, vs=1E-3, rho=1E3, mu=1E-3)
0.025651460973648624
References
----------
.. [1] Kuo, K. K. and Nydegger, C., "Flow Resistance Measurement and
Correlation in Packed Beds of WC 870 Ball Propellants," Journal of
Ballistics , Vol. 2, No. 1, pp. 1-26, 1978.
.. [2] Erdim, Esra, Ömer Akgiray, and İbrahim Demir. "A Revisit of Pressure
Drop-Flow Rate Correlations for Packed Beds of Spheres." Powder
Technology 283 (October 2015): 488-504. doi:10.1016/j.powtec.2015.06.017.
.. [3] Jones, D. P., and H. Krier. "Gas Flow Resistance Measurements
Through Packed Beds at High Reynolds Numbers." Journal of Fluids
Engineering 105, no. 2 (June 1, 1983): 168-172. doi:10.1115/1.3240959.
'''
Re = dp*rho*vs/mu
fp = (276.23 + 5.05*(Re/(1-voidage))**0.87)*(1-voidage)**2/(voidage**3*Re)
return fp*rho*vs**2*L/dp
[docs]def Tallmadge(dp, voidage, vs, rho, mu, L=1.0):
r'''Calculates pressure drop across a packed bed of spheres using a
correlation developed in [1]_, as shown in [2]_ and [3].
.. math::
f_p = \left(150 + 4.2\left(\frac{Re}{1-\epsilon}\right)^{5/6} \right)
\frac{(1-\epsilon)^2}{\epsilon^3 Re}
.. math::
f_p = \frac{\Delta P d_p}{\rho v_s^2 L}
.. math::
Re = \frac{\rho v_s d_p}{\mu}
Parameters
----------
dp : float
Particle diameter of spheres [m]
voidage : float
Void fraction of bed packing [-]
vs : float
Superficial velocity of the fluid (volumetric flow rate/cross-sectional
area)[m/s]
rho : float
Density of the fluid [kg/m^3]
mu : float
Viscosity of the fluid, [Pa*s]
L : float, optional
Length the fluid flows in the packed bed [m]
Returns
-------
dP : float
Pressure drop across the bed [Pa]
Notes
-----
The validity range shown in [2]_ is a range of
:math:`0.1 < Re < 100000`.
Examples
--------
>>> Tallmadge(dp=8E-4, voidage=0.4, vs=1E-3, rho=1E3, mu=1E-3)
1365.2739144209424
References
----------
.. [1] Tallmadge, J. A. "Packed Bed Pressure Drop-an Extension to Higher
Reynolds Numbers." AIChE Journal 16, no. 6 (November 1, 1970): 1092-93.
.. [2] Erdim, Esra, Ömer Akgiray, and İbrahim Demir. "A Revisit of Pressure
Drop-Flow Rate Correlations for Packed Beds of Spheres." Powder
Technology 283 (October 2015): 488-504. doi:10.1016/j.powtec.2015.06.017.
.. [3] Montillet, A., E. Akkari, and J. Comiti. "About a Correlating
Equation for Predicting Pressure Drops through Packed Beds of Spheres
in a Large Range of Reynolds Numbers." Chemical Engineering and
Processing: Process Intensification 46, no. 4 (April 2007): 329-33.
doi:10.1016/j.cep.2006.07.002.
'''
Re = dp*rho*vs/mu
fp = (150.0 + 4.2*(Re/(1-voidage))**(5.0/6.0))*(1-voidage)**2/(voidage**3*Re)
return fp*rho*vs**2*L/dp
[docs]def Jones_Krier(dp, voidage, vs, rho, mu, L=1.0):
r'''Calculates pressure drop across a packed bed of spheres using a
correlation developed in [1]_, also shown in [2]_. Tenth most accurate
correlation overall in the review of [2]_.
.. math::
f_p = \left(150 + 3.89\left(\frac{Re}{1-\epsilon}\right)^{0.87}\right)
\frac{(1-\epsilon)^2}{\epsilon^3 Re}
.. math::
f_p = \frac{\Delta P d_p}{\rho v_s^2 L}
.. math::
Re = \frac{\rho v_s d_p}{\mu}
Parameters
----------
dp : float
Particle diameter of spheres [m]
voidage : float
Void fraction of bed packing [-]
vs : float
Superficial velocity of the fluid (volumetric flow rate/cross-sectional
area)[m/s]
rho : float
Density of the fluid [kg/m^3]
mu : float
Viscosity of the fluid, [Pa*s]
L : float, optional
Length the fluid flows in the packed bed [m]
Returns
-------
dP : float
Pressure drop across the bed [Pa]
Notes
-----
Validity range shown in [1]_ as for a range of
:math:`733 < Re < 126,670`.
:math:`0.3804 < \epsilon < 0.4304`.
Developed from data of spherical glass beads.
Examples
--------
>>> Jones_Krier(dp=8E-4, voidage=0.4, vs=1E-3, rho=1E3, mu=1E-3)
1362.2719449873746
References
----------
.. [1] Jones, D. P., and H. Krier. "Gas Flow Resistance Measurements
Through Packed Beds at High Reynolds Numbers." Journal of Fluids
Engineering 105, no. 2 (June 1, 1983): 168-172. doi:10.1115/1.3240959.
.. [2] Erdim, Esra, Ömer Akgiray, and İbrahim Demir. "A Revisit of Pressure
Drop-Flow Rate Correlations for Packed Beds of Spheres." Powder
Technology 283 (October 2015): 488-504. doi:10.1016/j.powtec.2015.06.017.
'''
Re = dp*rho*vs/mu
fp = (150 + 3.89*(Re/(1-voidage))**0.87)*(1-voidage)**2/(voidage**3*Re)
return fp*rho*vs**2*L/dp
[docs]def Carman(dp, voidage, vs, rho, mu, L=1.0):
r'''Calculates pressure drop across a packed bed of spheres using a
correlation developed in [1]_, as shown in [2]_. Fifth most accurate
correlation overall in the review of [2]_. Also shown in [3]_.
.. math::
f_p = \left(180 + 2.871\left(\frac{Re}{1-\epsilon}\right)^{0.9}\right)
\frac{(1-\epsilon)^2}{\epsilon^3 Re}
.. math::
f_p = \frac{\Delta P d_p}{\rho v_s^2 L}
.. math::
Re = \frac{\rho v_s d_p}{\mu}
Parameters
----------
dp : float
Particle diameter of spheres [m]
voidage : float
Void fraction of bed packing [-]
vs : float
Superficial velocity of the fluid (volumetric flow rate/cross-sectional
area)[m/s]
rho : float
Density of the fluid [kg/m^3]
mu : float
Viscosity of the fluid, [Pa*s]
L : float, optional
Length the fluid flows in the packed bed [m]
Returns
-------
dP : float
Pressure drop across the bed [Pa]
Notes
-----
Valid in [1]_, [2]_, and [3]_ for a range of
:math:`300 < Re_{Erg} < 60,000`.
Examples
--------
>>> Carman(dp=8E-4, voidage=0.4, vs=1E-3, rho=1E3, mu=1E-3)
1614.721678121775
References
----------
.. [1] P.C. Carman, Fluid flow through granular beds, Transactions of the
London Institute of Chemical Engineers 15 (1937) 150-166.
.. [2] Erdim, Esra, Ömer Akgiray, and İbrahim Demir. "A Revisit of Pressure
Drop-Flow Rate Correlations for Packed Beds of Spheres." Powder
Technology 283 (October 2015): 488-504. doi:10.1016/j.powtec.2015.06.017.
.. [3] Allen, K. G., T. W. von Backstrom, and D. G. Kroger. "Packed Bed
Pressure Drop Dependence on Particle Shape, Size Distribution, Packing
Arrangement and Roughness." Powder Technology 246 (September 2013):
590-600. doi:10.1016/j.powtec.2013.06.022.
'''
Re = dp*rho*vs/mu
fp = (180 + 2.871*(Re/(1-voidage))**0.9)*(1-voidage)**2/(voidage**3*Re)
return fp*rho*vs**2*L/dp
[docs]def Hicks(dp, voidage, vs, rho, mu, L=1.0):
r'''Calculates pressure drop across a packed bed of spheres using a
correlation developed in [1]_, as shown in [2]_. Twenty-third most accurate
correlation overall in the review of [2]_. Also shown in [3]_.
.. math::
f_p = 6.8 \frac{(1-\epsilon)^{1.2}}{Re^{0.2}\epsilon^3}
.. math::
f_p = \frac{\Delta P d_p}{\rho v_s^2 L}
.. math::
Re = \frac{\rho v_s d_p}{\mu}
Parameters
----------
dp : float
Particle diameter of spheres [m]
voidage : float
Void fraction of bed packing [-]
vs : float
Superficial velocity of the fluid (volumetric flow rate/cross-sectional
area)[m/s]
rho : float
Density of the fluid [kg/m^3]
mu : float
Viscosity of the fluid, [Pa*s]
L : float, optional
Length the fluid flows in the packed bed [m]
Returns
-------
dP : float
Pressure drop across the bed [Pa]
Notes
-----
Valid in [1]_, [2]_, and [3]_ for a range of
:math:`300 < Re_{Erg} < 60,000`.
Examples
--------
>>> Hicks(dp=0.01, voidage=0.4, vs=1E-3, rho=1E3, mu=1E-3)
3.631703956680737
References
----------
.. [1] Hicks, R. E. "Pressure Drop in Packed Beds of Spheres." Industrial
Engineering Chemistry Fundamentals 9, no. 3 (August 1, 1970): 500-502.
doi:10.1021/i160035a032.
.. [2] Erdim, Esra, Ömer Akgiray, and İbrahim Demir. "A Revisit of Pressure
Drop-Flow Rate Correlations for Packed Beds of Spheres." Powder
Technology 283 (October 2015): 488-504. doi:10.1016/j.powtec.2015.06.017.
.. [3] Allen, K. G., T. W. von Backstrom, and D. G. Kroger. "Packed Bed
Pressure Drop Dependence on Particle Shape, Size Distribution, Packing
Arrangement and Roughness." Powder Technology 246 (September 2013):
590-600. doi:10.1016/j.powtec.2013.06.022.
'''
Re = dp*rho*vs/mu
fp = 6.8*(1-voidage)**1.2/Re**0.2/voidage**3
return fp*rho*vs**2*L/dp
[docs]def Brauer(dp, voidage, vs, rho, mu, L=1.0):
r'''Calculates pressure drop across a packed bed of spheres using a
correlation developed in [1]_, as shown in [2]_. Seventh most accurate
correlation overall in the review of [2]_. Also shown in [3]_.
.. math::
f_p = \left(160 + 3\left(\frac{Re}{1-\epsilon}\right)^{0.9}\right)
\frac{(1-\epsilon)^2}{\epsilon^3 Re}
.. math::
f_p = \frac{\Delta P d_p}{\rho v_s^2 L}
.. math::
Re = \frac{\rho v_s d_p}{\mu}
Parameters
----------
dp : float
Particle diameter of spheres [m]
voidage : float
Void fraction of bed packing [-]
vs : float
Superficial velocity of the fluid (volumetric flow rate/cross-sectional
area)[m/s]
rho : float
Density of the fluid [kg/m^3]
mu : float
Viscosity of the fluid, [Pa*s]
L : float, optional
Length the fluid flows in the packed bed [m]
Returns
-------
dP : float
Pressure drop across the bed [Pa]
Notes
-----
The original article [1]_ has not been reviewed.
In [2]_, is stated as for a range of :math:`2 < Re_{Erg} < 20,000`.
In [3]_, is stated as for a range of :math:`0.01 < Re_{Erg} < 40,000`.
Examples
--------
>>> Brauer(dp=8E-4, voidage=0.4, vs=1E-3, rho=1E3, mu=1E-3)
1441.5479196020563
References
----------
.. [1] H. Brauer, Grundlagen der Einphasen -und Mehrphasenstromungen,
Sauerlander AG, Aarau, 1971.
.. [2] Erdim, Esra, Ömer Akgiray, and İbrahim Demir. "A Revisit of Pressure
Drop-Flow Rate Correlations for Packed Beds of Spheres." Powder
Technology 283 (October 2015): 488-504. doi:10.1016/j.powtec.2015.06.017.
.. [3] Allen, K. G., T. W. von Backstrom, and D. G. Kroger. "Packed Bed
Pressure Drop Dependence on Particle Shape, Size Distribution, Packing
Arrangement and Roughness." Powder Technology 246 (September 2013):
590-600. doi:10.1016/j.powtec.2013.06.022.
'''
Re = dp*rho*vs/mu
fp = (160 + 3.1*(Re/(1-voidage))**0.9)*(1-voidage)**2/(voidage**3*Re)
return fp*rho*vs**2*L/dp
[docs]def KTA(dp, voidage, vs, rho, mu, L=1.0):
r'''Calculates pressure drop across a packed bed of spheres using a
correlation developed in [1]_, as shown in [2]_. Third most accurate
correlation overall in the review of [2]_.
.. math::
f_p = \left(160 + 3\left(\frac{Re}{1-\epsilon}\right)^{0.9}\right)
\frac{(1-\epsilon)^2}{\epsilon^3 Re}
.. math::
f_p = \frac{\Delta P d_p}{\rho v_s^2 L}
.. math::
Re= \frac{\rho v_s d_p}{\mu}
Parameters
----------
dp : float
Particle diameter of spheres [m]
voidage : float
Void fraction of bed packing [-]
vs : float
Superficial velocity of the fluid (volumetric flow rate/cross-sectional
area)[m/s]
rho : float
Density of the fluid [kg/m^3]
mu : float
Viscosity of the fluid, [Pa*s]
L : float, optional
Length the fluid flows in the packed bed [m]
Returns
-------
dP : float
Pressure drop across the bed [Pa]
Notes
-----
Developed for gas flow through pebbles in nuclear reactors.
In [2]_, stated as for a range of :math:`1 < RE_{Erg} <100,000`.
In [1]_, a limit on porosity is stated as :math:`0.36 < \epsilon < 0.42`.
Examples
--------
>>> KTA(dp=8E-4, voidage=0.4, vs=1E-3, rho=1E3, mu=1E-3)
1440.409277034248
References
----------
.. [1] KTA. KTA 3102.3 Reactor Core Design of High-Temperature Gas-Cooled
Reactors Part 3: Loss of Pressure through Friction in Pebble Bed Cores.
Germany, 1981.
.. [2] Erdim, Esra, Ömer Akgiray, and İbrahim Demir. "A Revisit of Pressure
Drop-Flow Rate Correlations for Packed Beds of Spheres." Powder
Technology 283 (October 2015): 488-504. doi:10.1016/j.powtec.2015.06.017.
'''
Re = dp*rho*vs/mu
fp = (160 + 3*(Re/(1-voidage))**0.9)*(1-voidage)**2/(voidage**3*Re)
return fp*rho*vs**2*L/dp
[docs]def Erdim_Akgiray_Demir(dp, voidage, vs, rho, mu, L=1.0):
r'''Calculates pressure drop across a packed bed of spheres using a
correlation developed in [1]_, claiming to be the best model to date.
.. math::
f_v = 160 + 2.81Re_{Erg}^{0.904}
.. math::
f_v = \frac{\Delta P d_p^2}{\mu v_s L}\frac{\epsilon^3}{(1-\epsilon)^2}
.. math::
Re_{Erg} = \frac{\rho v_s d_p}{\mu(1-\epsilon)}
Parameters
----------
dp : float
Particle diameter of spheres [m]
voidage : float
Void fraction of bed packing [-]
vs : float
Superficial velocity of the fluid (volumetric flow rate/cross-sectional
area)[m/s]
rho : float
Density of the fluid [kg/m^3]
mu : float
Viscosity of the fluid, [Pa*s]
L : float, optional
Length the fluid flows in the packed bed [m]
Returns
-------
dP : float
Pressure drop across the bed [Pa]
Notes
-----
Developed with data in the range of:
.. math::
2 < Re_{Erg} <3582\\
4 < d_t/d_p < 34.1\\
0.377 < \epsilon <0.470
Examples
--------
>>> Erdim_Akgiray_Demir(dp=8E-4, voidage=0.4, vs=1E-3, rho=1E3, mu=1E-3)
1438.2826958844414
References
----------
.. [1] Erdim, Esra, Ömer Akgiray, and İbrahim Demir. "A Revisit of Pressure
Drop-Flow Rate Correlations for Packed Beds of Spheres." Powder
Technology 283 (October 2015): 488-504. doi:10.1016/j.powtec.2015.06.017.
'''
Rem = dp*rho*vs/mu/(1-voidage)
fv = 160 + 2.81*Rem**0.904
return fv*(mu*vs*L/dp**2)*(1-voidage)**2/voidage**3
[docs]def Fahien_Schriver(dp, voidage, vs, rho, mu, L=1.0):
r'''Calculates pressure drop across a packed bed of spheres using a
correlation developed in [1]_, as shown in [2]_. Second most accurate
correlation overall in the review of [2]_.
.. math::
f_p = \left(q\frac{f_{1L}}{Re_{Erg}} + (1-q)\left(f_2 + \frac{f_{1T}}
{Re_{Erg}}\right)\right)\frac{1-\epsilon}{\epsilon^3}
.. math::
q = \exp\left(-\frac{\epsilon^2(1-\epsilon)}{12.6}Re_{Erg}\right)
.. math::
f_{1L}=\frac{136}{(1-\epsilon)^{0.38}}
.. math::
f_{1T} = \frac{29}{(1-\epsilon)^{1.45}\epsilon^2}
.. math::
f_2 = \frac{1.87\epsilon^{0.75}}{(1-\epsilon)^{0.26}}
.. math::
f_p = \frac{\Delta P d_p}{\rho v_s^2 L}
.. math::
Re_{Erg} = \frac{\rho v_s d_p}{\mu(1-\epsilon)}
Parameters
----------
dp : float
Particle diameter of spheres [m]
voidage : float
Void fraction of bed packing [-]
vs : float
Superficial velocity of the fluid (volumetric flow rate/cross-sectional
area)[m/s]
rho : float
Density of the fluid [kg/m^3]
mu : float
Viscosity of the fluid, [Pa*s]
L : float, optional
Length the fluid flows in the packed bed [m]
Returns
-------
dP : float
Pressure drop across the bed [Pa]
Notes
-----
No range of validity available.
Examples
--------
>>> Fahien_Schriver(dp=8E-4, voidage=0.4, vs=1E-3, rho=1E3, mu=1E-3)
1470.6175541844711
References
----------
.. [1] R.W. Fahien, C.B. Schriver, Paper presented at the 1961 Denver
meeting of AIChE, in: R.W. Fahien, Fundamentals of Transport Phenomena,
McGraw-Hill, New York, 1983.
.. [2] Erdim, Esra, Ömer Akgiray, and İbrahim Demir. "A Revisit of Pressure
Drop-Flow Rate Correlations for Packed Beds of Spheres." Powder
Technology 283 (October 2015): 488-504. doi:10.1016/j.powtec.2015.06.017.
'''
Rem = dp*rho*vs/mu/(1-voidage)
q = exp(-voidage**2*(1-voidage)/12.6*Rem)
f1L = 136/(1-voidage)**0.38
f1T = 29/((1-voidage)**1.45*voidage**2)
f2 = 1.87*voidage**0.75/(1-voidage)**0.26
fp = (q*f1L/Rem + (1-q)*(f2 + f1T/Rem))*(1-voidage)/voidage**3
return fp*rho*vs**2*L/dp
[docs]def Idelchik(dp, voidage, vs, rho, mu, L=1.0):
r'''Calculates pressure drop across a packed bed of spheres as in [2]_,
originally in [1]_.
.. math::
\frac{\Delta P}{L\rho v_s^2} d_p = \frac{0.765}{\epsilon^{4.2}}
\left(\frac{30}{Re_l} + \frac{3}{Re_l^{0.7}} + 0.3\right)
.. math::
Re_l = (0.45/\epsilon^{0.5})Re_{Erg}
.. math::
Re_{Erg} = \frac{\rho v_s D_p}{\mu(1-\epsilon)}
Parameters
----------
dp : float
Particle diameter of spheres [m]
voidage : float
Void fraction of bed packing [-]
vs : float
Superficial velocity of the fluid (volumetric flow rate/cross-sectional
area)[m/s]
rho : float
Density of the fluid [kg/m^3]
mu : float
Viscosity of the fluid, [Pa*s]
L : float, optional
Length the fluid flows in the packed bed [m]
Returns
-------
dP : float
Pressure drop across the bed [Pa]
Notes
-----
:math:`0.001 < Re_{Erg} <1000`
This equation is valid for void fractions between 0.3 and 0.8. Cited as
by Bernshtein.
Examples
--------
>>> Idelchik(dp=8E-4, voidage=0.4, vs=1E-3, rho=1E3, mu=1E-3)
1571.909125999067
References
----------
.. [1] Idelchik, I. E. Flow Resistance: A Design Guide for Engineers.
Hemisphere Publishing Corporation, New York, 1989.
.. [2] Allen, K. G., T. W. von Backstrom, and D. G. Kroger. "Packed Bed
Pressure Drop Dependence on Particle Shape, Size Distribution, Packing
Arrangement and Roughness." Powder Technology 246 (September 2013):
590-600. doi:10.1016/j.powtec.2013.06.022.
'''
Re = rho*vs*dp/mu/(1-voidage)
Re = (0.45/sqrt(voidage))*Re
right = 0.765/voidage**4.2*(30./Re + 3./Re**0.7 + 0.3)
left = dp/L/rho/vs**2
return right/left
[docs]def Harrison_Brunner_Hecker(dp, voidage, vs, rho, mu, L=1, Dt=None):
r'''Calculates pressure drop across a packed bed of spheres using a
correlation developed in [1]_, also shown in [2]_. Fourth most accurate
correlation overall in the review of [2]_.
Applies a wall correction if diameter of tube is provided.
.. math::
f_p = \left(119.8A + 4.63B\left(\frac{Re}{1-\epsilon}\right)^{5/6}
\right)\frac{(1-\epsilon)^2}{\epsilon^3 Re}
.. math::
A = \left(1 + \pi \frac{d_p}{6(1-\epsilon)D_t}\right)^2
.. math::
B = 1 - \frac{\pi^2 d_p}{24D_t}\left(1 - \frac{0.5d_p}{D_t}\right)
.. math::
f_p = \frac{\Delta P d_p}{\rho v_s^2 L}
.. math::
Re = \frac{\rho v_s d_p}{\mu}
Parameters
----------
dp : float
Particle diameter of spheres [m]
voidage : float
Void fraction of bed packing [-]
vs : float
Superficial velocity of the fluid (volumetric flow rate/cross-sectional
area)[m/s]
rho : float
Density of the fluid [kg/m^3]
mu : float
Viscosity of the fluid, [Pa*s]
L : float, optional
Length the fluid flows in the packed bed [m]
Dt : float, optional
Diameter of the tube, [m]
Returns
-------
dP : float
Pressure drop across the bed [Pa]
Notes
-----
Uses data from other sources only. Correlation will underestimate pressure
drop if tube diameter is not provided. Limits are specified in [1]_ as:
.. math::
0.72 < Re < 7700 \\
8.3 < d_t/d_p < 50 \\
0.33 < \epsilon < 0.88
Examples
--------
>>> Harrison_Brunner_Hecker(dp=8E-4, voidage=0.4, vs=1E-3, rho=1E3, mu=1E-3, Dt=1E-2)
1255.1625662548427
References
----------
.. [1] KTA. KTA 3102.3 Reactor Core Design of High-Temperature Gas-Cooled
Reactors Part 3: Loss of Pressure through Friction in Pebble Bed Cores.
Germany, 1981.
.. [2] Erdim, Esra, Ömer Akgiray, and İbrahim Demir. "A Revisit of Pressure
Drop-Flow Rate Correlations for Packed Beds of Spheres." Powder
Technology 283 (October 2015): 488-504. doi:10.1016/j.powtec.2015.06.017.
'''
Re = dp*rho*vs/mu
if Dt is None:
A, B = 1.0, 1.0
else:
A = (1 + pi*dp/(6*(1-voidage)*Dt))**2
B = 1 - pi**2*dp/24/Dt*(1 - dp/(2*Dt))
fp = (119.8*A + 4.63*B*(Re/(1-voidage))**(5/6.))*(1-voidage)**2/(voidage**3*Re)
return fp*rho*vs**2*L/dp
[docs]def Montillet_Akkari_Comiti(dp, voidage, vs, rho, mu, L=1, Dt=None):
r'''Calculates pressure drop across a packed bed of spheres as in [2]_,
originally in [1]_. Wall effect adjustment is used if `Dt` is provided.
.. math::
\frac{\Delta P}{L\rho V_s^2} D_p \frac{\epsilon^3}{(1-\epsilon)}
= a\left(\frac{D_c}{D_p}\right)^{0.20}
\left(\frac{1000}{Re_{p}} + \frac{60}{Re_{p}^{0.5}} + 12 \right)
.. math::
Re_{p} = \frac{\rho v_s D_p}{\mu}
Parameters
----------
dp : float
Particle diameter of spheres [m]
voidage : float
Void fraction of bed packing [-]
vs : float
Superficial velocity of the fluid (volumetric flow rate/cross-sectional
area)[m/s]
rho : float
Density of the fluid [kg/m^3]
mu : float
Viscosity of the fluid, [Pa*s]
L : float, optional
Length the fluid flows in the packed bed [m]
Dt : float, optional
Diameter of the tube, [m]
Returns
-------
dP : float
Pressure drop across bed [Pa]
Notes
-----
:math:`10 < REp <2500`
if Dc/D > 50, set to 2.2.
a = 0.061 for epsilon < 0.4, 0.050 for > 0.4.
Examples
--------
Custom example:
>>> Montillet_Akkari_Comiti(dp=0.0008, voidage=0.4, L=0.5, vs=0.00132629120, rho=1000., mu=1.00E-003)
1148.1905244077548
References
----------
.. [1] Montillet, A., E. Akkari, and J. Comiti. "About a Correlating
Equation for Predicting Pressure Drops through Packed Beds of Spheres
in a Large Range of Reynolds Numbers." Chemical Engineering and
Processing: Process Intensification 46, no. 4 (April 2007): 329-33.
doi:10.1016/j.cep.2006.07.002.
.. [2] Allen, K. G., T. W. von Backstrom, and D. G. Kroger. "Packed Bed
Pressure Drop Dependence on Particle Shape, Size Distribution, Packing
Arrangement and Roughness." Powder Technology 246 (September 2013):
590-600. doi:10.1016/j.powtec.2013.06.022.
'''
Re = rho*vs*dp/mu
if voidage < 0.4:
a = 0.061
else:
a = 0.05
if Dt is None or Dt/dp > 50:
Dterm = 2.2
else:
Dterm = (Dt/dp)**0.2
right = a*Dterm*(1000./Re + 60/sqrt(Re) + 12)
left = dp/L/rho/vs**2*voidage**3/(1-voidage)
return right/left
[docs]def Guo_Sun(dp, voidage, vs, rho, mu, Dt, L=1.0):
r'''Calculates pressure drop across a packed bed of spheres using a
correlation developed in [1]_. This is valid for highly-packed particles
at particle/tube diameter ratios between 2 and 3, where a ring packing
structure occurs. If a packing ratio is so low, it is important to use this
model because in some cases its predictions are as low as half those of
other models!
.. math::
f_v = 180 + \left(9.5374\frac{d_p}{D_t} - 2.8054\right)Re_{Erg}^{0.97}
.. math::
f_v = \frac{\Delta P d_p^2}{\mu v_s L}\frac{\epsilon^3}{(1-\epsilon)^2}
.. math::
Re_{Erg} = \frac{\rho v_s d_p}{\mu(1-\epsilon)}
Parameters
----------
dp : float
Particle diameter of spheres [m]
voidage : float
Void fraction of bed packing [-]
vs : float
Superficial velocity of the fluid (volumetric flow rate/cross-sectional
area)[m/s]
rho : float
Density of the fluid [kg/m^3]
mu : float
Viscosity of the fluid, [Pa*s]
Dt : float
Diameter of the tube, [m]
L : float, optional
Length the fluid flows in the packed bed [m]
Returns
-------
dP : float
Pressure drop across the bed [Pa]
Notes
-----
Developed with data in the range of:
.. math::
100 < Re_{m} <33000\\
2 < d_t/d_p < 3 1\\
0.476 < \epsilon <0.492
Examples
--------
>>> Guo_Sun(dp=14.2E-3, voidage=0.492, vs=0.6, rho=1E3, mu=1E-3, Dt=40.9E-3)
42019.529911473706
References
----------
.. [1] Guo, Zehua, Zhongning Sun, Nan Zhang, Ming Ding, and Jiaqing Liu.
"Pressure Drop in Slender Packed Beds with Novel Packing Arrangement."
Powder Technology 321 (November 2017): 286-92.
doi:10.1016/j.powtec.2017.08.024.
'''
# 2 < D/d < 3, particles in contact with the wall tend to form a highly ordered ring structure.
Rem = dp*rho*vs/mu/(1-voidage)
ratio = dp/Dt if Dt is not None else 3.5 # Never ran
fv = 180 + (9.5374*ratio - 2.8054)*Rem**0.97
return fv*(mu*vs*L/dp**2)*(1-voidage)**2/voidage**3
# Format: Nice name : (formula, uses_dt)
packed_beds_correlations = {
'Ergun': (Ergun, False),
'Tallmadge': (Tallmadge, False),
'Kuo & Nydegger': (Kuo_Nydegger, False),
'Jones & Krier': (Jones_Krier, False),
'Carman': (Carman, False),
'Hicks': (Hicks, False),
'Brauer': (Brauer, False),
'KTA': (KTA, False),
'Fahien & Schriver': (Fahien_Schriver, False),
'Idelchik': (Idelchik, False),
'Erdim, Akgiray & Demir': (Erdim_Akgiray_Demir, False),
'Harrison, Brunner & Hecker': (Harrison_Brunner_Hecker, True),
'Montillet, Akkari & Comiti': (Montillet_Akkari_Comiti, True),
'Guo, Sun, Zhang, Ding & Liu': (Guo_Sun, True)
}
[docs]def dP_packed_bed_methods(dp, voidage, vs, rho, mu, L=1.0, Dt=None, check_ranges=False):
r'''This function handles determining which pressure drop in a packed bed
correlation are suitable for the provided inputs.
Preferred correlations are 'Erdim, Akgiray & Demir' when tube
diameter is not provided, and 'Harrison, Brunner & Hecker' when tube
diameter is provided.
Examples
--------
>>> dP_packed_bed_methods(dp=8E-4, voidage=0.4, vs=1E-3, rho=1E3, mu=1E-3, L=1.0)[0]
'Erdim, Akgiray & Demir'
>>> dP_packed_bed_methods(dp=8E-4, voidage=0.4, vs=1E-3, rho=1E3, mu=1E-3, L=1, Dt=1e-2)[0]
'Harrison, Brunner & Hecker'
Parameters
----------
dp : float
Particle diameter of spheres [m]
voidage : float
Void fraction of bed packing [-]
vs : float
Superficial velocity of the fluid (volumetric flow rate/cross-sectional
area) [m/s]
rho : float
Density of the fluid [kg/m^3]
mu : float
Viscosity of the fluid, [Pa*s]
L : float, optional
Length the fluid flows in the packed bed [m]
Dt : float, optional
Diameter of the tube, [m]
check_ranges : bool, optional
Added for Future use only
Returns
-------
methods : list
List of methods which can be used to calculate `dP` with the given inputs
'''
methods = []
if (dp is not None and voidage is not None and vs is not None
and rho is not None and mu is not None and L is not None):
if Dt is not None:
methods = ['Harrison, Brunner & Hecker', 'Montillet, Akkari & Comiti', 'Guo, Sun, Zhang, Ding & Liu']
methods.extend(['Erdim, Akgiray & Demir', 'Idelchik', 'Fahien & Schriver',
'KTA', 'Brauer', 'Hicks', 'Carman', 'Jones & Krier', 'Kuo & Nydegger',
'Tallmadge', 'Ergun'])
return methods
[docs]def dP_packed_bed(dp, voidage, vs, rho, mu, L=1, Dt=None, sphericity=None,
Method=None):
r'''This function handles choosing which pressure drop in a packed bed
correlation is used. Automatically select which correlation
to use if none is provided. Returns None if insufficient information is
provided.
Preferred correlations are 'Erdim, Akgiray & Demir' when tube
diameter is not provided, and 'Harrison, Brunner & Hecker' when tube
diameter is provided. If you are using a particles in a narrow tube
between 2 and 3 particle diameters, expect higher than normal voidages
(0.4-0.5) and used the method 'Guo, Sun, Zhang, Ding & Liu'.
Examples
--------
>>> dP_packed_bed(dp=8E-4, voidage=0.4, vs=1E-3, rho=1E3, mu=1E-3)
1438.2826958844414
>>> dP_packed_bed(dp=8E-4, voidage=0.4, vs=1E-3, rho=1E3, mu=1E-3, Dt=0.01)
1255.1625662548427
>>> dP_packed_bed(dp=0.05, voidage=0.492, vs=0.1, rho=1E3, mu=1E-3, Dt=0.015, Method='Guo, Sun, Zhang, Ding & Liu')
18782.499710673364
Parameters
----------
dp : float
Particle diameter of spheres [m]
voidage : float
Void fraction of bed packing [-]
vs : float
Superficial velocity of the fluid (volumetric flow rate/cross-sectional
area) [m/s]
rho : float
Density of the fluid [kg/m^3]
mu : float
Viscosity of the fluid, [Pa*s]
L : float, optional
Length the fluid flows in the packed bed [m]
Dt : float, optional
Diameter of the tube, [m]
sphericity : float, optional
Sphericity of the particles [-]
Returns
-------
dP : float
Pressure drop across the bed [Pa]
Other Parameters
----------------
Method : string, optional
A string of the function name to use, as in the dictionary
packed_beds_correlations
'''
if Method is None:
Method2 = 'Harrison, Brunner & Hecker' if Dt is not None else 'Erdim, Akgiray & Demir'
else:
Method2 = Method
if dp is not None and sphericity is not None:
dp = dp*sphericity
if Method2 == "Ergun":
return Ergun(dp=dp, voidage=voidage, vs=vs, rho=rho, mu=mu, L=L)
elif Method2 == "Tallmadge":
return Tallmadge(dp=dp, voidage=voidage, vs=vs, rho=rho, mu=mu, L=L)
elif Method2 == "Kuo & Nydegger":
return Kuo_Nydegger(dp=dp, voidage=voidage, vs=vs, rho=rho, mu=mu, L=L)
elif Method2 == "Jones & Krier":
return Jones_Krier(dp=dp, voidage=voidage, vs=vs, rho=rho, mu=mu, L=L)
elif Method2 == "Carman":
return Carman(dp=dp, voidage=voidage, vs=vs, rho=rho, mu=mu, L=L)
elif Method2 == "Hicks":
return Hicks(dp=dp, voidage=voidage, vs=vs, rho=rho, mu=mu, L=L)
elif Method2 == "Brauer":
return Brauer(dp=dp, voidage=voidage, vs=vs, rho=rho, mu=mu, L=L)
elif Method2 == "KTA":
return KTA(dp=dp, voidage=voidage, vs=vs, rho=rho, mu=mu, L=L)
elif Method2 == "Erdim, Akgiray & Demir":
return Erdim_Akgiray_Demir(dp=dp, voidage=voidage, vs=vs, rho=rho, mu=mu, L=L)
elif Method2 == "Fahien & Schriver":
return Fahien_Schriver(dp=dp, voidage=voidage, vs=vs, rho=rho, mu=mu, L=L)
elif Method2 == "Idelchik":
return Idelchik(dp=dp, voidage=voidage, vs=vs, rho=rho, mu=mu, L=L)
elif Method2 == "Harrison, Brunner & Hecker":
return Harrison_Brunner_Hecker(dp=dp, voidage=voidage, vs=vs, rho=rho, mu=mu, L=L, Dt=Dt)
elif Method2 == "Montillet, Akkari & Comiti":
return Montillet_Akkari_Comiti(dp=dp, voidage=voidage, vs=vs, rho=rho, mu=mu, L=L, Dt=Dt)
elif Method2 == "Guo, Sun, Zhang, Ding & Liu":
return Guo_Sun(dp=dp, voidage=voidage, vs=vs, rho=rho, mu=mu, L=L, Dt=Dt)
else:
raise ValueError('Unrecognized method')
#import matplotlib.pyplot as plt
#import numpy as np
#
#voidage = 0.4
#rho = 1000.
#mu = 1E-3
#vs = 0.1
#dp = 0.0001
#methods = dP_packed_bed(dp, voidage, vs, rho, mu, L=1, AvailableMethods=True)
#dps = np.logspace(-4, -1, 100)
#
#for method in methods:
# dPs = [dP_packed_bed(dp, voidage, vs, rho, mu, Method=method) for dp in dps]
# plt.semilogx(dps, dPs, label=method)
#plt.legend()
#plt.show()
### Voidage correlations
[docs]def voidage_Benyahia_Oneil(Dpe, Dt, sphericity):
r'''Calculates voidage of a bed of arbitrarily shaped uniform particles
packed into a bed or tube of diameter `Dt`, with equivalent sphere diameter
`Dp`. Shown in [1]_, and cited by various authors. Correlations exist
also for spheres, solid cylinders, hollow cylinders, and 4-hole cylinders.
Based on a series of physical measurements.
.. math::
\epsilon = 0.1504 + \frac{0.2024}{\phi} + \frac{1.0814}
{\left(\frac{d_{t}}{d_{pe}}+0.1226\right)^2}
Parameters
----------
Dpe : float
Equivalent spherical particle diameter (diameter of a sphere with the
same volume), [m]
Dt : float
Diameter of the tube, [m]
sphericity : float
Sphericity of particles in bed []
Returns
-------
voidage : float
Void fraction of bed packing []
Notes
-----
Average error of 5.2%; valid 1.5 < dtube/dp < 50 and 0.42 < sphericity < 1
Examples
--------
>>> voidage_Benyahia_Oneil(Dpe=1E-3, Dt=1E-2, sphericity=.8)
0.41395363849210065
References
----------
.. [1] Benyahia, F., and K. E. O`Neill. "Enhanced Voidage Correlations for
Packed Beds of Various Particle Shapes and Sizes." Particulate Science
and Technology 23, no. 2 (April 1, 2005): 169-77.
doi:10.1080/02726350590922242.
'''
return 0.1504 + 0.2024/sphericity + 1.0814/(Dt/Dpe + 0.1226)**2
[docs]def voidage_Benyahia_Oneil_spherical(Dp, Dt):
r'''Calculates voidage of a bed of spheres
packed into a bed or tube of diameter `Dt`, with sphere diameters
`Dp`. Shown in [1]_, and cited by various authors. Correlations exist
also for solid cylinders, hollow cylinders, and 4-hole cylinders.
Based on a series of physical measurements.
.. math::
\epsilon = 0.390+\frac{1.740}{\left(\frac{d_{cyl}}{d_p}+1.140\right)^2}
Parameters
----------
Dp : float
Spherical particle diameter, [m]
Dt : float
Diameter of the tube, [m]
Returns
-------
voidage : float
Void fraction of bed packing []
Notes
-----
Average error 1.5%, 1.5 < ratio < 50.
Examples
--------
>>> voidage_Benyahia_Oneil_spherical(Dp=.001, Dt=.05)
0.3906653157443224
References
----------
.. [1] Benyahia, F., and K. E. O`Neill. "Enhanced Voidage Correlations for
Packed Beds of Various Particle Shapes and Sizes." Particulate Science
and Technology 23, no. 2 (April 1, 2005): 169-77.
doi:10.1080/02726350590922242.
'''
return 0.390 + 1.740/(Dt/Dp + 1.140)**2
[docs]def voidage_Benyahia_Oneil_cylindrical(Dpe, Dt, sphericity):
r'''Calculates voidage of a bed of cylindrical uniform particles
packed into a bed or tube of diameter `Dt`, with equivalent sphere diameter
`Dpe`. Shown in [1]_, and cited by various authors. Correlations exist
also for spheres, solid cylinders, hollow cylinders, and 4-hole cylinders.
Based on a series of physical measurements.
.. math::
\epsilon = 0.373+\frac{1.703}{\left(\frac{d_{cyl}}{d_p}+0.611\right)^2}
Parameters
----------
Dpe : float
Equivalent spherical particle diameter (diameter of a sphere with the
same volume), [m]
Dt : float
Diameter of the tube, [m]
sphericity : float
Sphericity of particles in bed []
Returns
-------
voidage : float
Void fraction of bed packing []
Notes
-----
Average error 1.6%; 1.7 < ratio < 26.3.
Examples
--------
>>> voidage_Benyahia_Oneil_cylindrical(Dpe=.01, Dt=.1, sphericity=.6)
0.38812523109607894
References
----------
.. [1] Benyahia, F., and K. E. O`Neill. "Enhanced Voidage Correlations for
Packed Beds of Various Particle Shapes and Sizes." Particulate Science
and Technology 23, no. 2 (April 1, 2005): 169-77.
doi:10.1080/02726350590922242.
'''
return 0.373 + 1.703/(Dt/Dpe + 0.611)**2