Source code for fluids.core

"""Chemical Engineering Design Library (ChEDL). Utilities for process modeling.
Copyright (C) 2016, 2017, 2018, 2019, 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 basic fluid mechanics and engineering calculations which
have been found useful by the author. The main functionality is calculating
dimensionless numbers, interconverting different forms of loss coefficients,
and converting temperature units.

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:

Dimensionless Numbers
---------------------
.. autofunction:: Archimedes
.. autofunction:: Bejan_L
.. autofunction:: Bejan_p
.. autofunction:: Biot
.. autofunction:: Boiling
.. autofunction:: Bond
.. autofunction:: Capillary
.. autofunction:: Cavitation
.. autofunction:: Confinement
.. autofunction:: Dean
.. autofunction:: Drag
.. autofunction:: Eckert
.. autofunction:: Euler
.. autofunction:: Fourier_heat
.. autofunction:: Fourier_mass
.. autofunction:: Froude
.. autofunction:: Froude_densimetric
.. autofunction:: Graetz_heat
.. autofunction:: Grashof
.. autofunction:: Hagen
.. autofunction:: Jakob
.. autofunction:: Knudsen
.. autofunction:: Lewis
.. autofunction:: Mach
.. autofunction:: Morton
.. autofunction:: Nusselt
.. autofunction:: Ohnesorge
.. autofunction:: Peclet_heat
.. autofunction:: Peclet_mass
.. autofunction:: Power_number
.. autofunction:: Prandtl
.. autofunction:: Rayleigh
.. autofunction:: relative_roughness
.. autofunction:: Reynolds
.. autofunction:: Schmidt
.. autofunction:: Sherwood
.. autofunction:: Stanton
.. autofunction:: Stokes_number
.. autofunction:: Strouhal
.. autofunction:: Suratman
.. autofunction:: Weber

Loss Coefficient Converters
---------------------------
.. autofunction:: K_from_f
.. autofunction:: K_from_L_equiv
.. autofunction:: L_equiv_from_K
.. autofunction:: L_from_K
.. autofunction:: dP_from_K
.. autofunction:: head_from_K
.. autofunction:: head_from_P
.. autofunction:: f_from_K
.. autofunction:: P_from_head

Temperature Conversions
-----------------------
These functions used to be part of SciPy, but were removed in favor
of a slower function `convert_temperature` which removes code duplication but
doesn't have the same convenience or easy to remember signature.

.. autofunction:: C2K
.. autofunction:: K2C
.. autofunction:: F2C
.. autofunction:: C2F
.. autofunction:: F2K
.. autofunction:: K2F
.. autofunction:: C2R
.. autofunction:: K2R
.. autofunction:: F2R
.. autofunction:: R2C
.. autofunction:: R2K
.. autofunction:: R2F

Miscellaneous Functions
-----------------------
.. autofunction:: thermal_diffusivity
.. autofunction:: c_ideal_gas
.. autofunction:: nu_mu_converter
.. autofunction:: gravity

"""
import sys
from math import pi, sin, sqrt

from fluids.constants import R, g

"""
Additional copyright:
The functions C2K, K2C, F2C, C2F, F2K, K2F, C2R, K2R, F2R, R2C, R2K, R2F
were deprecated from scipy but are still wanted by fluids
Taken from scipy/constants/constants.py as in commit
https://github.com/scipy/scipy/commit/4b7d325cd50e8828b06d628e69426a18283dc5b5
Also from https://github.com/scipy/scipy/pull/5292
by Gillu13  (Gilles Aouizerate)
They are copyright individual contributors to SciPy, under the BSD 3-Clause
The license of scipy is as follows:

    Copyright (c) 2001-2002 Enthought, Inc.  2003-2019, SciPy Developers.
All rights reserved.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:

1. Redistributions of source code must retain the above copyright
   notice, this list of conditions and the following disclaimer.

2. Redistributions in binary form must reproduce the above
   copyright notice, this list of conditions and the following
   disclaimer in the documentation and/or other materials provided
   with the distribution.

3. Neither the name of the copyright holder nor the names of its
   contributors may be used to endorse or promote products derived
   from this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
"""


__all__ = ['Reynolds', 'Prandtl', 'Grashof', 'Nusselt', 'Sherwood', 'Rayleigh',
'Schmidt', 'Peclet_heat', 'Peclet_mass', 'Fourier_heat', 'Fourier_mass',
'Graetz_heat', 'Lewis', 'Weber', 'Mach', 'Knudsen', 'Bond', 'Dean', 'Morton',
'Froude', 'Froude_densimetric', 'Strouhal', 'Biot', 'Stanton', 'Euler', 'Cavitation', 'Eckert',
'Jakob', 'Power_number', 'Stokes_number', 'Drag', 'Capillary', 'Bejan_L', 'Bejan_p', 'Boiling',
'Confinement', 'Archimedes', 'Ohnesorge', 'Suratman', 'Hagen', 'thermal_diffusivity', 'c_ideal_gas',
'relative_roughness', 'nu_mu_converter', 'gravity',
'K_from_f', 'K_from_L_equiv', 'L_equiv_from_K', 'L_from_K', 'dP_from_K',
'head_from_K', 'head_from_P', 'f_from_K',
'P_from_head', 'Eotvos',
'C2K', 'K2C', 'F2C', 'C2F', 'F2K', 'K2F', 'C2R', 'K2R', 'F2R', 'R2C', 'R2K', 'R2F',
'PY3',
]

version_components = sys.version.split('.')
PY_MAJOR, PY_MINOR = int(version_components[0]), int(version_components[1])
PY3 = PY_MAJOR >= 3


