# Dimensionless numbers (fluids.core)

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 or contact the author at Caleb.Andrew.Bell@gmail.com.

## Dimensionless Numbers

fluids.core.Archimedes(L, rhof, rhop, mu, g=9.80665)

  Calculates Archimedes number, Ar, for a fluid and particle with the given densities, characteristic length, viscosity, and gravity (usually diameter of particle).

  \[Ar = \frac{L^3 \rho_f(\rho_p-\rho_f)g}{\mu^2}\]
  Parameters:
    L `python:float`

      Characteristic length, typically particle diameter [m]

    rhof `python:float`

      Density of fluid, [kg/m^3]

    rhop `python:float`

      Density of particle, [kg/m^3]

    mu `python:float`

      Viscosity of fluid, [N/m]

    g `python:float`, `optional`

      Acceleration due to gravity, [m/s^2]

  Returns:
    Ar `python:float`

      Archimedes number []

  Notes

  Used in fluid-particle interaction calculations.

  \[Ar = \frac{\text{Gravitational force}}{\text{Viscous force}}\]

  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.

  Examples

      >>> Archimedes(0.002, 2., 3000, 1E-3)
      470.4053872

fluids.core.Bejan_L(dP, L, mu, alpha)

  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.

  \[Be_L = \frac{\Delta P L^2}{\mu \alpha}\]
  Parameters:
    dP `python:float`

      Pressure drop, [Pa]

    L `python:float`

      Characteristic length, [m]

    mu `python:float`, `optional`

      Dynamic viscosity, [Pa*s]

    alpha `python:float`

      Thermal diffusivity, [m^2/s]

  Returns:
    Be_L `python:float`

      Bejan number with respect to length []

  Notes

  Termed a dimensionless number by someone in 1988.

  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.

  Examples

      >>> Bejan_L(1E4, 1, 1E-3, 1E-6)
      10000000000000.0

fluids.core.Bejan_p(dP, K, mu, alpha)

  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.

  \[Be_p = \frac{\Delta P K}{\mu \alpha}\]
  Parameters:
    dP `python:float`

      Pressure drop, [Pa]

    K `python:float`

      Permeability, [m^2]

    mu `python:float`

      Dynamic viscosity, [Pa*s]

    alpha `python:float`

      Thermal diffusivity, [m^2/s]

  Returns:
    Be_p `python:float`

      Bejan number with respect to pore characteristics []

  Notes

  Termed a dimensionless number by someone in 1988.

  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.

  Examples

      >>> Bejan_p(1E4, 1, 1E-3, 1E-6)
      10000000000000.0

fluids.core.Biot(h, L, k)

  Calculates Biot number Br for heat transfer coefficient h, geometric length L, and thermal conductivity k.

  \[Bi=\frac{hL}{k}\]
  Parameters:
    h `python:float`

      Heat transfer coefficient, [W/m^2/K]

    L `python:float`

      Characteristic length, no typical definition [m]

    k `python:float`

      Thermal conductivity, within the object [W/m/K]

  Returns:
    Bi `python:float`

      Biot number, [-]

  Notes

  Do not confuse k, the thermal conductivity within the object, with that of the medium h is calculated with!

  \[Bi = \frac{\text{Surface thermal resistance}} {\text{Internal thermal resistance}}\]

  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.

  Examples

      >>> Biot(1000., 1.2, 300.)
      4.0
      >>> Biot(10000., .01, 4000.)
      0.025

fluids.core.Boiling(G, q, Hvap)

  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.

  \[\text{Bg} = \frac{q}{G_{tp} \Delta H_{vap}}\]
  Parameters:
    G `python:float`

      Two-phase mass flux in a channel (combined liquid and vapor) [kg/m^2/s]

    q `python:float`

      Heat flux [W/m^2]

    Hvap `python:float`

      Heat of vaporization of the fluid [J/kg]

  Returns:
    Bg `python:float`

      Boiling number [-]

  Notes

  Most often uses the symbol Bo instead of Bg, but this conflicts with Bond number.

  \[\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.

  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.

  Examples

      >>> Boiling(300, 3000, 800000)
      1.25e-05

fluids.core.Bond(rhol, rhog, sigma, L)

  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).

  \[Bo = \frac{g(\rho_l-\rho_g)L^2}{\sigma}\]
  Parameters:
    rhol `python:float`

      Density of liquid, [kg/m^3]

    rhog `python:float`

      Density of gas, [kg/m^3]

    sigma `python:float`

      Surface tension, [N/m]

    L `python:float`

      Characteristic length, [m]

  Returns:
    Bo `python:float`

      Bond number []

  References

  [1]

  Green, Don, and Robert Perry. Perry’s Chemical Engineers’ Handbook, Eighth Edition. McGraw-Hill Professional, 2007.

  Examples

      >>> Bond(1000., 1.2, .0589, 2)
      665187.2339558573

fluids.core.Capillary(V, mu, sigma)

  Calculates Capillary number Ca for a characteristic velocity V, viscosity mu, and surface tension sigma.

  \[Ca = \frac{V \mu}{\sigma}\]
  Parameters:
    V `python:float`

      Characteristic velocity, [m/s]

    mu `python:float`

      Dynamic viscosity, [Pa*s]

    sigma `python:float`

      Surface tension, [N/m]

  Returns:
    Ca `python:float`

      Capillary number, [-]

  Notes

  Used in porous media calculations and film flow calculations. Surface tension may gas-liquid, or liquid-liquid.

  \[Ca = \frac{\text{Viscous forces}} {\text{Surface forces}}\]

  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.

  Examples

      >>> Capillary(1.2, 0.01, .1)
      0.12