### Not quite dimensionless groups
[docs]def thermal_diffusivity(k, rho, Cp): r'''Calculates thermal diffusivity or `alpha` for a fluid with the given parameters. .. math:: \alpha = \frac{k}{\rho Cp} Parameters ---------- k : float Thermal conductivity, [W/m/K] rho : float Density, [kg/m^3] Cp : float Heat capacity, [J/kg/K] Returns ------- alpha : float Thermal diffusivity, [m^2/s] Notes ----- Examples -------- >>> thermal_diffusivity(k=0.02, rho=1., Cp=1000.) 2e-05 References ---------- .. [1] Blevins, Robert D. Applied Fluid Dynamics Handbook. New York, N.Y.: Van Nostrand Reinhold Co., 1984. ''' return k/(rho*Cp)
### Ideal gas fluid properties
[docs]def c_ideal_gas(T, k, MW): r'''Calculates speed of sound `c` in an ideal gas at temperature T. .. math:: c = \sqrt{kR_{specific}T} Parameters ---------- T : float Temperature of fluid, [K] k : float Isentropic exponent of fluid, [-] MW : float Molecular weight of fluid, [g/mol] Returns ------- c : float Speed of sound in fluid, [m/s] Notes ----- Used in compressible flow calculations. Note that the gas constant used is the specific gas constant: .. math:: R_{specific} = R\frac{1000}{MW} Examples -------- >>> c_ideal_gas(T=303, k=1.4, MW=28.96) 348.9820953185441 References ---------- .. [1] Green, Don, and Robert Perry. Perry's Chemical Engineers' Handbook, Eighth Edition. McGraw-Hill Professional, 2007. .. [2] Cengel, Yunus, and John Cimbala. Fluid Mechanics: Fundamentals and Applications. Boston: McGraw Hill Higher Education, 2006. ''' Rspecific = R*1000./MW return sqrt(k*Rspecific*T)
### Dimensionless groups with documentation
[docs]def Reynolds(V, D, rho=None, mu=None, nu=None): r'''Calculates Reynolds number or `Re` for a fluid with the given properties for the specified velocity and diameter. .. math:: Re = \frac{D \cdot V}{\nu} = \frac{\rho V D}{\mu} Inputs either of any of the following sets: * V, D, density `rho` and dynamic viscosity `mu` * V, D, and kinematic viscosity `nu` Parameters ---------- V : float Velocity [m/s] D : float Diameter [m] rho : float, optional Density, [kg/m^3] mu : float, optional Dynamic viscosity, [Pa*s] nu : float, optional Kinematic viscosity, [m^2/s] Returns ------- Re : float Reynolds number [] Notes ----- .. math:: Re = \frac{\text{Momentum}}{\text{Viscosity}} An error is raised if none of the required input sets are provided. Examples -------- >>> Reynolds(2.5, 0.25, 1.1613, 1.9E-5) 38200.65789473684 >>> Reynolds(2.5, 0.25, nu=1.636e-05) 38202.93398533008 References ---------- .. [1] Green, Don, and Robert Perry. Perry's Chemical Engineers' Handbook, Eighth Edition. McGraw-Hill Professional, 2007. .. [2] Cengel, Yunus, and John Cimbala. Fluid Mechanics: Fundamentals and Applications. Boston: McGraw Hill Higher Education, 2006. ''' if rho is not None and mu is not None: nu = mu/rho elif nu is None: raise ValueError('Either density and viscosity, or dynamic viscosity, \ is needed') return V*D/nu
[docs]def Peclet_heat(V, L, rho=None, Cp=None, k=None, alpha=None): r'''Calculates heat transfer Peclet number or `Pe` for a specified velocity `V`, characteristic length `L`, and specified properties for the given fluid. .. math:: Pe = \frac{VL\rho C_p}{k} = \frac{LV}{\alpha} Inputs either of any of the following sets: * V, L, density `rho`, heat capacity `Cp`, and thermal conductivity `k` * V, L, and thermal diffusivity `alpha` Parameters ---------- V : float Velocity [m/s] L : float Characteristic length [m] rho : float, optional Density, [kg/m^3] Cp : float, optional Heat capacity, [J/kg/K] k : float, optional Thermal conductivity, [W/m/K] alpha : float, optional Thermal diffusivity, [m^2/s] Returns ------- Pe : float Peclet number (heat) [] Notes ----- .. math:: Pe = \frac{\text{Bulk heat transfer}}{\text{Conduction heat transfer}} An error is raised if none of the required input sets are provided. Examples -------- >>> Peclet_heat(1.5, 2, 1000., 4000., 0.6) 20000000.0 >>> Peclet_heat(1.5, 2, alpha=1E-7) 30000000.0 References ---------- .. [1] Green, Don, and Robert Perry. Perry's Chemical Engineers' Handbook, Eighth Edition. McGraw-Hill Professional, 2007. .. [2] Cengel, Yunus, and John Cimbala. Fluid Mechanics: Fundamentals and Applications. Boston: McGraw Hill Higher Education, 2006. ''' if rho is not None and Cp is not None and k is not None: alpha = k/(rho*Cp) elif alpha is None: raise ValueError('Either heat capacity and thermal conductivity and\ density, or thermal diffusivity is needed') return V*L/alpha
[docs]def Peclet_mass(V, L, D): r'''Calculates mass transfer Peclet number or `Pe` for a specified velocity `V`, characteristic length `L`, and diffusion coefficient `D`. .. math:: Pe = \frac{L V}{D} Parameters ---------- V : float Velocity [m/s] L : float Characteristic length [m] D : float Diffusivity of a species, [m^2/s] Returns ------- Pe : float Peclet number (mass) [] Notes ----- .. math:: Pe = \frac{\text{Advective transport rate}}{\text{Diffusive transport rate}} Examples -------- >>> Peclet_mass(1.5, 2, 1E-9) 3000000000.0 References ---------- .. [1] Green, Don, and Robert Perry. Perry's Chemical Engineers' Handbook, Eighth Edition. McGraw-Hill Professional, 2007. ''' return V*L/D
[docs]def Fourier_heat(t, L, rho=None, Cp=None, k=None, alpha=None): r'''Calculates heat transfer Fourier number or `Fo` for a specified time `t`, characteristic length `L`, and specified properties for the given fluid. .. math:: Fo = \frac{k t}{C_p \rho L^2} = \frac{\alpha t}{L^2} Inputs either of any of the following sets: * t, L, density `rho`, heat capacity `Cp`, and thermal conductivity `k` * t, L, and thermal diffusivity `alpha` Parameters ---------- t : float time [s] L : float Characteristic length [m] rho : float, optional Density, [kg/m^3] Cp : float, optional Heat capacity, [J/kg/K] k : float, optional Thermal conductivity, [W/m/K] alpha : float, optional Thermal diffusivity, [m^2/s] Returns ------- Fo : float Fourier number (heat) [] Notes ----- .. math:: Fo = \frac{\text{Heat conduction rate}} {\text{Rate of thermal energy storage in a solid}} An error is raised if none of the required input sets are provided. Examples -------- >>> Fourier_heat(t=1.5, L=2, rho=1000., Cp=4000., k=0.6) 5.625e-08 >>> Fourier_heat(1.5, 2, alpha=1E-7) 3.75e-08 References ---------- .. [1] Green, Don, and Robert Perry. Perry's Chemical Engineers' Handbook, Eighth Edition. McGraw-Hill Professional, 2007. .. [2] Cengel, Yunus, and John Cimbala. Fluid Mechanics: Fundamentals and Applications. Boston: McGraw Hill Higher Education, 2006. ''' if rho is not None and Cp is not None and k is not None: alpha = k/(rho*Cp) elif alpha is None: raise ValueError('Either heat capacity and thermal conductivity and \ density, or thermal diffusivity is needed') return t*alpha/(L*L)
[docs]def Fourier_mass(t, L, D): r'''Calculates mass transfer Fourier number or `Fo` for a specified time `t`, characteristic length `L`, and diffusion coefficient `D`. .. math:: Fo = \frac{D t}{L^2} Parameters ---------- t : float time [s] L : float Characteristic length [m] D : float Diffusivity of a species, [m^2/s] Returns ------- Fo : float Fourier number (mass) [] Notes ----- .. math:: Fo = \frac{\text{Diffusive transport rate}}{\text{Storage rate}} Examples -------- >>> Fourier_mass(t=1.5, L=2, D=1E-9) 3.7500000000000005e-10 References ---------- .. [1] Green, Don, and Robert Perry. Perry's Chemical Engineers' Handbook, Eighth Edition. McGraw-Hill Professional, 2007. ''' return t*D/(L*L)
[docs]def Graetz_heat(V, D, x, rho=None, Cp=None, k=None, alpha=None): r'''Calculates Graetz number or `Gz` for a specified velocity `V`, diameter `D`, axial distance `x`, and specified properties for the given fluid. .. math:: Gz = \frac{VD^2\cdot C_p \rho}{x\cdot k} = \frac{VD^2}{x \alpha} Inputs either of any of the following sets: * V, D, x, density `rho`, heat capacity `Cp`, and thermal conductivity `k` * V, D, x, and thermal diffusivity `alpha` Parameters ---------- V : float Velocity, [m/s] D : float Diameter [m] x : float Axial distance [m] rho : float, optional Density, [kg/m^3] Cp : float, optional Heat capacity, [J/kg/K] k : float, optional Thermal conductivity, [W/m/K] alpha : float, optional Thermal diffusivity, [m^2/s] Returns ------- Gz : float Graetz number [] Notes ----- .. math:: Gz = \frac{\text{Time for radial heat diffusion in a fluid by conduction}} {\text{Time taken by fluid to reach distance x}} .. math:: Gz = \frac{D}{x}RePr An error is raised if none of the required input sets are provided. Examples -------- >>> Graetz_heat(1.5, 0.25, 5, 800., 2200., 0.6) 55000.0 >>> Graetz_heat(1.5, 0.25, 5, alpha=1E-7) 187500.0 References ---------- .. [1] Bergman, Theodore L., Adrienne S. Lavine, Frank P. Incropera, and David P. DeWitt. Introduction to Heat Transfer. 6E. Hoboken, NJ: Wiley, 2011. ''' if rho is not None and Cp is not None and k is not None: alpha = k/(rho*Cp) elif alpha is None: raise ValueError('Either heat capacity and thermal conductivity and\ density, or thermal diffusivity is needed') return V*D*D/(x*alpha)
[docs]def Schmidt(D, mu=None, nu=None, rho=None): r'''Calculates Schmidt number or `Sc` for a fluid with the given parameters. .. math:: Sc = \frac{\mu}{D\rho} = \frac{\nu}{D} Inputs can be any of the following sets: * Diffusivity, dynamic viscosity, and density * Diffusivity and kinematic viscosity Parameters ---------- D : float Diffusivity of a species, [m^2/s] mu : float, optional Dynamic viscosity, [Pa*s] nu : float, optional Kinematic viscosity, [m^2/s] rho : float, optional Density, [kg/m^3] Returns ------- Sc : float Schmidt number [] Notes ----- .. math:: Sc =\frac{\text{kinematic viscosity}}{\text{molecular diffusivity}} = \frac{\text{viscous diffusivity}}{\text{species diffusivity}} An error is raised if none of the required input sets are provided. Examples -------- >>> Schmidt(D=2E-6, mu=4.61E-6, rho=800) 0.00288125 >>> Schmidt(D=1E-9, nu=6E-7) 599.9999999999999 References ---------- .. [1] Green, Don, and Robert Perry. Perry's Chemical Engineers' Handbook, Eighth Edition. McGraw-Hill Professional, 2007. .. [2] Cengel, Yunus, and John Cimbala. Fluid Mechanics: Fundamentals and Applications. Boston: McGraw Hill Higher Education, 2006. ''' if rho is not None and mu is not None: return mu/(rho*D) elif nu is not None: return nu/D else: raise ValueError('Insufficient information provided for Schmidt number calculation')
[docs]def Lewis(D=None, alpha=None, Cp=None, k=None, rho=None): r'''Calculates Lewis number or `Le` for a fluid with the given parameters. .. math:: Le = \frac{k}{\rho C_p D} = \frac{\alpha}{D} Inputs can be either of the following sets: * Diffusivity and Thermal diffusivity * Diffusivity, heat capacity, thermal conductivity, and density Parameters ---------- D : float Diffusivity of a species, [m^2/s] alpha : float, optional Thermal diffusivity, [m^2/s] Cp : float, optional Heat capacity, [J/kg/K] k : float, optional Thermal conductivity, [W/m/K] rho : float, optional Density, [kg/m^3] Returns ------- Le : float Lewis number [] Notes ----- .. math:: Le=\frac{\text{Thermal diffusivity}}{\text{Mass diffusivity}} = \frac{Sc}{Pr} An error is raised if none of the required input sets are provided. Examples -------- >>> Lewis(D=22.6E-6, alpha=19.1E-6) 0.8451327433628318 >>> Lewis(D=22.6E-6, rho=800., k=.2, Cp=2200) 0.00502815768302494 References ---------- .. [1] Green, Don, and Robert Perry. Perry's Chemical Engineers' Handbook, Eighth Edition. McGraw-Hill Professional, 2007. .. [2] Cengel, Yunus, and John Cimbala. Fluid Mechanics: Fundamentals and Applications. Boston: McGraw Hill Higher Education, 2006. .. [3] Gesellschaft, V. D. I., ed. VDI Heat Atlas. 2nd edition. Berlin; New York:: Springer, 2010. ''' if k is not None and Cp is not None and rho is not None: alpha = k/(rho*Cp) elif alpha is None: raise ValueError('Insufficient information provided for Le calculation') return alpha/D
[docs]def Weber(V, L, rho, sigma): r'''Calculates Weber number, `We`, for a fluid with the given density, surface tension, velocity, and geometric parameter (usually diameter of bubble). .. math:: We = \frac{V^2 L\rho}{\sigma} Parameters ---------- V : float Velocity of fluid, [m/s] L : float Characteristic length, typically bubble diameter [m] rho : float Density of fluid, [kg/m^3] sigma : float Surface tension, [N/m] Returns ------- We : float Weber number [] Notes ----- Used in bubble calculations. .. math:: We = \frac{\text{inertial force}}{\text{surface tension force}} Examples -------- >>> Weber(V=0.18, L=0.001, rho=900., sigma=0.01) 2.916 References ---------- .. [1] Green, Don, and Robert Perry. Perry's Chemical Engineers' Handbook, Eighth Edition. McGraw-Hill Professional, 2007. .. [2] Cengel, Yunus, and John Cimbala. Fluid Mechanics: Fundamentals and Applications. Boston: McGraw Hill Higher Education, 2006. .. [3] Gesellschaft, V. D. I., ed. VDI Heat Atlas. 2nd edition. Berlin; New York:: Springer, 2010. ''' return V*V*L*rho/sigma
[docs]def Mach(V, c): r'''Calculates Mach number or `Ma` for a fluid of velocity `V` with speed of sound `c`. .. math:: Ma = \frac{V}{c} Parameters ---------- V : float Velocity of fluid, [m/s] c : float Speed of sound in fluid, [m/s] Returns ------- Ma : float Mach number [] Notes ----- Used in compressible flow calculations. .. math:: Ma = \frac{\text{fluid velocity}}{\text{sonic velocity}} Examples -------- >>> Mach(33., 330) 0.1 References ---------- .. [1] Green, Don, and Robert Perry. Perry's Chemical Engineers' Handbook, Eighth Edition. McGraw-Hill Professional, 2007. .. [2] Cengel, Yunus, and John Cimbala. Fluid Mechanics: Fundamentals and Applications. Boston: McGraw Hill Higher Education, 2006. ''' return V/c
[docs]def Confinement(D, rhol, rhog, sigma, g=g): r'''Calculates Confinement number or `Co` for a fluid in a channel of diameter `D` with liquid and gas densities `rhol` and `rhog` and surface tension `sigma`, under the influence of gravitational force `g`. .. math:: \text{Co}=\frac{\left[\frac{\sigma}{g(\rho_l-\rho_g)}\right]^{0.5}}{D} Parameters ---------- D : float Diameter of channel, [m] rhol : float Density of liquid phase, [kg/m^3] rhog : float Density of gas phase, [kg/m^3] sigma : float Surface tension between liquid-gas phase, [N/m] g : float, optional Acceleration due to gravity, [m/s^2] Returns ------- Co : float Confinement number [-] Notes ----- Used in two-phase pressure drop and heat transfer correlations. First used in [1]_ according to [3]_. .. math:: \text{Co} = \frac{\frac{\text{surface tension force}} {\text{buoyancy force}}}{\text{Channel area}} Examples -------- >>> Confinement(0.001, 1077, 76.5, 4.27E-3) 0.6596978265315191 References ---------- .. [1] Cornwell, Keith, and Peter A. Kew. "Boiling in Small Parallel Channels." In Energy Efficiency in Process Technology, edited by Dr P. A. Pilavachi, 624-638. Springer Netherlands, 1993. doi:10.1007/978-94-011-1454-7_56. .. [2] Kandlikar, Satish G. Heat Transfer and Fluid Flow in Minichannels and Microchannels. Elsevier, 2006. .. [3] Tran, T. N, M. -C Chyu, M. W Wambsganss, and D. M France. Two-Phase Pressure Drop of Refrigerants during Flow Boiling in Small Channels: An Experimental Investigation and Correlation Development." International Journal of Multiphase Flow 26, no. 11 (November 1, 2000): 1739-54. doi:10.1016/S0301-9322(99)00119-6. ''' return sqrt(sigma/(g*(rhol-rhog)))/D
[docs]def Morton(rhol, rhog, mul, sigma, g=g): r'''Calculates Morton number or `Mo` for a liquid and vapor with the specified properties, under the influence of gravitational force `g`. .. math:: Mo = \frac{g \mu_l^4(\rho_l - \rho_g)}{\rho_l^2 \sigma^3} Parameters ---------- rhol : float Density of liquid phase, [kg/m^3] rhog : float Density of gas phase, [kg/m^3] mul : float Viscosity of liquid phase, [Pa*s] sigma : float Surface tension between liquid-gas phase, [N/m] g : float, optional Acceleration due to gravity, [m/s^2] Returns ------- Mo : float Morton number, [-] Notes ----- Used in modeling bubbles in liquid. Examples -------- >>> Morton(1077.0, 76.5, 4.27E-3, 0.023) 2.311183104430743e-07 References ---------- .. [1] Kunes, Josef. Dimensionless Physical Quantities in Science and Engineering. Elsevier, 2012. .. [2] Yan, Xiaokang, Kaixin Zheng, Yan Jia, Zhenyong Miao, Lijun Wang, Yijun Cao, and Jiongtian Liu. “Drag Coefficient Prediction of a Single Bubble Rising in Liquids.” Industrial & Engineering Chemistry Research, April 2, 2018. https://doi.org/10.1021/acs.iecr.7b04743. ''' mul2 = mul*mul return g*mul2*mul2*(rhol - rhog)/(rhol*rhol*sigma*sigma*sigma)
[docs]def Knudsen(path, L): r'''Calculates Knudsen number or `Kn` for a fluid with mean free path `path` and for a characteristic length `L`. .. math:: Kn = \frac{\lambda}{L} Parameters ---------- path : float Mean free path between molecular collisions, [m] L : float Characteristic length, [m] Returns ------- Kn : float Knudsen number [] Notes ----- Used in mass transfer calculations. .. math:: Kn = \frac{\text{Mean free path length}}{\text{Characteristic length}} Examples -------- >>> Knudsen(1e-10, .001) 1e-07 References ---------- .. [1] Green, Don, and Robert Perry. Perry's Chemical Engineers' Handbook, Eighth Edition. McGraw-Hill Professional, 2007. .. [2] Cengel, Yunus, and John Cimbala. Fluid Mechanics: Fundamentals and Applications. Boston: McGraw Hill Higher Education, 2006. ''' return path/L
[docs]def Prandtl(Cp=None, k=None, mu=None, nu=None, rho=None, alpha=None): r'''Calculates Prandtl number or `Pr` for a fluid with the given parameters. .. math:: Pr = \frac{C_p \mu}{k} = \frac{\nu}{\alpha} = \frac{C_p \rho \nu}{k} Inputs can be any of the following sets: * Heat capacity, dynamic viscosity, and thermal conductivity * Thermal diffusivity and kinematic viscosity * Heat capacity, kinematic viscosity, thermal conductivity, and density Parameters ---------- Cp : float Heat capacity, [J/kg/K] k : float Thermal conductivity, [W/m/K] mu : float, optional Dynamic viscosity, [Pa*s] nu : float, optional Kinematic viscosity, [m^2/s] rho : float Density, [kg/m^3] alpha : float Thermal diffusivity, [m^2/s] Returns ------- Pr : float Prandtl number [] Notes ----- .. math:: Pr=\frac{\text{kinematic viscosity}}{\text{thermal diffusivity}} = \frac{\text{momentum diffusivity}}{\text{thermal diffusivity}} An error is raised if none of the required input sets are provided. Examples -------- >>> Prandtl(Cp=1637., k=0.010, mu=4.61E-6) 0.754657 >>> Prandtl(Cp=1637., k=0.010, nu=6.4E-7, rho=7.1) 0.7438528 >>> Prandtl(nu=6.3E-7, alpha=9E-7) 0.7000000000000001 References ---------- .. [1] Green, Don, and Robert Perry. Perry's Chemical Engineers' Handbook, Eighth Edition. McGraw-Hill Professional, 2007. .. [2] Cengel, Yunus, and John Cimbala. Fluid Mechanics: Fundamentals and Applications. Boston: McGraw Hill Higher Education, 2006. .. [3] Gesellschaft, V. D. I., ed. VDI Heat Atlas. 2nd edition. Berlin; New York:: Springer, 2010. ''' if k is not None and Cp is not None and mu is not None: return Cp*mu/k elif nu is not None and rho is not None and Cp is not None and k is not None: return nu*rho*Cp/k elif nu is not None and alpha is not None: return nu/alpha else: raise ValueError('Insufficient information provided for Pr calculation')
[docs]def Grashof(L, beta, T1, T2=0, rho=None, mu=None, nu=None, g=g): r'''Calculates Grashof number or `Gr` for a fluid with the given properties, temperature difference, and characteristic length. .. math:: Gr = \frac{g\beta (T_s-T_\infty)L^3}{\nu^2} = \frac{g\beta (T_s-T_\infty)L^3\rho^2}{\mu^2} Inputs either of any of the following sets: * L, beta, T1 and T2, and density `rho` and kinematic viscosity `mu` * L, beta, T1 and T2, and dynamic viscosity `nu` Parameters ---------- L : float Characteristic length [m] beta : float Volumetric thermal expansion coefficient [1/K] T1 : float Temperature 1, usually a film temperature [K] T2 : float, optional Temperature 2, usually a bulk temperature (or 0 if only a difference is provided to the function) [K] rho : float, optional Density, [kg/m^3] mu : float, optional Dynamic viscosity, [Pa*s] nu : float, optional Kinematic viscosity, [m^2/s] g : float, optional Acceleration due to gravity, [m/s^2] Returns ------- Gr : float Grashof number [] Notes ----- .. math:: Gr = \frac{\text{Buoyancy forces}}{\text{Viscous forces}} An error is raised if none of the required input sets are provided. Used in free convection problems only. Examples -------- Example 4 of [1]_, p. 1-21 (matches): >>> Grashof(L=0.9144, beta=0.000933, T1=178.2, rho=1.1613, mu=1.9E-5) 4656936556.178915 >>> Grashof(L=0.9144, beta=0.000933, T1=378.2, T2=200, nu=1.636e-05) 4657491516.530312 References ---------- .. [1] Green, Don, and Robert Perry. Perry's Chemical Engineers' Handbook, Eighth Edition. McGraw-Hill Professional, 2007. .. [2] Cengel, Yunus, and John Cimbala. Fluid Mechanics: Fundamentals and Applications. Boston: McGraw Hill Higher Education, 2006. ''' if rho is not None and mu is not None: nu = mu/rho elif nu is None: raise ValueError('Either density and viscosity, or dynamic viscosity, \ is needed') return g*beta*abs(T2-T1)*L*L*L/(nu*nu)
[docs]def Bond(rhol, rhog, sigma, L): r'''Calculates Bond number, `Bo` also known as Eotvos number, for a fluid with the given liquid and gas densities, surface tension, and geometric parameter (usually length). .. math:: Bo = \frac{g(\rho_l-\rho_g)L^2}{\sigma} Parameters ---------- rhol : float Density of liquid, [kg/m^3] rhog : float Density of gas, [kg/m^3] sigma : float Surface tension, [N/m] L : float Characteristic length, [m] Returns ------- Bo : float Bond number [] Examples -------- >>> Bond(1000., 1.2, .0589, 2) 665187.2339558573 References ---------- .. [1] Green, Don, and Robert Perry. Perry's Chemical Engineers' Handbook, Eighth Edition. McGraw-Hill Professional, 2007. ''' return (g*(rhol-rhog)*L*L/sigma)
Eotvos = Bond
[docs]def Rayleigh(Pr, Gr): r'''Calculates Rayleigh number or `Ra` using Prandtl number `Pr` and Grashof number `Gr` for a fluid with the given properties, temperature difference, and characteristic length used to calculate `Gr` and `Pr`. .. math:: Ra = PrGr Parameters ---------- Pr : float Prandtl number [] Gr : float Grashof number [] Returns ------- Ra : float Rayleigh number [] Notes ----- Used in free convection problems only. Examples -------- >>> Rayleigh(1.2, 4.6E9) 5520000000.0 References ---------- .. [1] Green, Don, and Robert Perry. Perry's Chemical Engineers' Handbook, Eighth Edition. McGraw-Hill Professional, 2007. .. [2] Cengel, Yunus, and John Cimbala. Fluid Mechanics: Fundamentals and Applications. Boston: McGraw Hill Higher Education, 2006. ''' return Pr*Gr
[docs]def Froude(V, L, g=g, squared=False): r'''Calculates Froude number `Fr` for velocity `V` and geometric length `L`. If desired, gravity can be specified as well. Normally the function returns the result of the equation below; Froude number is also often said to be defined as the square of the equation below. .. math:: Fr = \frac{V}{\sqrt{gL}} Parameters ---------- V : float Velocity of the particle or fluid, [m/s] L : float Characteristic length, no typical definition [m] g : float, optional Acceleration due to gravity, [m/s^2] squared : bool, optional Whether to return the squared form of Froude number Returns ------- Fr : float Froude number, [-] Notes ----- Many alternate definitions including density ratios have been used. .. math:: Fr = \frac{\text{Inertial Force}}{\text{Gravity Force}} Examples -------- >>> Froude(1.83, L=2., g=1.63) 1.0135432593877318 >>> Froude(1.83, L=2., squared=True) 0.17074638128208924 References ---------- .. [1] Green, Don, and Robert Perry. Perry's Chemical Engineers' Handbook, Eighth Edition. McGraw-Hill Professional, 2007. .. [2] Cengel, Yunus, and John Cimbala. Fluid Mechanics: Fundamentals and Applications. Boston: McGraw Hill Higher Education, 2006. ''' Fr = V/sqrt(L*g) if squared: Fr *= Fr return Fr
[docs]def Froude_densimetric(V, L, rho1, rho2, heavy=True, g=g): r'''Calculates the densimetric Froude number :math:`Fr_{den}` for velocity `V` geometric length `L`, heavier fluid density `rho1`, and lighter fluid density `rho2`. If desired, gravity can be specified as well. Depending on the application, this dimensionless number may be defined with the heavy phase or the light phase density in the numerator of the square root. For some applications, both need to be calculated. The default is to calculate with the heavy liquid ensity on top; set `heavy` to False to reverse this. .. math:: Fr = \frac{V}{\sqrt{gL}} \sqrt{\frac{\rho_\text{(1 or 2)}} {\rho_1 - \rho_2}} Parameters ---------- V : float Velocity of the specified phase, [m/s] L : float Characteristic length, no typical definition [m] rho1 : float Density of the heavier phase, [kg/m^3] rho2 : float Density of the lighter phase, [kg/m^3] heavy : bool, optional Whether or not the density used in the numerator is the heavy phase or the light phase, [-] g : float, optional Acceleration due to gravity, [m/s^2] Returns ------- Fr_den : float Densimetric Froude number, [-] Notes ----- Many alternate definitions including density ratios have been used. .. math:: Fr = \frac{\text{Inertial Force}}{\text{Gravity Force}} Where the gravity force is reduced by the relative densities of one fluid in another. Note that an Exception will be raised if rho1 > rho2, as the square root becomes negative. Examples -------- >>> Froude_densimetric(1.83, L=2., rho1=800, rho2=1.2, g=9.81) 0.4134543386272418 >>> Froude_densimetric(1.83, L=2., rho1=800, rho2=1.2, g=9.81, heavy=False) 0.016013017679205096 References ---------- .. [1] Hall, A, G Stobie, and R Steven. "Further Evaluation of the Performance of Horizontally Installed Orifice Plate and Cone Differential Pressure Meters with Wet Gas Flows." In International SouthEast Asia Hydrocarbon Flow Measurement Workshop, KualaLumpur, Malaysia, 2008. ''' if heavy: rho3 = rho1 else: rho3 = rho2 return V/(sqrt(g*L))*sqrt(rho3/(rho1 - rho2))
[docs]def Strouhal(f, L, V): r'''Calculates Strouhal number `St` for a characteristic frequency `f`, characteristic length `L`, and velocity `V`. .. math:: St = \frac{fL}{V} Parameters ---------- f : float Characteristic frequency, usually that of vortex shedding, [Hz] L : float Characteristic length, [m] V : float Velocity of the fluid, [m/s] Returns ------- St : float Strouhal number, [-] Notes ----- Sometimes abbreviated to S or Sr. .. math:: St = \frac{\text{Characteristic flow time}} {\text{Period of oscillation}} Examples -------- >>> Strouhal(8, 2., 4.) 4.0 References ---------- .. [1] Green, Don, and Robert Perry. Perry's Chemical Engineers' Handbook, Eighth Edition. McGraw-Hill Professional, 2007. .. [2] Cengel, Yunus, and John Cimbala. Fluid Mechanics: Fundamentals and Applications. Boston: McGraw Hill Higher Education, 2006. ''' return f*L/V
[docs]def Nusselt(h, L, k): r'''Calculates Nusselt number `Nu` for a heat transfer coefficient `h`, characteristic length `L`, and thermal conductivity `k`. .. math:: Nu = \frac{hL}{k} Parameters ---------- h : float Heat transfer coefficient, [W/m^2/K] L : float Characteristic length, no typical definition [m] k : float Thermal conductivity of fluid [W/m/K] Returns ------- Nu : float Nusselt number, [-] Notes ----- Do not confuse k, the thermal conductivity of the fluid, with that of within a solid object associated with! .. math:: Nu = \frac{\text{Convective heat transfer}} {\text{Conductive heat transfer}} Examples -------- >>> Nusselt(1000., 1.2, 300.) 4.0 >>> Nusselt(10000., .01, 4000.) 0.025 References ---------- .. [1] Green, Don, and Robert Perry. Perry's Chemical Engineers' Handbook, Eighth Edition. McGraw-Hill Professional, 2007. .. [2] Bergman, Theodore L., Adrienne S. Lavine, Frank P. Incropera, and David P. DeWitt. Introduction to Heat Transfer. 6E. Hoboken, NJ: Wiley, 2011. ''' return h*L/k
[docs]def Sherwood(K, L, D): r'''Calculates Sherwood number `Sh` for a mass transfer coefficient `K`, characteristic length `L`, and diffusivity `D`. .. math:: Sh = \frac{KL}{D} Parameters ---------- K : float Mass transfer coefficient, [m/s] L : float Characteristic length, no typical definition [m] D : float Diffusivity of a species [m/s^2] Returns ------- Sh : float Sherwood number, [-] Notes ----- .. math:: Sh = \frac{\text{Mass transfer by convection}} {\text{Mass transfer by diffusion}} = \frac{K}{D/L} Examples -------- >>> Sherwood(1000., 1.2, 300.) 4.0 References ---------- .. [1] Green, Don, and Robert Perry. Perry's Chemical Engineers' Handbook, Eighth Edition. McGraw-Hill Professional, 2007. ''' return K*L/D
[docs]def Biot(h, L, k): r'''Calculates Biot number `Br` for heat transfer coefficient `h`, geometric length `L`, and thermal conductivity `k`. .. math:: Bi=\frac{hL}{k} Parameters ---------- h : float Heat transfer coefficient, [W/m^2/K] L : float Characteristic length, no typical definition [m] k : float Thermal conductivity, within the object [W/m/K] Returns ------- Bi : float Biot number, [-] Notes ----- Do not confuse k, the thermal conductivity within the object, with that of the medium h is calculated with! .. math:: Bi = \frac{\text{Surface thermal resistance}} {\text{Internal thermal resistance}} Examples -------- >>> Biot(1000., 1.2, 300.) 4.0 >>> Biot(10000., .01, 4000.) 0.025 References ---------- .. [1] Green, Don, and Robert Perry. Perry's Chemical Engineers' Handbook, Eighth Edition. McGraw-Hill Professional, 2007. .. [2] Cengel, Yunus, and John Cimbala. Fluid Mechanics: Fundamentals and Applications. Boston: McGraw Hill Higher Education, 2006. ''' return h*L/k
[docs]def Stanton(h, V, rho, Cp): r'''Calculates Stanton number or `St` for a specified heat transfer coefficient `h`, velocity `V`, density `rho`, and heat capacity `Cp` [1]_ [2]_. .. math:: St = \frac{h}{V\rho Cp} Parameters ---------- h : float Heat transfer coefficient, [W/m^2/K] V : float Velocity, [m/s] rho : float Density, [kg/m^3] Cp : float Heat capacity, [J/kg/K] Returns ------- St : float Stanton number [] Notes ----- .. math:: St = \frac{\text{Heat transfer coefficient}}{\text{Thermal capacity}} Examples -------- >>> Stanton(5000, 5, 800, 2000.) 0.000625 References ---------- .. [1] Green, Don, and Robert Perry. Perry's Chemical Engineers' Handbook, Eighth Edition. McGraw-Hill Professional, 2007. .. [2] Bergman, Theodore L., Adrienne S. Lavine, Frank P. Incropera, and David P. DeWitt. Introduction to Heat Transfer. 6E. Hoboken, NJ: Wiley, 2011. ''' return h/(V*rho*Cp)
[docs]def Euler(dP, rho, V): r'''Calculates Euler number or `Eu` for a fluid of velocity `V` and density `rho` experiencing a pressure drop `dP`. .. math:: Eu = \frac{\Delta P}{\rho V^2} Parameters ---------- dP : float Pressure drop experience by the fluid, [Pa] rho : float Density of the fluid, [kg/m^3] V : float Velocity of fluid, [m/s] Returns ------- Eu : float Euler number [] Notes ----- Used in pressure drop calculations. Rarely, this number is divided by two. Named after Leonhard Euler applied calculus to fluid dynamics. .. math:: Eu = \frac{\text{Pressure drop}}{2\cdot \text{velocity head}} Examples -------- >>> Euler(1E5, 1000., 4) 6.25 References ---------- .. [1] Green, Don, and Robert Perry. Perry's Chemical Engineers' Handbook, Eighth Edition. McGraw-Hill Professional, 2007. .. [2] Cengel, Yunus, and John Cimbala. Fluid Mechanics: Fundamentals and Applications. Boston: McGraw Hill Higher Education, 2006. ''' return dP/(rho*V*V)
[docs]def Cavitation(P, Psat, rho, V): r'''Calculates Cavitation number or `Ca` for a fluid of velocity `V` with a pressure `P`, vapor pressure `Psat`, and density `rho`. .. math:: Ca = \sigma_c = \sigma = \frac{P-P_{sat}}{\frac{1}{2}\rho V^2} Parameters ---------- P : float Internal pressure of the fluid, [Pa] Psat : float Vapor pressure of the fluid, [Pa] rho : float Density of the fluid, [kg/m^3] V : float Velocity of fluid, [m/s] Returns ------- Ca : float Cavitation number [] Notes ----- Used in determining if a flow through a restriction will cavitate. Sometimes, the multiplication by 2 will be omitted; .. math:: Ca = \frac{\text{Pressure - Vapor pressure}} {\text{Inertial pressure}} Examples -------- >>> Cavitation(2E5, 1E4, 1000, 10) 3.8 References ---------- .. [1] Green, Don, and Robert Perry. Perry's Chemical Engineers' Handbook, Eighth Edition. McGraw-Hill Professional, 2007. .. [2] Cengel, Yunus, and John Cimbala. Fluid Mechanics: Fundamentals and Applications. Boston: McGraw Hill Higher Education, 2006. ''' return (P-Psat)/(0.5*rho*V*V)
[docs]def Eckert(V, Cp, dT): r'''Calculates Eckert number or `Ec` for a fluid of velocity `V` with a heat capacity `Cp`, between two temperature given as `dT`. .. math:: Ec = \frac{V^2}{C_p \Delta T} Parameters ---------- V : float Velocity of fluid, [m/s] Cp : float Heat capacity of the fluid, [J/kg/K] dT : float Temperature difference, [K] Returns ------- Ec : float Eckert number [] Notes ----- Used in certain heat transfer calculations. Fairly rare. .. math:: Ec = \frac{\text{Kinetic energy} }{ \text{Enthalpy difference}} Examples -------- >>> Eckert(10, 2000., 25.) 0.002 References ---------- .. [1] Goldstein, Richard J. ECKERT NUMBER. Thermopedia. Hemisphere, 2011. 10.1615/AtoZ.e.eckert_number ''' return V*V/(Cp*dT)
[docs]def Jakob(Cp, Hvap, Te): r'''Calculates Jakob number or `Ja` for a boiling fluid with sensible heat capacity `Cp`, enthalpy of vaporization `Hvap`, and boiling at `Te` degrees above its saturation boiling point. .. math:: Ja = \frac{C_{P}\Delta T_e}{\Delta H_{vap}} Parameters ---------- Cp : float Heat capacity of the fluid, [J/kg/K] Hvap : float Enthalpy of vaporization of the fluid at its saturation temperature [J/kg] Te : float Temperature difference above the fluid's saturation boiling temperature, [K] Returns ------- Ja : float Jakob number [] Notes ----- Used in boiling heat transfer analysis. Fairly rare. .. math:: Ja = \frac{\Delta \text{Sensible heat}}{\Delta \text{Latent heat}} Examples -------- >>> Jakob(4000., 2E6, 10.) 0.02 References ---------- .. [1] Bergman, Theodore L., Adrienne S. Lavine, Frank P. Incropera, and David P. DeWitt. Introduction to Heat Transfer. 6E. Hoboken, NJ: Wiley, 2011. .. [2] Cengel, Yunus, and John Cimbala. Fluid Mechanics: Fundamentals and Applications. Boston: McGraw Hill Higher Education, 2006. ''' return Cp*Te/Hvap
[docs]def Power_number(P, L, N, rho): r'''Calculates power number, `Po`, for an agitator applying a specified power `P` with a characteristic length `L`, rotational speed `N`, to a fluid with a specified density `rho`. .. math:: Po = \frac{P}{\rho N^3 D^5} Parameters ---------- P : float Power applied, [W] L : float Characteristic length, typically agitator diameter [m] N : float Speed [revolutions/second] rho : float Density of fluid, [kg/m^3] Returns ------- Po : float Power number [] Notes ----- Used in mixing calculations. .. math:: Po = \frac{\text{Power}}{\text{Rotational inertia}} Examples -------- >>> Power_number(P=180, L=0.01, N=2.5, rho=800.) 144000000.0 References ---------- .. [1] Green, Don, and Robert Perry. Perry's Chemical Engineers' Handbook, Eighth Edition. McGraw-Hill Professional, 2007. .. [2] Cengel, Yunus, and John Cimbala. Fluid Mechanics: Fundamentals and Applications. Boston: McGraw Hill Higher Education, 2006. ''' return P/(rho*N*N*N*L**5)
[docs]def Drag(F, A, V, rho): r'''Calculates drag coefficient `Cd` for a given drag force `F`, projected area `A`, characteristic velocity `V`, and density `rho`. .. math:: C_D = \frac{F_d}{A\cdot\frac{1}{2}\rho V^2} Parameters ---------- F : float Drag force, [N] A : float Projected area, [m^2] V : float Characteristic velocity, [m/s] rho : float Density, [kg/m^3] Returns ------- Cd : float Drag coefficient, [-] Notes ----- Used in flow around objects, or objects flowing within a fluid. .. math:: C_D = \frac{\text{Drag forces}}{\text{Projected area}\cdot \text{Velocity head}} Examples -------- >>> Drag(1000, 0.0001, 5, 2000) 400.0 References ---------- .. [1] Green, Don, and Robert Perry. Perry's Chemical Engineers' Handbook, Eighth Edition. McGraw-Hill Professional, 2007. .. [2] Cengel, Yunus, and John Cimbala. Fluid Mechanics: Fundamentals and Applications. Boston: McGraw Hill Higher Education, 2006. ''' return F/(0.5*A*rho*V*V)
[docs]def Stokes_number(V, Dp, D, rhop, mu): r'''Calculates Stokes Number for a given characteristic velocity `V`, particle diameter `Dp`, characteristic diameter `D`, particle density `rhop`, and fluid viscosity `mu`. .. math:: \text{Stk} = \frac{\rho_p V D_p^2}{18\mu_f D} Parameters ---------- V : float Characteristic velocity (often superficial), [m/s] Dp : float Particle diameter, [m] D : float Characteristic diameter (ex demister wire diameter or cyclone diameter), [m] rhop : float Particle density, [kg/m^3] mu : float Fluid viscosity, [Pa*s] Returns ------- Stk : float Stokes numer, [-] Notes ----- Used in droplet impaction or collection studies. Examples -------- >>> Stokes_number(V=0.9, Dp=1E-5, D=1E-3, rhop=1000, mu=1E-5) 0.5 References ---------- .. [1] Rhodes, Martin J. Introduction to Particle Technology. Wiley, 2013. .. [2] Al-Dughaither, Abdullah S., Ahmed A. Ibrahim, and Waheed A. Al-Masry. "Investigating Droplet Separation Efficiency in Wire-Mesh Mist Eliminators in Bubble Column." Journal of Saudi Chemical Society 14, no. 4 (October 1, 2010): 331-39. https://doi.org/10.1016/j.jscs.2010.04.001. ''' return rhop*V*(Dp*Dp)/(18.0*mu*D)
[docs]def Capillary(V, mu, sigma): r'''Calculates Capillary number `Ca` for a characteristic velocity `V`, viscosity `mu`, and surface tension `sigma`. .. math:: Ca = \frac{V \mu}{\sigma} Parameters ---------- V : float Characteristic velocity, [m/s] mu : float Dynamic viscosity, [Pa*s] sigma : float Surface tension, [N/m] Returns ------- Ca : float Capillary number, [-] Notes ----- Used in porous media calculations and film flow calculations. Surface tension may gas-liquid, or liquid-liquid. .. math:: Ca = \frac{\text{Viscous forces}} {\text{Surface forces}} Examples -------- >>> Capillary(1.2, 0.01, .1) 0.12 References ---------- .. [1] Green, Don, and Robert Perry. Perry's Chemical Engineers' Handbook, Eighth Edition. McGraw-Hill Professional, 2007. .. [2] Kundu, Pijush K., Ira M. Cohen, and David R. Dowling. Fluid Mechanics. Academic Press, 2012. ''' return V*mu/sigma
[docs]def Archimedes(L, rhof, rhop, mu, g=g): r'''Calculates Archimedes number, `Ar`, for a fluid and particle with the given densities, characteristic length, viscosity, and gravity (usually diameter of particle). .. math:: Ar = \frac{L^3 \rho_f(\rho_p-\rho_f)g}{\mu^2} Parameters ---------- L : float Characteristic length, typically particle diameter [m] rhof : float Density of fluid, [kg/m^3] rhop : float Density of particle, [kg/m^3] mu : float Viscosity of fluid, [N/m] g : float, optional Acceleration due to gravity, [m/s^2] Returns ------- Ar : float Archimedes number [] Notes ----- Used in fluid-particle interaction calculations. .. math:: Ar = \frac{\text{Gravitational force}}{\text{Viscous force}} Examples -------- >>> Archimedes(0.002, 2., 3000, 1E-3) 470.4053872 References ---------- .. [1] Green, Don, and Robert Perry. Perry's Chemical Engineers' Handbook, Eighth Edition. McGraw-Hill Professional, 2007. .. [2] Cengel, Yunus, and John Cimbala. Fluid Mechanics: Fundamentals and Applications. Boston: McGraw Hill Higher Education, 2006. ''' return L*L*L*rhof*(rhop-rhof)*g/(mu*mu)
[docs]def Ohnesorge(L, rho, mu, sigma): r'''Calculates Ohnesorge number, `Oh`, for a fluid with the given characteristic length, density, viscosity, and surface tension. .. math:: \text{Oh} = \frac{\mu}{\sqrt{\rho \sigma L }} Parameters ---------- L : float Characteristic length [m] rho : float Density of fluid, [kg/m^3] mu : float Viscosity of fluid, [Pa*s] sigma : float Surface tension, [N/m] Returns ------- Oh : float Ohnesorge number [] Notes ----- Often used in spray calculations. Sometimes given the symbol Z. .. math:: Oh = \frac{\sqrt{\text{We}}}{\text{Re}}= \frac{\text{viscous forces}} {\sqrt{\text{Inertia}\cdot\text{Surface tension}} } Examples -------- >>> Ohnesorge(1E-4, 1000., 1E-3, 1E-1) 0.01 References ---------- .. [1] Green, Don, and Robert Perry. Perry's Chemical Engineers' Handbook, Eighth Edition. McGraw-Hill Professional, 2007. ''' return mu/sqrt(L*rho*sigma)
[docs]def Suratman(L, rho, mu, sigma): r'''Calculates Suratman number, `Su`, for a fluid with the given characteristic length, density, viscosity, and surface tension. .. math:: \text{Su} = \frac{\rho\sigma L}{\mu^2} Parameters ---------- L : float Characteristic length [m] rho : float Density of fluid, [kg/m^3] mu : float Viscosity of fluid, [Pa*s] sigma : float Surface tension, [N/m] Returns ------- Su : float Suratman number [] Notes ----- Also known as Laplace number. Used in two-phase flow, especially the bubbly-slug regime. No confusion regarding the definition of this group has been observed. .. math:: \text{Su} = \frac{\text{Re}^2}{\text{We}} =\frac{\text{Inertia}\cdot \text{Surface tension} }{\text{(viscous forces)}^2} The oldest reference to this group found by the author is in 1963, from [2]_. Examples -------- >>> Suratman(1E-4, 1000., 1E-3, 1E-1) 10000.0 References ---------- .. [1] Sen, Nilava. "Suratman Number in Bubble-to-Slug Flow Pattern Transition under Microgravity." Acta Astronautica 65, no. 3-4 (August 2009): 423-28. doi:10.1016/j.actaastro.2009.02.013. .. [2] Catchpole, John P., and George. Fulford. "DIMENSIONLESS GROUPS." Industrial & Engineering Chemistry 58, no. 3 (March 1, 1966): 46-60. doi:10.1021/ie50675a012. ''' return rho*sigma*L/(mu*mu)
[docs]def Hagen(Re, fd): r'''Calculates Hagen number, `Hg`, for a fluid with the given Reynolds number and friction factor. .. math:: \text{Hg} = \frac{f_d}{2} Re^2 = \frac{1}{\rho} \frac{\Delta P}{\Delta z} \frac{D^3}{\nu^2} = \frac{\rho\Delta P D^3}{\mu^2 \Delta z} Parameters ---------- Re : float Reynolds number [-] fd : float, optional Darcy friction factor, [-] Returns ------- Hg : float Hagen number, [-] Notes ----- Introduced in [1]_; further use of it is mostly of the correlations introduced in [1]_. Notable for use use in correlations, because it does not have any dependence on velocity. This expression is useful when designing backwards with a pressure drop spec already known. Examples -------- Example from [3]_: >>> Hagen(Re=2610, fd=1.935235) 6591507.17175 References ---------- .. [1] Martin, Holger. "The Generalized Lévêque Equation and Its Practical Use for the Prediction of Heat and Mass Transfer Rates from Pressure Drop." Chemical Engineering Science, Jean-Claude Charpentier Festschrift Issue, 57, no. 16 (August 1, 2002): 3217-23. https://doi.org/10.1016/S0009-2509(02)00194-X. .. [2] Shah, Ramesh K., and Dusan P. Sekulic. Fundamentals of Heat Exchanger Design. 1st edition. Hoboken, NJ: Wiley, 2002. .. [3] Gesellschaft, V. D. I., ed. VDI Heat Atlas. 2nd edition. Berlin; New York:: Springer, 2010. ''' return 0.5*fd*Re*Re
[docs]def Bejan_L(dP, L, mu, alpha): r'''Calculates Bejan number of a length or `Be_L` for a fluid with the given parameters flowing over a characteristic length `L` and experiencing a pressure drop `dP`. .. math:: Be_L = \frac{\Delta P L^2}{\mu \alpha} Parameters ---------- dP : float Pressure drop, [Pa] L : float Characteristic length, [m] mu : float, optional Dynamic viscosity, [Pa*s] alpha : float Thermal diffusivity, [m^2/s] Returns ------- Be_L : float Bejan number with respect to length [] Notes ----- Termed a dimensionless number by someone in 1988. Examples -------- >>> Bejan_L(1E4, 1, 1E-3, 1E-6) 10000000000000.0 References ---------- .. [1] Awad, M. M. "The Science and the History of the Two Bejan Numbers." International Journal of Heat and Mass Transfer 94 (March 2016): 101-3. doi:10.1016/j.ijheatmasstransfer.2015.11.073. .. [2] Bejan, Adrian. Convection Heat Transfer. 4E. Hoboken, New Jersey: Wiley, 2013. ''' return dP*L*L/(alpha*mu)
[docs]def Bejan_p(dP, K, mu, alpha): r'''Calculates Bejan number of a permeability or `Be_p` for a fluid with the given parameters and a permeability `K` experiencing a pressure drop `dP`. .. math:: Be_p = \frac{\Delta P K}{\mu \alpha} Parameters ---------- dP : float Pressure drop, [Pa] K : float Permeability, [m^2] mu : float, optional Dynamic viscosity, [Pa*s] alpha : float Thermal diffusivity, [m^2/s] Returns ------- Be_p : float Bejan number with respect to pore characteristics [] Notes ----- Termed a dimensionless number by someone in 1988. Examples -------- >>> Bejan_p(1E4, 1, 1E-3, 1E-6) 10000000000000.0 References ---------- .. [1] Awad, M. M. "The Science and the History of the Two Bejan Numbers." International Journal of Heat and Mass Transfer 94 (March 2016): 101-3. doi:10.1016/j.ijheatmasstransfer.2015.11.073. .. [2] Bejan, Adrian. Convection Heat Transfer. 4E. Hoboken, New Jersey: Wiley, 2013. ''' return dP*K/(alpha*mu)
[docs]def Boiling(G, q, Hvap): r'''Calculates Boiling number or `Bg` using heat flux, two-phase mass flux, and heat of vaporization of the fluid flowing. Used in two-phase heat transfer calculations. .. math:: \text{Bg} = \frac{q}{G_{tp} \Delta H_{vap}} Parameters ---------- G : float Two-phase mass flux in a channel (combined liquid and vapor) [kg/m^2/s] q : float Heat flux [W/m^2] Hvap : float Heat of vaporization of the fluid [J/kg] Returns ------- Bg : float Boiling number [-] Notes ----- Most often uses the symbol `Bo` instead of `Bg`, but this conflicts with Bond number. .. math:: \text{Bg} = \frac{\text{mass liquid evaporated / area heat transfer surface}}{\text{mass flow rate fluid / flow cross sectional area}} First defined in [4]_, though not named. Examples -------- >>> Boiling(300, 3000, 800000) 1.25e-05 References ---------- .. [1] Winterton, Richard H.S. BOILING NUMBER. Thermopedia. Hemisphere, 2011. 10.1615/AtoZ.b.boiling_number .. [2] Collier, John G., and John R. Thome. Convective Boiling and Condensation. 3rd edition. Clarendon Press, 1996. .. [3] Stephan, Karl. Heat Transfer in Condensation and Boiling. Translated by C. V. Green.. 1992 edition. Berlin; New York: Springer, 2013. .. [4] W. F. Davidson, P. H. Hardie, C. G. R. Humphreys, A. A. Markson, A. R. Mumford and T. Ravese "Studies of heat transmission through boiler tubing at pressures from 500 to 3300 pounds" Trans. ASME, Vol. 65, 9, February 1943, pp. 553-591. ''' return q/(G*Hvap)
[docs]def Dean(Re, Di, D): r'''Calculates Dean number, `De`, for a fluid with the Reynolds number `Re`, inner diameter `Di`, and a secondary diameter `D`. `D` may be the diameter of curvature, the diameter of a spiral, or some other dimension. .. math:: \text{De} = \sqrt{\frac{D_i}{D}} \text{Re} = \sqrt{\frac{D_i}{D}} \frac{\rho v D}{\mu} Parameters ---------- Re : float Reynolds number [] Di : float Inner diameter [] D : float Diameter of curvature or outer spiral or other dimension [] Returns ------- De : float Dean number [-] Notes ----- Used in flow in curved geometry. .. math:: \text{De} = \frac{\sqrt{\text{centripetal forces}\cdot \text{inertial forces}}}{\text{viscous forces}} Examples -------- >>> Dean(10000, 0.1, 0.4) 5000.0 References ---------- .. [1] Catchpole, John P., and George. Fulford. "DIMENSIONLESS GROUPS." Industrial & Engineering Chemistry 58, no. 3 (March 1, 1966): 46-60. doi:10.1021/ie50675a012. ''' return sqrt(Di/D)*Re
[docs]def relative_roughness(D, roughness=1.52e-06): r'''Calculates relative roughness `eD` using a diameter and the roughness of the material of the wall. Default roughness is that of steel. .. math:: eD=\frac{\epsilon}{D} Parameters ---------- D : float Diameter of pipe, [m] roughness : float, optional Roughness of pipe wall [m] Returns ------- eD : float Relative Roughness, [-] Examples -------- >>> relative_roughness(0.5, 1E-4) 0.0002 References ---------- .. [1] Green, Don, and Robert Perry. Perry's Chemical Engineers' Handbook, Eighth Edition. McGraw-Hill Professional, 2007. .. [2] Cengel, Yunus, and John Cimbala. Fluid Mechanics: Fundamentals and Applications. Boston: McGraw Hill Higher Education, 2006. ''' return roughness/D
### Misc utilities
[docs]def nu_mu_converter(rho, mu=None, nu=None): r'''Calculates either kinematic or dynamic viscosity, depending on inputs. Used when one type of viscosity is known as well as density, to obtain the other type. Raises an error if both types of viscosity or neither type of viscosity is provided. .. math:: \nu = \frac{\mu}{\rho} .. math:: \mu = \nu\rho Parameters ---------- rho : float Density, [kg/m^3] mu : float, optional Dynamic viscosity, [Pa*s] nu : float, optional Kinematic viscosity, [m^2/s] Returns ------- mu or nu : float Dynamic viscosity, Pa*s or Kinematic viscosity, m^2/s Examples -------- >>> nu_mu_converter(998., nu=1.0E-6) 0.000998 References ---------- .. [1] Cengel, Yunus, and John Cimbala. Fluid Mechanics: Fundamentals and Applications. Boston: McGraw Hill Higher Education, 2006. ''' if (nu is not None and mu is not None) or rho is None or (nu is None and mu is None): raise ValueError('Inputs must be rho and one of mu and nu.') if mu is not None: return mu/rho else: return nu*rho
[docs]def gravity(latitude, H): r'''Calculates local acceleration due to gravity `g` according to [1]_. Uses latitude and height to calculate `g`. .. math:: g = 9.780356(1 + 0.0052885\sin^2\phi - 0.0000059^22\phi) - 3.086\times 10^{-6} H Parameters ---------- latitude : float Degrees, [degrees] H : float Height above earth's surface [m] Returns ------- g : float Acceleration due to gravity, [m/s^2] Notes ----- Better models, such as EGM2008 exist. Examples -------- >>> gravity(55, 1E4) 9.784151976863571 References ---------- .. [1] Haynes, W.M., Thomas J. Bruno, and David R. Lide. CRC Handbook of Chemistry and Physics. [Boca Raton, FL]: CRC press, 2014. ''' lat = latitude*pi/180 g = 9.780356*(1+0.0052885*sin(lat)**2 -0.0000059*sin(2*lat)**2)-3.086E-6*H return g
### Friction loss conversion functions
[docs]def K_from_f(fd, L, D): r'''Calculates loss coefficient, K, for a given section of pipe at a specified friction factor. .. math:: K = f_dL/D Parameters ---------- fd : float friction factor of pipe, [] L : float Length of pipe, [m] D : float Inner diameter of pipe, [m] Returns ------- K : float Loss coefficient, [] Notes ----- For fittings with a specified L/D ratio, use D = 1 and set L to specified L/D ratio. Examples -------- >>> K_from_f(fd=0.018, L=100., D=.3) 6.0 ''' return fd*L/D
[docs]def f_from_K(K, L, D): r'''Calculates friction factor, `fd`, from a loss coefficient, K, for a given section of pipe. .. math:: f_d = \frac{K D}{L} Parameters ---------- K : float Loss coefficient, [] L : float Length of pipe, [m] D : float Inner diameter of pipe, [m] Returns ------- fd : float Darcy friction factor of pipe, [-] Notes ----- This can be useful to blend fittings at specific locations in a pipe into a pressure drop which is evenly distributed along a pipe. Examples -------- >>> f_from_K(K=0.6, L=100., D=.3) 0.0018 ''' return K*D/L
[docs]def K_from_L_equiv(L_D, fd=0.015): r'''Calculates loss coefficient, for a given equivalent length (L/D). .. math:: K = f_d \frac{L}{D} Parameters ---------- L_D : float Length over diameter, [] fd : float, optional Darcy friction factor, [-] Returns ------- K : float Loss coefficient, [] Notes ----- Almost identical to `K_from_f`, but with a default friction factor for fully turbulent flow in steel pipes. Examples -------- >>> K_from_L_equiv(240) 3.5999999999999996 ''' return fd*L_D
[docs]def L_equiv_from_K(K, fd=0.015): r'''Calculates equivalent length of pipe (L/D), for a given loss coefficient. .. math:: \frac{L}{D} = \frac{K}{f_d} Parameters ---------- K : float Loss coefficient, [-] fd : float, optional Darcy friction factor, [-] Returns ------- L_D : float Length over diameter, [-] Notes ----- Assumes a default friction factor for fully turbulent flow in steel pipes. Examples -------- >>> L_equiv_from_K(3.6) 240.00000000000003 ''' return K/fd
[docs]def L_from_K(K, D, fd=0.015): r'''Calculates the length of straight pipe at a specified friction factor required to produce a given loss coefficient `K`. .. math:: L = \frac{K D}{f_d} Parameters ---------- K : float Loss coefficient, [] D : float Inner diameter of pipe, [m] fd : float friction factor of pipe, [] Returns ------- L : float Length of pipe, [m] Examples -------- >>> L_from_K(K=6, D=.3, fd=0.018) 100.0 ''' return K*D/fd
[docs]def dP_from_K(K, rho, V): r'''Calculates pressure drop, for a given loss coefficient, at a specified density and velocity. .. math:: dP = 0.5K\rho V^2 Parameters ---------- K : float Loss coefficient, [] rho : float Density of fluid, [kg/m^3] V : float Velocity of fluid in pipe, [m/s] Returns ------- dP : float Pressure drop, [Pa] Notes ----- Loss coefficient `K` is usually the sum of several factors, including the friction factor. Examples -------- >>> dP_from_K(K=10, rho=1000, V=3) 45000.0 ''' return K*0.5*rho*V*V
[docs]def head_from_K(K, V, g=g): r'''Calculates head loss, for a given loss coefficient, at a specified velocity. .. math:: \text{head} = \frac{K V^2}{2g} Parameters ---------- K : float Loss coefficient, [] V : float Velocity of fluid in pipe, [m/s] g : float, optional Acceleration due to gravity, [m/s^2] Returns ------- head : float Head loss, [m] Notes ----- Loss coefficient `K` is usually the sum of several factors, including the friction factor. Examples -------- >>> head_from_K(K=10, V=1.5) 1.1471807396001694 ''' return K*0.5*V*V/g
[docs]def head_from_P(P, rho, g=g): r'''Calculates head for a fluid of specified density at specified pressure. .. math:: \text{head} = {P\over{\rho g}} Parameters ---------- P : float Pressure fluid in pipe, [Pa] rho : float Density of fluid, [kg/m^3] g : float, optional Acceleration due to gravity, [m/s^2] Returns ------- head : float Head, [m] Notes ----- By definition. Head varies with location, inversely proportional to the increase in gravitational constant. Examples -------- >>> head_from_P(P=98066.5, rho=1000) 10.000000000000002 ''' return P/rho/g
[docs]def P_from_head(head, rho, g=g): r'''Calculates head for a fluid of specified density at specified pressure. .. math:: P = \rho g \cdot \text{head} Parameters ---------- head : float Head, [m] rho : float Density of fluid, [kg/m^3] g : float, optional Acceleration due to gravity, [m/s^2] Returns ------- P : float Pressure fluid in pipe, [Pa] Notes ----- Examples -------- >>> P_from_head(head=5., rho=800.) 39226.6 ''' return head*rho*g
### Synonyms alpha = thermal_diffusivity # synonym for thermal diffusivity Pr = Prandtl # Synonym # temperature in kelvin zero_Celsius = 273.15 degree_Fahrenheit = 1.0/1.8 # only for differences
[docs]def C2K(C): """Convert Celsius to Kelvin. Parameters ---------- C : float Celsius temperature to be converted, [degC] Returns ------- K : float Equivalent Kelvin temperature, [K] Notes ----- Computes ``K = C + zero_Celsius`` where `zero_Celsius` = 273.15, i.e., (the absolute value of) temperature "absolute zero" as measured in Celsius. Examples -------- >>> C2K(-40) 233.14999999999998 """ return C + zero_Celsius
[docs]def K2C(K): """Convert Kelvin to Celsius. Parameters ---------- K : float Kelvin temperature to be converted. Returns ------- C : float Equivalent Celsius temperature. Notes ----- Computes ``C = K - zero_Celsius`` where `zero_Celsius` = 273.15, i.e., (the absolute value of) temperature "absolute zero" as measured in Celsius. Examples -------- >>> K2C(233.15) -39.99999999999997 """ return K - zero_Celsius
[docs]def F2C(F): """Convert Fahrenheit to Celsius. Parameters ---------- F : float Fahrenheit temperature to be converted. Returns ------- C : float Equivalent Celsius temperature. Notes ----- Computes ``C = (F - 32) / 1.8``. Examples -------- >>> F2C(-40.0) -40.0 """ return (F - 32.0) / 1.8
[docs]def C2F(C): """Convert Celsius to Fahrenheit. Parameters ---------- C : float Celsius temperature to be converted. Returns ------- F : float Equivalent Fahrenheit temperature. Notes ----- Computes ``F = 1.8 * C + 32``. Examples -------- >>> C2F(-40.0) -40.0 """ return 1.8*C + 32.0
[docs]def F2K(F): """Convert Fahrenheit to Kelvin. Parameters ---------- F : float Fahrenheit temperature to be converted. Returns ------- K : float Equivalent Kelvin temperature. Notes ----- Computes ``K = (F - 32)/1.8 + zero_Celsius`` where `zero_Celsius` = 273.15, i.e., (the absolute value of) temperature "absolute zero" as measured in Celsius. Examples -------- >>> F2K(-40) 233.14999999999998 """ return (F - 32.0)/1.8 + zero_Celsius
[docs]def K2F(K): """Convert Kelvin to Fahrenheit. Parameters ---------- K : float Kelvin temperature to be converted. Returns ------- F : float Equivalent Fahrenheit temperature. Notes ----- Computes ``F = 1.8 * (K - zero_Celsius) + 32`` where `zero_Celsius` = 273.15, i.e., (the absolute value of) temperature "absolute zero" as measured in Celsius. Examples -------- >>> K2F(233.15) -39.99999999999996 """ return 1.8*(K - zero_Celsius) + 32.0
[docs]def C2R(C): """Convert Celsius to Rankine. Parameters ---------- C : float Celsius temperature to be converted. Returns ------- Ra : float Equivalent Rankine temperature. Notes ----- Computes ``Ra = 1.8 * (C + zero_Celsius)`` where `zero_Celsius` = 273.15, i.e., (the absolute value of) temperature "absolute zero" as measured in Celsius. Examples -------- >>> C2R(-40) 419.66999999999996 """ return 1.8 * (C + zero_Celsius)
[docs]def K2R(K): """Convert Kelvin to Rankine. Parameters ---------- K : float Kelvin temperature to be converted. Returns ------- Ra : float Equivalent Rankine temperature. Notes ----- Computes ``Ra = 1.8 * K``. Examples -------- >>> K2R(273.15) 491.66999999999996 """ return 1.8 * K
[docs]def F2R(F): """Convert Fahrenheit to Rankine. Parameters ---------- F : float Fahrenheit temperature to be converted. Returns ------- Ra : float Equivalent Rankine temperature. Notes ----- Computes ``Ra = F - 32 + 1.8 * zero_Celsius`` where `zero_Celsius` = 273.15, i.e., (the absolute value of) temperature "absolute zero" as measured in Celsius. Examples -------- >>> F2R(100) 559.67 """ return F - 32.0 + 1.8 * zero_Celsius
[docs]def R2C(Ra): """Convert Rankine to Celsius. Parameters ---------- Ra : float Rankine temperature to be converted. Returns ------- C : float Equivalent Celsius temperature. Notes ----- Computes ``C = Ra / 1.8 - zero_Celsius`` where `zero_Celsius` = 273.15, i.e., (the absolute value of) temperature "absolute zero" as measured in Celsius. Examples -------- >>> R2C(459.67) -17.777777777777743 """ return Ra / 1.8 - zero_Celsius
[docs]def R2K(Ra): """Convert Rankine to Kelvin. Parameters ---------- Ra : float Rankine temperature to be converted. Returns ------- K : float Equivalent Kelvin temperature. Notes ----- Computes ``K = Ra / 1.8``. Examples -------- >>> R2K(491.67) 273.15 """ return Ra / 1.8
[docs]def R2F(Ra): """Convert Rankine to Fahrenheit. Parameters ---------- Ra : float Rankine temperature to be converted. Returns ------- F : float Equivalent Fahrenheit temperature. Notes ----- Computes ``F = Ra + 32 - 1.8 * zero_Celsius`` where `zero_Celsius` = 273.15, i.e., (the absolute value of) temperature "absolute zero" as measured in Celsius. Examples -------- >>> R2F(491.67) 32.00000000000006 """ return Ra - 1.8*zero_Celsius + 32.0
def Engauge_2d_parser(lines, flat=False): """Not exposed function to read a 2D file generated by engauge-digitizer; for curve fitting. """ z_values = [] x_lists = [] y_lists = [] working_xs = [] working_ys = [] new_curve = True for line in lines: if line.strip() == '': new_curve = True elif new_curve: z = float(line.split(',')[1]) z_values.append(z) if working_xs and working_ys: x_lists.append(working_xs) y_lists.append(working_ys) working_xs = [] working_ys = [] new_curve = False else: x, y = (float(i) for i in line.strip().split(',')) working_xs.append(x) working_ys.append(y) x_lists.append(working_xs) y_lists.append(working_ys) if flat: all_zs = [] all_xs = [] all_ys = [] for z, xs, ys in zip(z_values, x_lists, y_lists): for x, y in zip(xs, ys): all_zs.append(z) all_xs.append(x) all_ys.append(y) return all_zs, all_xs, all_ys return z_values, x_lists, y_lists