fluids.core.Cavitation(P, Psat, rho, V)

  Calculates Cavitation number or Ca for a fluid of velocity V with a pressure P, vapor pressure Psat, and density rho.

  \[Ca = \sigma_c = \sigma = \frac{P-P_{sat}}{\frac{1}{2}\rho V^2}\]
  Parameters:
    P `python:float`

      Internal pressure of the fluid, [Pa]

    Psat `python:float`

      Vapor pressure of the fluid, [Pa]

    rho `python:float`

      Density of the fluid, [kg/m^3]

    V `python:float`

      Velocity of fluid, [m/s]

  Returns:
    Ca `python:float`

      Cavitation number []

  Notes

  Used in determining if a flow through a restriction will cavitate. Sometimes, the multiplication by 2 will be omitted;

  \[Ca = \frac{\text{Pressure - Vapor pressure}} {\text{Inertial pressure}}\]

  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.

  Examples

      >>> Cavitation(2E5, 1E4, 1000, 10)
      3.8

fluids.core.Confinement(D, rhol, rhog, sigma, g=9.80665)

  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.

  \[\text{Co}=\frac{\left[\frac{\sigma}{g(\rho_l-\rho_g)}\right]^{0.5}}{D}\]
  Parameters:
    D `python:float`

      Diameter of channel, [m]

    rhol `python:float`

      Density of liquid phase, [kg/m^3]

    rhog `python:float`

      Density of gas phase, [kg/m^3]

    sigma `python:float`

      Surface tension between liquid-gas phase, [N/m]

    g `python:float`, `optional`

      Acceleration due to gravity, [m/s^2]

  Returns:
    Co `python:float`

      Confinement number [-]

  Notes

  Used in two-phase pressure drop and heat transfer correlations. First used in [1] according to [3].

  \[\text{Co} = \frac{\frac{\text{surface tension force}} {\text{buoyancy force}}}{\text{Channel area}}\]

  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.

  Examples

      >>> Confinement(0.001, 1077, 76.5, 4.27E-3)
      0.6596978265315191

fluids.core.Dean(Re, Di, D)

  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.

  \[\text{De} = \sqrt{\frac{D_i}{D}} \text{Re} = \sqrt{\frac{D_i}{D}} \frac{\rho v D}{\mu}\]
  Parameters:
    Re `python:float`

      Reynolds number []

    Di `python:float`

      Inner diameter []

    D `python:float`

      Diameter of curvature or outer spiral or other dimension []

  Returns:
    De `python:float`

      Dean number [-]

  Notes

  Used in flow in curved geometry.

  \[\text{De} = \frac{\sqrt{\text{centripetal forces}\cdot \text{inertial forces}}}{\text{viscous forces}}\]

  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.

  Examples

      >>> Dean(10000, 0.1, 0.4)
      5000.0

fluids.core.Drag(F, A, V, rho)

  Calculates drag coefficient Cd for a given drag force F, projected area A, characteristic velocity V, and density rho.

  \[C_D = \frac{F_d}{A\cdot\frac{1}{2}\rho V^2}\]
  Parameters:
    F `python:float`

      Drag force, [N]

    A `python:float`

      Projected area, [m^2]

    V `python:float`

      Characteristic velocity, [m/s]

    rho `python:float`

      Density, [kg/m^3]

  Returns:
    Cd `python:float`

      Drag coefficient, [-]

  Notes

  Used in flow around objects, or objects flowing within a fluid.

  \[C_D = \frac{\text{Drag forces}}{\text{Projected area}\cdot \text{Velocity head}}\]

  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.

  Examples

      >>> Drag(1000, 0.0001, 5, 2000)
      400.0

fluids.core.Eckert(V, Cp, dT)

  Calculates Eckert number or Ec for a fluid of velocity V with a heat capacity Cp, between two temperature given as dT.

  \[Ec = \frac{V^2}{C_p \Delta T}\]
  Parameters:
    V `python:float`

      Velocity of fluid, [m/s]

    Cp `python:float`

      Heat capacity of the fluid, [J/kg/K]

    dT `python:float`

      Temperature difference, [K]

  Returns:
    Ec `python:float`

      Eckert number []

  Notes

  Used in certain heat transfer calculations. Fairly rare.

  \[Ec = \frac{\text{Kinetic energy} }{ \text{Enthalpy difference}}\]

  References

  [1]

  Goldstein, Richard J. ECKERT NUMBER. Thermopedia. Hemisphere, 2011. 10.1615/AtoZ.e.eckert_number

  Examples

      >>> Eckert(10, 2000., 25.)
      0.002

fluids.core.Euler(dP, rho, V)

  Calculates Euler number or Eu for a fluid of velocity V and density rho experiencing a pressure drop dP.

  \[Eu = \frac{\Delta P}{\rho V^2}\]
  Parameters:
    dP `python:float`

      Pressure drop experience by the fluid, [Pa]

    rho `python:float`

      Density of the fluid, [kg/m^3]

    V `python:float`

      Velocity of fluid, [m/s]

  Returns:
    Eu `python: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.

  \[Eu = \frac{\text{Pressure drop}}{2\cdot \text{velocity head}}\]

  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.

  Examples

      >>> Euler(1E5, 1000., 4)
      6.25

fluids.core.Fourier_heat(t, L, rho=None, Cp=None, k=None, alpha=None)

  Calculates heat transfer Fourier number or Fo for a specified time t, characteristic length L, and specified properties for the given fluid.

  \[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 `python:float`

      time [s]

    L `python:float`

      Characteristic length [m]

    rho `python:float`, `optional`

      Density, [kg/m^3]

    Cp `python:float`, `optional`

      Heat capacity, [J/kg/K]

    k `python:float`, `optional`

      Thermal conductivity, [W/m/K]

    alpha `python:float`, `optional`

      Thermal diffusivity, [m^2/s]

  Returns:
    Fo `python:float`

      Fourier number (heat) []

  Notes

  \[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.

  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.

  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

fluids.core.Fourier_mass(t, L, D)

  Calculates mass transfer Fourier number or Fo for a specified time t, characteristic length L, and diffusion coefficient D.

  \[Fo = \frac{D t}{L^2}\]
  Parameters:
    t `python:float`

      time [s]

    L `python:float`

      Characteristic length [m]

    D `python:float`

      Diffusivity of a species, [m^2/s]

  Returns:
    Fo `python:float`

      Fourier number (mass) []

  Notes

  \[Fo = \frac{\text{Diffusive transport rate}}{\text{Storage rate}}\]

  References

  [1]

  Green, Don, and Robert Perry. Perry’s Chemical Engineers’ Handbook, Eighth Edition. McGraw-Hill Professional, 2007.

  Examples

      >>> Fourier_mass(t=1.5, L=2, D=1E-9)
      3.7500000000000005e-10

fluids.core.Froude(V, L, g=9.80665, squared=False)

  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.

  \[Fr = \frac{V}{\sqrt{gL}}\]
  Parameters:
    V `python:float`

      Velocity of the particle or fluid, [m/s]

    L `python:float`

      Characteristic length, no typical definition [m]

    g `python:float`, `optional`

      Acceleration due to gravity, [m/s^2]

    squared bool, `optional`

      Whether to return the squared form of Froude number

  Returns:
    Fr `python:float`

      Froude number, [-]

  Notes

  Many alternate definitions including density ratios have been used.

  \[Fr = \frac{\text{Inertial Force}}{\text{Gravity Force}}\]

  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.

  Examples

      >>> Froude(1.83, L=2., g=1.63)
      1.0135432593877318
      >>> Froude(1.83, L=2., squared=True)
      0.17074638128208924

fluids.core.Froude_densimetric(V, L, rho1, rho2, heavy=True, g=9.80665)

  Calculates the densimetric Froude number \(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.

  \[Fr = \frac{V}{\sqrt{gL}} \sqrt{\frac{\rho_\text{(1 or 2)}} {\rho_1 - \rho_2}}\]
  Parameters:
    V `python:float`

      Velocity of the specified phase, [m/s]

    L `python:float`

      Characteristic length, no typical definition [m]

    rho1 `python:float`

      Density of the heavier phase, [kg/m^3]

    rho2 `python: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 `python:float`, `optional`

      Acceleration due to gravity, [m/s^2]

  Returns:
    Fr_den `python:float`

      Densimetric Froude number, [-]

  Notes

  Many alternate definitions including density ratios have been used.

  \[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.

  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.

  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

fluids.core.Graetz_heat(V, D, x, rho=None, Cp=None, k=None, alpha=None)

  Calculates Graetz number or Gz for a specified velocity V, diameter D, axial distance x, and specified properties for the given fluid.

  \[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 `python:float`

      Velocity, [m/s]

    D `python:float`

      Diameter [m]

    x `python:float`

      Axial distance [m]

    rho `python:float`, `optional`

      Density, [kg/m^3]

    Cp `python:float`, `optional`

      Heat capacity, [J/kg/K]

    k `python:float`, `optional`

      Thermal conductivity, [W/m/K]

    alpha `python:float`, `optional`

      Thermal diffusivity, [m^2/s]

  Returns:
    Gz `python:float`

      Graetz number []

  Notes

  \[Gz = \frac{\text{Time for radial heat diffusion in a fluid by conduction}} {\text{Time taken by fluid to reach distance x}}\]
  \[Gz = \frac{D}{x}RePr\]

  An error is raised if none of the required input sets are provided.

  References

  [1]

  Bergman, Theodore L., Adrienne S. Lavine, Frank P. Incropera, and David P. DeWitt. Introduction to Heat Transfer. 6E. Hoboken, NJ: Wiley, 2011.

  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

fluids.core.Grashof(L, beta, T1, T2=0, rho=None, mu=None, nu=None, g=9.80665)

  Calculates Grashof number or Gr for a fluid with the given properties, temperature difference, and characteristic length.

  \[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 `python:float`

      Characteristic length [m]

    beta `python:float`

      Volumetric thermal expansion coefficient [1/K]

    T1 `python:float`

      Temperature 1, usually a film temperature [K]

    T2 `python:float`, `optional`

      Temperature 2, usually a bulk temperature (or 0 if only a difference is provided to the function) [K]

    rho `python:float`, `optional`

      Density, [kg/m^3]

    mu `python:float`, `optional`

      Dynamic viscosity, [Pa*s]

    nu `python:float`, `optional`

      Kinematic viscosity, [m^2/s]

    g `python:float`, `optional`

      Acceleration due to gravity, [m/s^2]

  Returns:
    Gr `python:float`

      Grashof number []

  Notes

  \[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.

  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.

  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

fluids.core.Hagen(Re, fd)

  Calculates Hagen number, Hg, for a fluid with the given Reynolds number and friction factor.

  \[\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 `python:float`

      Reynolds number [-]

    fd `python:float`, `optional`

      Darcy friction factor, [-]

  Returns:
    Hg `python: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.

  References

  [1] (1,2)

  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.

  Examples

  Example from [3]:

      >>> Hagen(Re=2610, fd=1.935235)
      6591507.17175

fluids.core.Jakob(Cp, Hvap, Te)

  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.

  \[Ja = \frac{C_{P}\Delta T_e}{\Delta H_{vap}}\]
  Parameters:
    Cp `python:float`

      Heat capacity of the fluid, [J/kg/K]

    Hvap `python:float`

      Enthalpy of vaporization of the fluid at its saturation temperature [J/kg]

    Te `python:float`

      Temperature difference above the fluid’s saturation boiling temperature, [K]

  Returns:
    Ja `python:float`

      Jakob number []

  Notes

  Used in boiling heat transfer analysis. Fairly rare.

  \[Ja = \frac{\Delta \text{Sensible heat}}{\Delta \text{Latent heat}}\]

  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.

  Examples

      >>> Jakob(4000., 2E6, 10.)
      0.02

fluids.core.Knudsen(path, L)

  Calculates Knudsen number or Kn for a fluid with mean free path path and for a characteristic length L.

  \[Kn = \frac{\lambda}{L}\]
  Parameters:
    path `python:float`

      Mean free path between molecular collisions, [m]

    L `python:float`

      Characteristic length, [m]

  Returns:
    Kn `python:float`

      Knudsen number []

  Notes

  Used in mass transfer calculations.

  \[Kn = \frac{\text{Mean free path length}}{\text{Characteristic length}}\]

  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.

  Examples

      >>> Knudsen(1e-10, .001)
      1e-07

fluids.core.Lewis(D=None, alpha=None, Cp=None, k=None, rho=None)

  Calculates Lewis number or Le for a fluid with the given parameters.

  \[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 `python:float`

      Diffusivity of a species, [m^2/s]

    alpha `python:float`, `optional`

      Thermal diffusivity, [m^2/s]

    Cp `python:float`, `optional`

      Heat capacity, [J/kg/K]

    k `python:float`, `optional`

      Thermal conductivity, [W/m/K]

    rho `python:float`, `optional`

      Density, [kg/m^3]

  Returns:
    Le `python:float`

      Lewis number []

  Notes

  \[Le=\frac{\text{Thermal diffusivity}}{\text{Mass diffusivity}} = \frac{Sc}{Pr}\]

  An error is raised if none of the required input sets are provided.

  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.

  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

fluids.core.Mach(V, c)

  Calculates Mach number or Ma for a fluid of velocity V with speed of sound c.

  \[Ma = \frac{V}{c}\]
  Parameters:
    V `python:float`

      Velocity of fluid, [m/s]

    c `python:float`

      Speed of sound in fluid, [m/s]

  Returns:
    Ma `python:float`

      Mach number []

  Notes

  Used in compressible flow calculations.

  \[Ma = \frac{\text{fluid velocity}}{\text{sonic velocity}}\]

  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.

  Examples

      >>> Mach(33., 330)
      0.1

fluids.core.Morton(rhol, rhog, mul, sigma, g=9.80665)

  Calculates Morton number or Mo for a liquid and vapor with the specified properties, under the influence of gravitational force g.

  \[Mo = \frac{g \mu_l^4(\rho_l - \rho_g)}{\rho_l^2 \sigma^3}\]
  Parameters:
    rhol `python:float`

      Density of liquid phase, [kg/m^3]

    rhog `python:float`

      Density of gas phase, [kg/m^3]

    mul `python:float`

      Viscosity of liquid phase, [Pa*s]

    sigma `python:float`

      Surface tension between liquid-gas phase, [N/m]

    g `python:float`, `optional`

      Acceleration due to gravity, [m/s^2]

  Returns:
    Mo `python:float`

      Morton number, [-]

  Notes

  Used in modeling bubbles in liquid.

  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.

  Examples

      >>> Morton(1077.0, 76.5, 4.27E-3, 0.023)
      2.311183104430743e-07

fluids.core.Nusselt(h, L, k)

  Calculates Nusselt number Nu for a heat transfer coefficient h, characteristic length L, and thermal conductivity k.

  \[Nu = \frac{hL}{k}\]
  Parameters:
    h `python:float`

      Heat transfer coefficient, [W/m^2/K]

    L `python:float`

      Characteristic length, no typical definition [m]

    k `python:float`

      Thermal conductivity of fluid [W/m/K]

  Returns:
    Nu `python:float`

      Nusselt number, [-]

  Notes

  Do not confuse k, the thermal conductivity of the fluid, with that of within a solid object associated with!

  \[Nu = \frac{\text{Convective heat transfer}} {\text{Conductive heat transfer}}\]

  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.

  Examples

      >>> Nusselt(1000., 1.2, 300.)
      4.0
      >>> Nusselt(10000., .01, 4000.)
      0.025

fluids.core.Ohnesorge(L, rho, mu, sigma)

  Calculates Ohnesorge number, Oh, for a fluid with the given characteristic length, density, viscosity, and surface tension.

  \[\text{Oh} = \frac{\mu}{\sqrt{\rho \sigma L }}\]
  Parameters:
    L `python:float`

      Characteristic length [m]

    rho `python:float`

      Density of fluid, [kg/m^3]

    mu `python:float`

      Viscosity of fluid, [Pa*s]

    sigma `python:float`

      Surface tension, [N/m]

  Returns:
    Oh `python:float`

      Ohnesorge number []

  Notes

  Often used in spray calculations. Sometimes given the symbol Z.

  \[Oh = \frac{\sqrt{\text{We}}}{\text{Re}}= \frac{\text{viscous forces}} {\sqrt{\text{Inertia}\cdot\text{Surface tension}} }\]

  References

  [1]

  Green, Don, and Robert Perry. Perry’s Chemical Engineers’ Handbook, Eighth Edition. McGraw-Hill Professional, 2007.

  Examples

      >>> Ohnesorge(1E-4, 1000., 1E-3, 1E-1)
      0.01

fluids.core.Peclet_heat(V, L, rho=None, Cp=None, k=None, alpha=None)

  Calculates heat transfer Peclet number or Pe for a specified velocity V, characteristic length L, and specified properties for the given fluid.

  \[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 `python:float`

      Velocity [m/s]

    L `python:float`

      Characteristic length [m]

    rho `python:float`, `optional`

      Density, [kg/m^3]

    Cp `python:float`, `optional`

      Heat capacity, [J/kg/K]

    k `python:float`, `optional`

      Thermal conductivity, [W/m/K]

    alpha `python:float`, `optional`

      Thermal diffusivity, [m^2/s]

  Returns:
    Pe `python:float`

      Peclet number (heat) []

  Notes

  \[Pe = \frac{\text{Bulk heat transfer}}{\text{Conduction heat transfer}}\]

  An error is raised if none of the required input sets are provided.

  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.

  Examples

      >>> Peclet_heat(1.5, 2, 1000., 4000., 0.6)
      20000000.0
      >>> Peclet_heat(1.5, 2, alpha=1E-7)
      30000000.0

fluids.core.Peclet_mass(V, L, D)

  Calculates mass transfer Peclet number or Pe for a specified velocity V, characteristic length L, and diffusion coefficient D.

  \[Pe = \frac{L V}{D}\]
  Parameters:
    V `python:float`

      Velocity [m/s]

    L `python:float`

      Characteristic length [m]

    D `python:float`

      Diffusivity of a species, [m^2/s]

  Returns:
    Pe `python:float`

      Peclet number (mass) []

  Notes

  \[Pe = \frac{\text{Advective transport rate}}{\text{Diffusive transport rate}}\]

  References

  [1]

  Green, Don, and Robert Perry. Perry’s Chemical Engineers’ Handbook, Eighth Edition. McGraw-Hill Professional, 2007.

  Examples

      >>> Peclet_mass(1.5, 2, 1E-9)
      3000000000.0

fluids.core.Power_number(P, L, N, rho)

  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.

  \[Po = \frac{P}{\rho N^3 D^5}\]
  Parameters:
    P `python:float`

      Power applied, [W]

    L `python:float`

      Characteristic length, typically agitator diameter [m]

    N `python:float`

      Speed [revolutions/second]

    rho `python:float`

      Density of fluid, [kg/m^3]

  Returns:
    Po `python:float`

      Power number []

  Notes

  Used in mixing calculations.

  \[Po = \frac{\text{Power}}{\text{Rotational inertia}}\]

  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.

  Examples

      >>> Power_number(P=180, L=0.01, N=2.5, rho=800.)
      144000000.0

fluids.core.Prandtl(Cp=None, k=None, mu=None, nu=None, rho=None, alpha=None)

  Calculates Prandtl number or Pr for a fluid with the given parameters.

  \[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 `python:float`

      Heat capacity, [J/kg/K]

    k `python:float`

      Thermal conductivity, [W/m/K]

    mu `python:float`, `optional`

      Dynamic viscosity, [Pa*s]

    nu `python:float`, `optional`

      Kinematic viscosity, [m^2/s]

    rho `python:float`

      Density, [kg/m^3]

    alpha `python:float`

      Thermal diffusivity, [m^2/s]

  Returns:
    Pr `python:float`

      Prandtl number []

  Notes

  \[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.

  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.

  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

fluids.core.Rayleigh(Pr, Gr)

  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.

  \[Ra = PrGr\]
  Parameters:
    Pr `python:float`

      Prandtl number []

    Gr `python:float`

      Grashof number []

  Returns:
    Ra `python:float`

      Rayleigh number []

  Notes

  Used in free convection problems only.

  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.

  Examples

      >>> Rayleigh(1.2, 4.6E9)
      5520000000.0

fluids.core.relative_roughness(D, roughness=1.52e-06)

  Calculates relative roughness eD using a diameter and the roughness of the material of the wall. Default roughness is that of steel.

  \[eD=\frac{\epsilon}{D}\]
  Parameters:
    D `python:float`

      Diameter of pipe, [m]

    roughness `python:float`, `optional`

      Roughness of pipe wall [m]

  Returns:
    eD `python:float`

      Relative Roughness, [-]

  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.

  Examples

      >>> relative_roughness(0.5, 1E-4)
      0.0002

fluids.core.Reynolds(V, D, rho=None, mu=None, nu=None)

  Calculates Reynolds number or Re for a fluid with the given properties for the specified velocity and diameter.

  \[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 `python:float`

      Velocity [m/s]

    D `python:float`

      Diameter [m]

    rho `python:float`, `optional`

      Density, [kg/m^3]

    mu `python:float`, `optional`

      Dynamic viscosity, [Pa*s]

    nu `python:float`, `optional`

      Kinematic viscosity, [m^2/s]

  Returns:
    Re `python:float`

      Reynolds number []

  Notes

  \[Re = \frac{\text{Momentum}}{\text{Viscosity}}\]

  An error is raised if none of the required input sets are provided.

  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.

  Examples

      >>> Reynolds(2.5, 0.25, 1.1613, 1.9E-5)
      38200.65789473684
      >>> Reynolds(2.5, 0.25, nu=1.636e-05)
      38202.93398533008

fluids.core.Schmidt(D, mu=None, nu=None, rho=None)

  Calculates Schmidt number or Sc for a fluid with the given parameters.

  \[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 `python:float`

      Diffusivity of a species, [m^2/s]

    mu `python:float`, `optional`

      Dynamic viscosity, [Pa*s]

    nu `python:float`, `optional`

      Kinematic viscosity, [m^2/s]

    rho `python:float`, `optional`

      Density, [kg/m^3]

  Returns:
    Sc `python:float`

      Schmidt number []

  Notes

  \[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.

  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.

  Examples

      >>> Schmidt(D=2E-6, mu=4.61E-6, rho=800)
      0.00288125
      >>> Schmidt(D=1E-9, nu=6E-7)
      599.9999999999999

fluids.core.Sherwood(K, L, D)

  Calculates Sherwood number Sh for a mass transfer coefficient K, characteristic length L, and diffusivity D.

  \[Sh = \frac{KL}{D}\]
  Parameters:
    K `python:float`

      Mass transfer coefficient, [m/s]

    L `python:float`

      Characteristic length, no typical definition [m]

    D `python:float`

      Diffusivity of a species [m/s^2]

  Returns:
    Sh `python:float`

      Sherwood number, [-]

  Notes

  \[Sh = \frac{\text{Mass transfer by convection}} {\text{Mass transfer by diffusion}} = \frac{K}{D/L}\]

  References

  [1]

  Green, Don, and Robert Perry. Perry’s Chemical Engineers’ Handbook, Eighth Edition. McGraw-Hill Professional, 2007.

  Examples

      >>> Sherwood(1000., 1.2, 300.)
      4.0

fluids.core.Stanton(h, V, rho, Cp)

  Calculates Stanton number or St for a specified heat transfer coefficient h, velocity V, density rho, and heat capacity Cp [1] [2].

  \[St = \frac{h}{V\rho Cp}\]
  Parameters:
    h `python:float`

      Heat transfer coefficient, [W/m^2/K]

    V `python:float`

      Velocity, [m/s]

    rho `python:float`

      Density, [kg/m^3]

    Cp `python:float`

      Heat capacity, [J/kg/K]

  Returns:
    St `python:float`

      Stanton number []

  Notes

  \[St = \frac{\text{Heat transfer coefficient}}{\text{Thermal capacity}}\]

  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.

  Examples

      >>> Stanton(5000, 5, 800, 2000.)
      0.000625

fluids.core.Stokes_number(V, Dp, D, rhop, mu)

  Calculates Stokes Number for a given characteristic velocity V, particle diameter Dp, characteristic diameter D, particle density rhop, and fluid viscosity mu.

  \[\text{Stk} = \frac{\rho_p V D_p^2}{18\mu_f D}\]
  Parameters:
    V `python:float`

      Characteristic velocity (often superficial), [m/s]

    Dp `python:float`

      Particle diameter, [m]

    D `python:float`

      Characteristic diameter (ex demister wire diameter or cyclone diameter), [m]

    rhop `python:float`

      Particle density, [kg/m^3]

    mu `python:float`

      Fluid viscosity, [Pa*s]

  Returns:
    Stk `python:float`

      Stokes numer, [-]

  Notes

  Used in droplet impaction or collection studies.

  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.

  Examples

      >>> Stokes_number(V=0.9, Dp=1E-5, D=1E-3, rhop=1000, mu=1E-5)
      0.5

fluids.core.Strouhal(f, L, V)

  Calculates Strouhal number St for a characteristic frequency f, characteristic length L, and velocity V.

  \[St = \frac{fL}{V}\]
  Parameters:
    f `python:float`

      Characteristic frequency, usually that of vortex shedding, [Hz]

    L `python:float`

      Characteristic length, [m]

    V `python:float`

      Velocity of the fluid, [m/s]

  Returns:
    St `python:float`

      Strouhal number, [-]

  Notes

  Sometimes abbreviated to S or Sr.

  \[St = \frac{\text{Characteristic flow time}} {\text{Period of oscillation}}\]

  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.

  Examples

      >>> Strouhal(8, 2., 4.)
      4.0

fluids.core.Suratman(L, rho, mu, sigma)

  Calculates Suratman number, Su, for a fluid with the given characteristic length, density, viscosity, and surface tension.

  \[\text{Su} = \frac{\rho\sigma L}{\mu^2}\]
  Parameters:
    L `python:float`

      Characteristic length [m]

    rho `python:float`

      Density of fluid, [kg/m^3]

    mu `python:float`

      Viscosity of fluid, [Pa*s]

    sigma `python:float`

      Surface tension, [N/m]

  Returns:
    Su `python: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.

  \[\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].

  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.

  Examples

      >>> Suratman(1E-4, 1000., 1E-3, 1E-1)
      10000.0

fluids.core.Weber(V, L, rho, sigma)

  Calculates Weber number, We, for a fluid with the given density, surface tension, velocity, and geometric parameter (usually diameter of bubble).

  \[We = \frac{V^2 L\rho}{\sigma}\]
  Parameters:
    V `python:float`

      Velocity of fluid, [m/s]

    L `python:float`

      Characteristic length, typically bubble diameter [m]

    rho `python:float`

      Density of fluid, [kg/m^3]

    sigma `python:float`

      Surface tension, [N/m]

  Returns:
    We `python:float`

      Weber number []

  Notes

  Used in bubble calculations.

  \[We = \frac{\text{inertial force}}{\text{surface tension force}}\]

  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.

  Examples

      >>> Weber(V=0.18, L=0.001, rho=900., sigma=0.01)
      2.916

## Loss Coefficient Converters

fluids.core.K_from_f(fd, L, D)

  Calculates loss coefficient, K, for a given section of pipe at a specified friction factor.

  \[K = f_dL/D\]
  Parameters:
    fd `python:float`

      friction factor of pipe, []

    L `python:float`

      Length of pipe, [m]

    D `python:float`

      Inner diameter of pipe, [m]

  Returns:
    K `python: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

fluids.core.K_from_L_equiv(L_D, fd=0.015)

  Calculates loss coefficient, for a given equivalent length (L/D).

  \[K = f_d \frac{L}{D}\]
  Parameters:
    L_D `python:float`

      Length over diameter, []

    fd `python:float`, `optional`

      Darcy friction factor, [-]

  Returns:
    K `python: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

fluids.core.L_equiv_from_K(K, fd=0.015)

  Calculates equivalent length of pipe (L/D), for a given loss coefficient.

  \[\frac{L}{D} = \frac{K}{f_d}\]
  Parameters:
    K `python:float`

      Loss coefficient, [-]

    fd `python:float`, `optional`

      Darcy friction factor, [-]

  Returns:
    L_D `python: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

fluids.core.L_from_K(K, D, fd=0.015)

  Calculates the length of straight pipe at a specified friction factor required to produce a given loss coefficient K.

  \[L = \frac{K D}{f_d}\]
  Parameters:
    K `python:float`

      Loss coefficient, []

    D `python:float`

      Inner diameter of pipe, [m]

    fd `python:float`

      friction factor of pipe, []

  Returns:
    L `python:float`

      Length of pipe, [m]

  Examples

      >>> L_from_K(K=6, D=.3, fd=0.018)
      100.0

fluids.core.dP_from_K(K, rho, V)

  Calculates pressure drop, for a given loss coefficient, at a specified density and velocity.

  \[dP = 0.5K\rho V^2\]
  Parameters:
    K `python:float`

      Loss coefficient, []

    rho `python:float`

      Density of fluid, [kg/m^3]

    V `python:float`

      Velocity of fluid in pipe, [m/s]

  Returns:
    dP `python: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

fluids.core.head_from_K(K, V, g=9.80665)

  Calculates head loss, for a given loss coefficient, at a specified velocity.

  \[\text{head} = \frac{K V^2}{2g}\]
  Parameters:
    K `python:float`

      Loss coefficient, []

    V `python:float`

      Velocity of fluid in pipe, [m/s]

    g `python:float`, `optional`

      Acceleration due to gravity, [m/s^2]

  Returns:
    head `python: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

fluids.core.head_from_P(P, rho, g=9.80665)

  Calculates head for a fluid of specified density at specified pressure.

  \[\text{head} = {P\over{\rho g}}\]
  Parameters:
    P `python:float`

      Pressure fluid in pipe, [Pa]

    rho `python:float`

      Density of fluid, [kg/m^3]

    g `python:float`, `optional`

      Acceleration due to gravity, [m/s^2]

  Returns:
    head `python: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

fluids.core.f_from_K(K, L, D)

  Calculates friction factor, fd, from a loss coefficient, K, for a given section of pipe.

  \[f_d = \frac{K D}{L}\]
  Parameters:
    K `python:float`

      Loss coefficient, []

    L `python:float`

      Length of pipe, [m]

    D `python:float`

      Inner diameter of pipe, [m]

  Returns:
    fd `python: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

fluids.core.P_from_head(head, rho, g=9.80665)

  Calculates head for a fluid of specified density at specified pressure.

  \[P = \rho g \cdot \text{head}\]
  Parameters:
    head `python:float`

      Head, [m]

    rho `python:float`

      Density of fluid, [kg/m^3]

    g `python:float`, `optional`

      Acceleration due to gravity, [m/s^2]

  Returns:
    P `python:float`

      Pressure fluid in pipe, [Pa]

  Examples

      >>> P_from_head(head=5., rho=800.)
      39226.6

## 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.

fluids.core.C2K(C)

  Convert Celsius to Kelvin.

  Parameters:
    C `python:float`

      Celsius temperature to be converted, [degC]

  Returns:
    K `python: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

fluids.core.K2C(K)

  Convert Kelvin to Celsius.

  Parameters:
    K `python:float`

      Kelvin temperature to be converted.

  Returns:
    C `python: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

fluids.core.F2C(F)

  Convert Fahrenheit to Celsius.

  Parameters:
    F `python:float`

      Fahrenheit temperature to be converted.

  Returns:
    C `python:float`

      Equivalent Celsius temperature.

  Notes

  Computes `C = (F - 32) / 1.8`.

  Examples

      >>> F2C(-40.0)
      -40.0

fluids.core.C2F(C)

  Convert Celsius to Fahrenheit.

  Parameters:
    C `python:float`

      Celsius temperature to be converted.

  Returns:
    F `python:float`

      Equivalent Fahrenheit temperature.

  Notes

  Computes `F = 1.8 * C + 32`.

  Examples

      >>> C2F(-40.0)
      -40.0

fluids.core.F2K(F)

  Convert Fahrenheit to Kelvin.

  Parameters:
    F `python:float`

      Fahrenheit temperature to be converted.

  Returns:
    K `python: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

fluids.core.K2F(K)

  Convert Kelvin to Fahrenheit.

  Parameters:
    K `python:float`

      Kelvin temperature to be converted.

  Returns:
    F `python: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

fluids.core.C2R(C)

  Convert Celsius to Rankine.

  Parameters:
    C `python:float`

      Celsius temperature to be converted.

  Returns:
    Ra `python: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

fluids.core.K2R(K)

  Convert Kelvin to Rankine.

  Parameters:
    K `python:float`

      Kelvin temperature to be converted.

  Returns:
    Ra `python:float`

      Equivalent Rankine temperature.

  Notes

  Computes `Ra = 1.8 * K`.

  Examples

      >>> K2R(273.15)
      491.66999999999996

fluids.core.F2R(F)

  Convert Fahrenheit to Rankine.

  Parameters:
    F `python:float`

      Fahrenheit temperature to be converted.

  Returns:
    Ra `python: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

fluids.core.R2C(Ra)

  Convert Rankine to Celsius.

  Parameters:
    Ra `python:float`

      Rankine temperature to be converted.

  Returns:
    C `python: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

fluids.core.R2K(Ra)

  Convert Rankine to Kelvin.

  Parameters:
    Ra `python:float`

      Rankine temperature to be converted.

  Returns:
    K `python:float`

      Equivalent Kelvin temperature.

  Notes

  Computes `K = Ra / 1.8`.

  Examples

      >>> R2K(491.67)
      273.15

fluids.core.R2F(Ra)

  Convert Rankine to Fahrenheit.

  Parameters:
    Ra `python:float`

      Rankine temperature to be converted.

  Returns:
    F `python: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

## Miscellaneous Functions

fluids.core.thermal_diffusivity(k, rho, Cp)

  Calculates thermal diffusivity or alpha for a fluid with the given parameters.

  \[\alpha = \frac{k}{\rho Cp}\]
  Parameters:
    k `python:float`

      Thermal conductivity, [W/m/K]

    rho `python:float`

      Density, [kg/m^3]

    Cp `python:float`

      Heat capacity, [J/kg/K]

  Returns:
    alpha `python:float`

      Thermal diffusivity, [m^2/s]

  References

  [1]

  Blevins, Robert D. Applied Fluid Dynamics Handbook. New York, N.Y.: Van Nostrand Reinhold Co., 1984.

  Examples

      >>> thermal_diffusivity(k=0.02, rho=1., Cp=1000.)
      2e-05

fluids.core.c_ideal_gas(T, k, MW)

  Calculates speed of sound c in an ideal gas at temperature T.

  \[c = \sqrt{kR_{specific}T}\]
  Parameters:
    T `python:float`

      Temperature of fluid, [K]

    k `python:float`

      Isentropic exponent of fluid, [-]

    MW `python:float`

      Molecular weight of fluid, [g/mol]

  Returns:
    c `python: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:

  \[R_{specific} = R\frac{1000}{MW}\]

  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.

  Examples

      >>> c_ideal_gas(T=303, k=1.4, MW=28.96)
      348.9820953185441

fluids.core.nu_mu_converter(rho, mu=None, nu=None)

  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.

  \[\nu = \frac{\mu}{\rho}\]
  \[\mu = \nu\rho\]
  Parameters:
    rho `python:float`

      Density, [kg/m^3]

    mu `python:float`, `optional`

      Dynamic viscosity, [Pa*s]

    nu `python:float`, `optional`

      Kinematic viscosity, [m^2/s]

  Returns:
    mu or nu `python:float`

      Dynamic viscosity, Pa*s or Kinematic viscosity, m^2/s

  References

  [1]

  Cengel, Yunus, and John Cimbala. Fluid Mechanics: Fundamentals and Applications. Boston: McGraw Hill Higher Education, 2006.

  Examples

      >>> nu_mu_converter(998., nu=1.0E-6)
      0.000998

fluids.core.gravity(latitude, H)

  Calculates local acceleration due to gravity g according to [1]. Uses latitude and height to calculate g.

  \[g = 9.780356(1 + 0.0052885\sin^2\phi - 0.0000059^22\phi) - 3.086\times 10^{-6} H\]
  Parameters:
    latitude `python:float`

      Degrees, [degrees]

    H `python:float`

      Height above earth’s surface [m]

  Returns:
    g `python:float`

      Acceleration due to gravity, [m/s^2]

  Notes

  Better models, such as EGM2008 exist.

  References

  [1]

  Haynes, W.M., Thomas J. Bruno, and David R. Lide. CRC Handbook of Chemistry and Physics. [Boca Raton, FL]: CRC press, 2014.

  Examples

      >>> gravity(55, 1E4)
      9.784151976863571