0% found this document useful (0 votes)
112 views510 pages

Fluids

This document is a release of the fluids documentation for version 0.1. It contains tutorials on importing and using the fluids module, design philosophy, dimensionless numbers, utilities, friction factors, pipe schedules, wire gauges, tank geometry, miscellaneous geometry, atmospheric properties, compressor sizing, gas pipeline sizing using empirical equations, drag and terminal velocity, pressure drop through packed beds and piping, control valve sizing for liquid and gas flow, electric motor sizing, and particle size distributions. It also contains an API reference and examples of solved fluid mechanics problems.

Uploaded by

Abhijit Das
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
112 views510 pages

Fluids

This document is a release of the fluids documentation for version 0.1. It contains tutorials on importing and using the fluids module, design philosophy, dimensionless numbers, utilities, friction factors, pipe schedules, wire gauges, tank geometry, miscellaneous geometry, atmospheric properties, compressor sizing, gas pipeline sizing using empirical equations, drag and terminal velocity, pressure drop through packed beds and piping, control valve sizing for liquid and gas flow, electric motor sizing, and particle size distributions. It also contains an API reference and examples of solved fluid mechanics problems.

Uploaded by

Abhijit Das
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 510

Fluids Documentation

Release 0.1

Caleb Bell

May 04, 2019


Contents

1 fluids tutorial 3
1.1 Importing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2 Design philosophy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.3 Dimensionless numbers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.4 Miscellaneous utilities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.5 Friction factors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.6 Pipe schedules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.7 Wire gauges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.8 Tank geometry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.9 Miscellaneous geometry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.10 Atmospheric properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.11 Compressor sizing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
1.12 Gas pipeline sizing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.13 Gas pipeline sizing: Empirical equations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
1.14 Drag and terminal velocity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
1.15 Pressure drop through packed beds . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
1.16 Pressure drop through piping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
1.17 Control valve sizing: Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
1.18 Control valve sizing: Liquid flow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
1.19 Control valve sizing: Gas flow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
1.20 Electric motor sizing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
1.21 Particle Size Distributions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

2 API Reference 29
2.1 Atmospheric properties (fluids.atmosphere) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
2.2 Compressible flow and compressor sizing (fluids.compressible) . . . . . . . . . . . . . . . . . . . . 42
2.3 Control valve sizing and rating (fluids.control_valve) . . . . . . . . . . . . . . . . . . . . . . . . . . 63
2.4 Dimensionless numbers (fluids.core) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
2.5 Drag and terminal velocity (fluids.drag) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
2.6 Filter pressure drop (fluids.filters) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
2.7 Fittings pressure drop (fluids.fittings) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
2.8 Orifice plates, flow nozzles, Venturi tubes, cone and wedge meters (fluids.flow_meter) . . . . . . . . 179
2.9 Friction factor and pipe roughness (fluids.friction) . . . . . . . . . . . . . . . . . . . . . . . . . . . 200
2.10 Tank and helical coil sizing (fluids.geometry) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244
2.11 Jet Pump (ejector/eductor) Sizing and Rating (fluids.jet_pump) . . . . . . . . . . . . . . . . . . . . 279
2.12 Mixing (fluids.mixing) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283

i
2.13 Hydrology, weirs and open flow (fluids.open_flow) . . . . . . . . . . . . . . . . . . . . . . . . . . . 287
2.14 Packed bed pressure drop (fluids.packed_bed) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294
2.15 Packing & demister pressure drop (fluids.packed_tower) . . . . . . . . . . . . . . . . . . . . . . . . 308
2.16 Particle Size Distributions (fluids.particle_size_distribution) . . . . . . . . . . . . . . . . . . . . . . 317
2.17 Pipe schedules (fluids.piping) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345
2.18 Pump and motor sizing (fluids.pump) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 347
2.19 Safety/relief valve sizing (fluids.safety_valve) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 354
2.20 Liquid-Vapor Separators (fluids.separator) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 361
2.21 Pneumatic conveying (fluids.saltation) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 365
2.22 Two phase flow (fluids.two_phase) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 370
2.23 Two-phase flow voidage (fluids.two_phase_voidage) . . . . . . . . . . . . . . . . . . . . . . . . . . 396
2.24 Support for pint Quantities (fluids.units) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 422
2.25 Support for numpy arrays (fluids.vectorized) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 424

3 Solved fluids mechanics problems 425


3.1 7.1 Smooth Pipe (Plastic) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 425
3.2 7.2 L, L over D and K from Kv for Conventional Type Valves . . . . . . . . . . . . . . . . . . . . . 425
3.3 7.3 L, L over D, K, and Kv for Conventional Type Valves . . . . . . . . . . . . . . . . . . . . . . . 426
3.4 7.4 Venturi Type Valves . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 426
3.5 7.5 Lift Check Valves . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 427
3.6 7.6 Reduced Port Ball Valve . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 428
3.7 7.7 Laminar flow in Valves, Fittings, and Pipe - System from Example 7.6 . . . . . . . . . . . . . . . 429
3.8 7.8 Laminar flow in Valves, Fittings, and Pipe - SAE oil through a pipe and globe valve . . . . . . . 431
3.9 7.10 Piping Systems - Steam . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 431
3.10 7.11 Flat heating Coils - Water . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 433
3.11 7.13 Flow given in English Units - Oil . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 434
3.12 7.14 Bernoulli’s Theorem-Water . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 434
3.13 7.29 Orifice Flow Rate Calculation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 436

4 Installation 437

5 Latest source code 439

6 Bug reports 441

7 License information 443

8 Citation 445

9 Indices and tables 447

Bibliography 449

Python Module Index 495

ii
Fluids Documentation, Release 0.1

Fluids is open-source software for engineers and technicians working in the fields of chemical, mechanical, or civil
engineering. It includes modules for piping, fittings, pumps, tanks, compressible flow, open-channel flow, and more.
Module Contents:

Contents 1
Fluids Documentation, Release 0.1

2 Contents
CHAPTER 1

fluids tutorial

1.1 Importing

Fluids can be imported as a standalone library, or all of its functions and classes may be imported with star imports:

>>> import fluids # Good practice


>>> from fluids import * # Bad practice but convenient

All functions are available from either the main fluids module or the submodule; i.e. both fluids.friction_factor and
fluids.friction.friction_factor are valid ways of accessing a function.

1.2 Design philosophy

Like all libraries, this was developed to scratch my own itches. Since its public release it has been found useful by
many others, from students across the world to practicing engineers at some of the world’s largest companies.
The bulk of this library’s API is considered stable; enhancements to functions and classes will still happen, and default
methods when using a generic correlation interface may change to newer and more accurate correlations as they are
published and reviewed.
To the extent possible, correlations are implemented depending on the highest level parameters. The friction_factor
correlation does not accept pipe diameter, velocity, viscosity, density, and roughness - it accepts Reynolds number and
relative roughness. This makes the API cleaner and encourages modular design.
All functions are designed to accept inputs in base SI units. However, any set of consistent units given to a function
will return a consistent result; for instance, a function calculating volume doesn’t care if given an input in inches or
meters; the output units will be the cube of those given to it. The user is directed to unit conversion libraries such as
pint to perform unit conversions if they prefer not to work in SI units.
The standard math library is used in all functions except where special functions from numpy or scipy are necessary.
SciPy is used for root finding, interpolation, scientific constants, ode integration, and its many special mathematical
functions not present in the standard math library. No other libraries will become required dependencies; anything
else is optional.

3
Fluids Documentation, Release 0.1

To allow use of numpy arrays with fluids, a vectorized module is implemented, which wraps all of the fluids functions
with np.vectorize. Instead of importing from fluids, the user can import from fluids.vectorized:

>>> from fluids.vectorized import *


>>> friction_factor(Re=[100, 1000, 10000], eD=0)
array([0.64 , 0.064 , 0.03088295])

It is possible to switch back and forth between the namespaces with a subsequent import:

>>> from fluids import *

1.3 Dimensionless numbers

More than 30 Dimensionless numbers are available in fluids.core :


Calculation of Reynolds and Prandtl number for water flowing in a 0.01 m diameter pipe at 1.5 m/s:

>>> fluids.core.Reynolds(D=0.01, rho=1000, V=1.5, mu=1E-3)


15000.0
>>> fluids.core.Prandtl(rho=1000, mu=1E-3, Cp=4200, k=0.6)
7.000000000000001

Where different parameters may be used with a dimensionless number, either a separate function is created for each or
both sets of parameters are can be specified. For example, instead of specifying viscosity and density for the Reynolds
number calculation, kinematic viscosity could have been used instead:

>>> Reynolds(D=0.01, V=1.5, nu=1E-6)


15000.0

In the case of groups like the Fourier number, used in both heat and mass transfer, two separate functions are avail-
able, Fourier_heat and Fourier_mass. The heat transfer version supports specifying either the density, heat
capacity, and thermal conductivity - or just the thermal diffusivity. There is no equivalent set of three parameters for
the mass transfer version; it always requires mass diffusivity.

>>> 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
>>> Fourier_mass(t=1.5, L=2, D=1E-9)
3.7500000000000005e-10

Among the coded dimensionless numbers are Archimedes, Bejan_L, Bejan_p, Biot, Boiling,
Bond, Capillary, Cavitation, Confinement, Dean, Drag, Eckert, Euler, Fourier_heat,
Fourier_mass, Froude_densimetric, Froude, Graetz_heat, Grashof, Hagen, Jakob, Knudsen,
Lewis, Mach, Nusselt, Ohnesorge, Peclet_heat, Peclet_mass, Power_number, Prandtl,
Rayleigh, Reynolds, Schmidt, Sherwood, Stanton, Stokes_number, Strouhal, Suratman,
Weber, Morton.

1.4 Miscellaneous utilities

More than just dimensionless groups are implemented in fluids.core.

4 Chapter 1. fluids tutorial


Fluids Documentation, Release 0.1

Converters between loss coefficient, L/D equivalent, length of pipe, and pressure drop are available. It is recommended
to convert length/diameter equivalents and lengths of pipe at specified friction factors to loss coefficients using the
K_from_L_equiv and K_from_f functions respectively. They can all be summed easily afterwards.

>>> K_from_f(fd=0.018, L=100., D=.3)


6.0
>>> K_from_L_equiv(L_D=240, fd=0.02)
4.8

Either head loss or pressure drop can be calculated once the total loss coefficient K is known using head_from_K
or dP_from_K respectively. Head loss does not require knowledge of the fluid’s density, but pressure drop does.

>>> head_from_K(K=(6+4.8), V=3)


4.955820795072732

>>> dP_from_K(K=(6+4.8), rho=1000, V=3)


48600.0

If a K value is known and desired to be converted to a L/D ratio or to an equivalent length of pipe, that calculation is
available as well with L_from_K or L_equiv_from_K respectively:

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


100.0
>>> L_equiv_from_K(3.6, fd=0.02)
180.0

Pressure and head are also convertible with the head_from_P and P_from_head functions:

>>> head_from_P(P=98066.5, rho=1000)


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

Also implemented in fluids.core. are the following:


thermal_diffusivity:

>>> thermal_diffusivity(k=0.02, rho=1., Cp=1000.)


2e-05

Speed of sound in an ideal gas c_ideal_gas: (requires temperature, isentropic exponent Cp/Cv):

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


348.9820361755092

A converter between dynamic and kinematic viscosity nu_mu_converter:

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


0.000998
>>> nu_mu_converter(998., mu=0.000998)
1e-06

Calculation of gravity on earth as a function of height and latitude (input in degrees and height in meters):

>>> gravity(latitude=55, H=1E6)


6.729011976863571

1.4. Miscellaneous utilities 5


Fluids Documentation, Release 0.1

1.5 Friction factors

Friction factor is easily calculable with friction_factor.


>>> epsilon = 1.5E-6 # m, clean steel
>>> fluids.friction.friction_factor(Re=15000, eD=epsilon/0.01)
0.02808790938573186

The transition to laminar flow is implemented abruptly at Re=2040, one of the latest experimental results which is
accurate to +/- 10. If the Reynolds number is in the laminar regime, the transition to a different correlation happens
automatically and the well-known solution fd = 64/Re is given.
>>> fluids.friction.friction_factor(Re=150)
0.4266666666666667

Friction factor in curved pipes in available as friction_factor_curved. The curved friction factor is applicable
for helices and coils, and to a lesser extent curved bends.
>>> friction_factor_curved(Re=15000, Di=.01, Dc=2.5, roughness=1.5E-6)
0.02984622907277626

The critical Reynolds number for curved pipes is increased compared to straight pipe flow, and is a function of the
curvature of the pipe. The preferred method to calculate the transition (used by default for the automatic regime
transition) is the method of Schmidt (1967) helical_transition_Re_Schmidt.
>>> helical_transition_Re_Schmidt(Di=.01, Dc=2.5)
3948.7442097768603

Although roughness is a hard value to know without measuring it for a pipe, several hundred pipe conditions have
had their roughness values measured in the literature, and they can be searched through using fuzzy matching and the
functions nearest_material_roughness and material_roughness.
>>> nearest_material_roughness('Used water piping', clean=False)
'Seamless steel tubes, Used water piping'
>>> material_roughness('Seamless steel tubes, Used water piping')
0.0015

The material_roughness function can also be used directly, but in that case there is no feedback about the material
which was found.
>>> material_roughness('glass')
1e-05

As fuzzy string matching is a pretty terrible solution, it is encouraged to find the desired string in the actual source
code of fluids.
There is one more way of obtaining the roughness of a clean pipe, developed by Farshad and Rieke (2006)
roughness_Farshad. It has been established that in commercial pipe, the larger the diameter, the larger the
roughness.
>>> roughness_Farshad('Carbon steel, bare', D=0.05)
3.529128126365038e-05

Only the following types of clean, new pipe have data available:
• ‘Plastic coated’
• ‘Carbon steel, honed bare’

6 Chapter 1. fluids tutorial


Fluids Documentation, Release 0.1

• ‘Cr13, electropolished bare’


• ‘Cement lining’
• ‘Carbon steel, bare’
• ‘Fiberglass lining’
• ‘Cr13, bare’
There is also a term called Transmission factor, used in many pipeline applications. It is effectively a variant on friction
factor. They can be inter-converted with the transmission_factor function.

>>> transmission_factor(fd=0.0185) # calculate transmission factor


14.704292441876154
>>> transmission_factor(F=20) # calculate Darcy friction factor
0.01

1.6 Pipe schedules

ASME/ANSI pipe tables from B36.10M-2004 and B36-19M-2004 are implemented in fluids.piping.
Piping can be looked up based on nominal pipe size, outer diameter, or inner diameter with the nearest_pipe
function.

>>> nearest_pipe(NPS=2) # returns NPS, inside diameter, outer diameter, wall thickness
(2, 0.05248, 0.0603, 0.00391)

When looking up by actual diameter, the nearest pipe as large or larger then requested is returned:

>>> NPS, Di, Do, t = nearest_pipe(Di=0.5)


>>> Di
0.57504
>>> nearest_pipe(Do=0.5)
(20, 0.47781999999999997, 0.508, 0.01509)

By default, the pipe schedule used for the lookup is schedule 40. Other schedules that are available are: ‘5’, ‘10’, ‘20’,
‘30’, ‘40’, ‘60’, ‘80’, ‘100’, ‘120’, ‘140’, ‘160’, ‘STD’, ‘XS’, ‘XXS’, ‘5S’, ‘10S’, ‘40S’, ‘80S’.

>>> nearest_pipe(Do=0.5, schedule='40S')


(20, 0.48894, 0.508, 0.009529999999999999)
>>> nearest_pipe(Do=0.5, schedule='80')
(20, 0.45562, 0.508, 0.02619)

If a diameter which is larger than any pipe in the schedule is input, an exception is raised:

>>> nearest_pipe(Do=1)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "fluids/piping.py", line 276, in nearest_pipe
raise ValueError('Pipe input is larger than max of selected schedule')
ValueError: Pipe input is larger than max of selected schedule

1.6. Pipe schedules 7


Fluids Documentation, Release 0.1

1.7 Wire gauges

The construction of mechanical systems often uses the “gauge” systems, a variety of old imperial conversions be-
tween plate or wire thickness and a dimensionless number. Conversion from and to the gauge system is done by the
gauge_from_t and t_from_gauge functions.
Looking up the gauge from a wire of known diameter approximately 1.2 mm:

>>> gauge_from_t(.0012)
18

The reverse conversion:

>>> t_from_gauge(18)
0.001245

Other schedules are also supported:


• Birmingham Wire Gauge (BWG) ranges from 0.2 (0.5 inch) to 36 (0.004 inch).
• American Wire Gauge (AWG) ranges from 0.167 (0.58 inch) to 51 (0.00099 inch). These are used for electrical
wires.
• Steel Wire Gauge (SWG) ranges from 0.143 (0.49 inch) to 51 (0.0044 inch). Also called Washburn & Moen
wire gauge, American Steel gauge, Wire Co. gauge, and Roebling wire gauge.
• Music Wire Gauge (MWG) ranges from 0.167 (0.004 inch) to 46 (0.18 inch). Also called Piano Wire Gauge.
• British Standard Wire Gage (BSWG) ranges from 0.143 (0.5 inch) to 51 (0.001 inch). Also called Imperial Wire
Gage (IWG).
• Stub’s Steel Wire Gage (SSWG) ranges from 1 (0.227 inch) to 80 (0.013 inch)

>>> t_from_gauge(18, schedule='AWG')


0.00102362

1.8 Tank geometry

Sizing of vessels and storage tanks is implemented in an object-oriented way as TANK in fluids.geometry. All
results use the exact equations; all are documented in the many functions in fluids.geometry.

>>> T1 = TANK(D=1.2, L=4, horizontal=False)


>>> T1.V_total, T1.A # Total volume of the tank and its surface area
(4.523893421169302, 17.34159144781566)

By default, tanks are cylinders without heads. Tank heads can be specified to be conical, ellipsoidal, torispherical,
guppy, or spherical. The heads can be specified independently. The diameter and length are not required; the total
volume desired can be specified along with the length to diameter ratio.

>>> T1 = TANK(V=10, L_over_D=0.7, sideB='conical', horizontal=False)


>>> T1.L, T1.D
(1.7731788548899077, 2.5331126498427254)

Conical, ellipsoidal, guppy and spherical heads are all governed only by one parameter, a, the distance the head extends
out from the main tank body. Torispherical heads are governed by two parameters k and f. If these parameters are not
provided, the distance the head extends out will be 25% of the size of the tank’s diameter. For torispherical heads, the
distance is similar but more complicated.

8 Chapter 1. fluids tutorial


Fluids Documentation, Release 0.1

>>> TANK(D=10., V=500, horizontal=False, sideA='ellipsoidal', sideB='ellipsoidal',


˓→sideA_a=1, sideB_a=1)

<Vertical tank, V=500.000000 m^3, D=10.000000 m, L=5.032864 m, ellipsoidal heads, a=1.


˓→000000 m.>

Each TANK has __repr__ implemented, to describe the tank when printed.
Torispherical tanks default to the ratios specified as ASME F&D. Other standard ratios can also be used; the docu-
mentation for <TANK> lists their values. Here we implement DIN 28011’s ratios.

>>> TANK(D=0.01, V=0.25, horizontal=False, sideA='torispherical', sideB='torispherical


˓→')

<Vertical tank, V=0.250000 m^3, D=0.010000 m, L=3183.096137 m, torispherical heads,


˓→a=0.001693 m.>

>>> DIN = TANK(L=3, D=5, horizontal=False, sideA='torispherical', sideB='torispherical


˓→', sideA_f=1, sideA_k=0.1, sideB_f=1, sideB_k=0.1)

>>> print(DIN)
<Vertical tank, V=90.299352 m^3, D=5.000000 m, L=3.000000 m, torispherical heads, a=0.
˓→968871 m.>

Partial volume lookups are also useful. This is useful when the height of fluid in the tank is known, but not the volume.
The reverse calculation is also implemented, and useful when doing dynamic simulation and to calculate the new
height after a specified volume of liquid is removed.

>>> DIN.h_max
4.937742251701451
>>> DIN.h_from_V(40)
2.3760173045849315
>>> DIN.V_from_h(4.1)
73.83841540117238

Surface areas of the heads and the main body are available as well as the total surface area of the tank.

>>> DIN.A_sideA, DIN.A_sideB, DIN.A_lateral, DIN.A


(24.7496775831724, 24.7496775831724, 47.12388980384689, 96.62324497019169)

1.9 Miscellaneous geometry

In addition to sizing all sorts of tanks, helical coils are supported and so are a number of other simple calculations.
Sphericity is implemented as sphericity, requiring a calculated surface area and volume. For a cube of side length
3, the surface area is 6*a^2=54 and volume a^3=27. Its sphericity is then:

>>> sphericity(A=54, V=27)


0.8059959770082346

Aspect ratio of is implemented as aspect_ratio; for example, a rectangle 0.2 m by 2 m:

>>> aspect_ratio(.2, 2)
0.1

Circularity, a parameter used to characterize 2d images of particles, is implemented as circularity. For a rectan-
gle, one side length = 1, second side length = 100:

1.9. Miscellaneous geometry 9


Fluids Documentation, Release 0.1

>>> D1 = 1
>>> D2 = 100
>>> A = D1*D2
>>> P = 2*D1 + 2*D2
>>> circularity(A, P)
0.030796908671598795

1.10 Atmospheric properties

Various main classes are available to model the atmosphere, of varying accuracy. They are the US Standard Atmo-
sphere 1976 (ATMOSPHERE_1976), a basic but very quick model; the NRLMSISE 00 model, substantially more
powerful and accurate and still the standard to this day (ATMOSPHERE_NRLMSISE00); and two models for wind
speed only, Horizontal Wind Model 1993 (hwm93) and Horizontal Wind Model 2014 (hwm14). The two horizon-
tal wind models are actually fortran codes, and are not compiled automatically on installation. Solar models are
earthsun_distance, solar_position, sunrise_sunset and solar_irradiation.
ATMOSPHERE_1976 is the simplest model, and very suitable for basic engineering purposes. It supports atmospheric
temperature, density, and pressure as a function of elevation. Optionally, a local temperature difference from earth’s
average can be specified to correct the model to local conditions but this is only a crude approximation.
Conditions 5 km into the air:

>>> atm = ATMOSPHERE_1976(Z=5000)


>>> atm.T, atm.P, atm.rho
(255.67554322180348, 54048.28614576141, 0.7364284207799743)

The standard also specifies simplistic formulas for calculating the thermal conductivity, viscosity, speed of sound, and
gravity at a given elevation:

>>> atm.g, atm.mu, atm.k, atm.v_sonic


(9.791241076982665, 1.628248135362207e-05, 0.02273190295142526, 320.5455196704035)

Those property routines are static methods, and can be used without instantiating an atmosphere object:

>>> ATMOSPHERE_1976.gravity(Z=1E5)
9.505238763515356
>>> ATMOSPHERE_1976.sonic_velocity(T=300)
347.22080908230015
>>> ATMOSPHERE_1976.viscosity(T=400)
2.285266457680251e-05
>>> ATMOSPHERE_1976.thermal_conductivity(T=400)
0.033657148617592114

ATMOSPHERE_NRLMSISE00 is the recommended model, and calculates atmospheric density, temperature, and pres-
sure as a function of height, latitude/longitude, day of year, and seconds since start of day. The model can also take into
account solar and geomagnetic disturbances which effect the atmosphere at very high elevations if more parameters
are provided. It is valid up to 1000 km. This model is somewhat slow; it is a Python port of the Fortran version, created
by Joshua Milas. It does not support gravity profiles or transport properties, but does calculate the composition of the
atmosphere (He, O, N2, O2, Ar, H2, N2 as constituents).
1000 m elevation, 45 degrees latitude and longitude, 150th day of year, 0 seconds in:

>>> atm = ATMOSPHERE_NRLMSISE00(Z=1E3, latitude=45, longitude=45, day=150)


>>> atm.T, atm.P, atm.rho
(285.54408606237405, 90394.40851588511, 1.1019062026405517)

10 Chapter 1. fluids tutorial


Fluids Documentation, Release 0.1

The composition of the atmosphere is specified in terms of individual molecules/m^3:

>>> atm.N2_density, atm.O2_density


(1.7909954550444606e+25, 4.8047035072477747e+24)

This model uses the ideal gas law to convert particle counts to mass density. Mole fractions of each species are
available as well.

>>> atm.components
['N2', 'O2', 'Ar', 'He', 'O', 'H', 'N']
>>> atm.zs
[0.7811046347676225, 0.2095469403691101, 0.009343183088772914, 5.241774494627779e-06,
˓→0.0, 0.0, 0.0]

The horizontal wind models have almost the same API, and calculate wind speed and direction as a function of
elevation, latitude, longitude, day of year and time of day. hwm93 can also take as an argument local geomagnetic
conditions and solar activity, but this effect was found to be so negligible it was removed from future versions of the
model such as hwm14.
Calculation of wind velocity, meridional (m/sec Northward) and zonal (m/sec Eastward) for 1000 m elevation, 45
degrees latitude and longitude, 150th day of year, 0 seconds in, with both models:

>>> hwm93(Z=1000, latitude=45, longitude=45, day=150)


(-0.0038965975400060415, 3.8324742317199707)
>>> hwm14(Z=1000, latitude=45, longitude=45, day=150)
(-0.9920163154602051, 0.4105832874774933)

These wind velocities are only historical normals; conditions may vary year to year.
The solar radiation model is based around the Sun Position Algorithm (SPA) developed by NREL; it can calculate
the position of the sun in the sky at any time for any place on Earth, and can calculate how far away the sun is from
Earth. The python implementation used is a slightly modified version of the Python implementation written by Tony
Lorenzo and released under the BSD 3-clause license. The algorithm is published with the excellent pvlib library for
solar energy modelling applications.
To determine the distance of earth and the sun, use the earthsun_distance function which accepts a single
datetime object and returns the distance in meters.

>>> from datetime import datetime


>>> earthsun_distance(datetime(2003, 10, 17, 13, 30, 30))
149080606927.64243

To determine when the sun rises, sets, and is at solar noon, use the sunrise_sunset function, which accepts a
datetime instance, a latitude, and a longitude in degrees. Note the datetime for all solar calculations should be in the
local time zone - but never in daylight savings time.

>>> sunrise, sunset, transit = sunrise_sunset(datetime(2018, 4, 17, 13,


... 43, 5), 51.0486, -114.07)
>>> sunrise
datetime.datetime(2018, 4, 17, 6, 36, 55, 782660)
>>> sunset
datetime.datetime(2018, 4, 17, 20, 34, 4, 249326)
>>> transit
datetime.datetime(2018, 4, 17, 13, 35, 46, 686265)

To determine where in the sky the sun appears at any location and time, use the solar_position function, which
requires a datetime instance, a latitude, and a longitude.

1.10. Atmospheric properties 11


Fluids Documentation, Release 0.1

>>> apparent_zenith, _, _, _, azimuth, _ = solar_position(datetime(2003, 10, 17, 13,


˓→30, 30), 51.0486, -114.07)

>>> apparent_zenith, azimuth


(60.36742528727301, 182.5136775668768)

The function returns several other properties which may be of interest. Its first return value, apparent_zenith, is the
zenith which an observer on the ground would see the sun at after accounting for atmospheric refraction. To more
accurately calculate the solar position, the temperature and pressure at ground level are required as well - as they
impact the refraction as well; these arguments are accepted as well by solar_position for more accuracy. When
specifying pressure, be sure to use the real pressure of the site - not an adjusted to standard conditions one as reported
by weather stations!

>>> solar_position(datetime(2003, 10, 17, 13, 30, 30), 51.0486, -114.07, T=290, P=8.
˓→9E4)[0]

60.3701556038549

The primary application of sun position is for calculating the amount of sunlight received by an object, via the
solar_irradiation function. Unlike the previous functions, it requires an installation of pvlib to work.
In addition to the arguments previously discussed, the surface_tilt and surface_azimuth of the object are required.
The object is assumed to be a plane only - other objects need to be discretized into planes through finite-element
calculations. The elevation is required, as well as the average albedo of the ground surrounding the object (not
immediately; within several kilometers). The calculation is then straightforward:

>>> solar_irradiation(Z=1100.0, latitude=51.0486, longitude=-114.07,


... moment=datetime(2018, 4, 15, 13, 43, 5), surface_tilt=41.0,
... surface_azimuth=180.0, albedo=0.25)
(1065.7622492480543, 945.2657257434173, 120.49652350463705, 95.31534254980346, 25.
˓→18118095483359)

The first return value is the solar radiation which hits the object, in W/m^2. The next two are the components of
the radiation that comes 1) directly from the sun and 2) diffusely, after being reflected from some other object. The
final two return values break up the diffuse light into 3) a component reflected only in the sky and clouds and 4) a
component caused by earth’s albedo, bounding off the surface, then the sky, before hitting the object.
Note that if not provided, the temperature and pressure of the ground are obtained via the
ATMOSPHERE_NRLMSISE00 class, but this quadruples the time required for the calculation.

1.11 Compressor sizing

Both isothermal and isentropic/polytropic compression models are implemented in fluids.compressible.


Isothermal compression calculates the work required to compress a gas from one pressure to another at a specified
temperature. This is the best possible case for compression; all actual compressors require more work to do the com-
pression. By making the compression take a large number of stages and cooling the gas between stages, this can be
approached reasonable closely. Integrally geared compressors are often used for this purpose
The function isothermal_work_compression provides this calculation.

>>> isothermal_work_compression(P1=1E5, P2=1E6, T=300)


5743.425357533477

Work is calculated on a J/mol basis. If the second pressure is lower than the first, a negative work will result and you
are modeling an expander instead of a compressor. Gas compressibility factor can also be specified. The lower the
gas’s compressibility factor, the less power required to compress it.

12 Chapter 1. fluids tutorial


Fluids Documentation, Release 0.1

>>> isothermal_work_compression(P1=1E6, P2=1E5, T=300)


-5743.425357533475
>>> isothermal_work_compression(P1=1E5, P2=1E6, T=300, Z=0.95)
5456.2540896568025

There is only one function implemented to model both isentropic and polytropic compressors, as the only difference
is that a polytropic exponent n is used instead of the gas’s isentropic exponent Cp/Cv k and the type of efficiency is
changed. The model requires initial temperature, inlet and outlet pressure, isentropic exponent or polytropic exponent,
and optionally an efficiency.
Compressing air from 1 bar to 10 bar, with inlet temperature of 300 K and efficiency of 78% with the
isentropic_work_compression function:
>>> isentropic_work_compression(P1=1E5, P2=1E6, T1=300, k=1.4, eta=0.78) # work, J/mol
10416.873455626454

The model allows for the inlet or outlet pressure or efficiency to be calculated instead of the work:
>>> isentropic_work_compression(T1=300, P1=1E5, P2=1E6, k=1.4, W=10416) # Calculate
˓→efficiency

0.7800654085434559
>>> isentropic_work_compression(T1=300, P1=1E5, k=1.4, W=10416, eta=0.78) # Calculate
˓→P2

999858.5366533266
>>> isentropic_work_compression(T1=300, P2=1E6, k=1.4, W=10416, eta=0.78) # Calculate
˓→P1

100014.14833613831

The approximate temperature rise can also be calculated with the function isentropic_T_rise_compression.
>>> T2 = isentropic_T_rise_compression(P1=1E5, P2=1E6, T1=300, k=1.4, eta=0.78)
>>> T2, T2-300 # outlet temperature and temperature rise, K
(657.960664955096, 357.96066495509604)

It is more accurate to use an enthalpy-based model which incorporates departure functions.


Polytropic exponents and efficiencies are convertible to isentropic exponents and efficiencies with
isentropic_efficiency and polytropic_exponent. For the above example, with k=1.4 and
‘eta_s‘=0.78:
>>> eta_p = isentropic_efficiency(P1=1E5, P2=1E6, k=1.4, eta_s=0.78) # with eta_s
˓→specified, returns polytropic efficiency

>>> n = polytropic_exponent(k=1.4, eta_p=eta_p)


>>> eta_p, n
(0.8376785349411107, 1.517631868575738)

With those results, we can prove the calculation worked by calculating the work required using these polytropic inputs:
>>> isentropic_work_compression(P1=1E5, P2=1E6, T1=300, k=n, eta=eta_p)
10416.873455626452

The work is the same as calculated with the original inputs. Note that the conversion is specific to three inputs: Inlet
pressure; outlet pressure; and isentropic exponent k. If any of those change, then the calculated polytropic exponent
and efficiency will be different as well.
To go in the reverse direction, we take the case of isentropic exponent k =Cp/Cv=1.4, eta_p=0.83 The power is
calculated to be:
We first need to calculate the polytropic exponent from the polytropic efficiency:

1.11. Compressor sizing 13


Fluids Documentation, Release 0.1

>>> n = polytropic_exponent(k=1.4, eta_p=0.83)


>>> print(n)
1.5249343832

>>> isentropic_work_compression(P1=1E5, P2=1E6, T1=300, k=n, eta=0.83)


10556.494602042329

Converting polytropic efficiency to isentropic efficiency:


>>> eta_s = isentropic_efficiency(P1=1E5, P2=1E6, k=1.4, eta_p=0.83)
>>> print(eta_s)
0.769683649894

Checking the calculated power is the same:


>>> isentropic_work_compression(P1=1E5, P2=1E6, T1=300, k=1.4, eta=eta_s)
10556.494602042327

1.12 Gas pipeline sizing

The standard isothermal compressible gas flow is fully implemented as isothermal_gas, and through a variety of
numerical and analytical expressions, can solve for any of the following parameters:
• Mass flow rate
• Upstream pressure (numerical)
• Downstream pressure (analytical or numerical if an overflow occurs)
• Diameter of pipe (numerical)
• Length of pipe
Solve for the mass flow rate of gas (kg/s) flowing through a 1 km long 0.5 m inner diameter pipeline, initially at 10
bar with a density of 11.3 kg/m^3 going downstream to a pressure of 9 bar.
>>> isothermal_gas(rho=11.3, fd=0.00185, P1=1E6, P2=9E5, L=1000, D=0.5)
145.4847572636031

The same case, but sizing the pipe to take 100 kg/s of gas:
>>> isothermal_gas(rho=11.3, fd=0.00185, P1=1E6, P2=9E5, L=1000, m=100)
0.42971708911060613

The same case, but determining what the outlet pressure will be if 200 kg/s flow in the 0.5 m diameter pipe:
>>> isothermal_gas(rho=11.3, fd=0.00185, P1=1E6, D=0.5, L=1000, m=200)
784701.0681827427

Determining pipe length from known diameter, pressure drop, and mass flow (possible but not necessarily useful):
>>> isothermal_gas(rho=11.3, fd=0.00185, P1=1E6, P2=9E5, D=0.5, m=150)
937.3258027759333

Not all specified mass flow rates are possible. At a certain downstream pressure, chocked flow will develop - that
downstream pressure is that at which the mass flow rate reaches a maximum. An exception will be raised if such an
input is specified:

14 Chapter 1. fluids tutorial


Fluids Documentation, Release 0.1

>>> isothermal_gas(rho=11.3, fd=0.00185, P1=1E6, L=1000, D=0.5, m=260) # doctest:


˓→+IGNORE_EXCEPTION_DETAIL

Traceback (most recent call last):


File "<stdin>", line 1, in <module>
File "fluids/compressible.py", line 886, in isothermal_gas
'kg/s at a downstream pressure of %f' %(P1, m_max, Pcf))
Exception: The desired mass flow rate cannot be achieved with the specified upstream
˓→pressure of 1000000.000000 Pa; the maximum flowrate is 257.216733 kg/s at a

˓→downstream pressure of 389699.731765

>>> isothermal_gas(rho=11.3, fd=0.00185, P1=1E6, P2=3E5, L=1000, D=0.5) # doctest:


˓→+IGNORE_EXCEPTION_DETAIL

Traceback (most recent call last):


File "<stdin>", line 1, in <module>
File "fluids/compressible.py", line 821, in isothermal_gas
due to the formation of choked flow at P2=%f, specified outlet pressure was %f' %
˓→(Pcf, P2))

Exception: Given outlet pressure is not physically possible due to the formation of
˓→choked flow at P2=389699.731765, specified outlet pressure was 300000.000000

The downstream pressure at which chocked flow occurs can be calculated directly as well:

>>> P_isothermal_critical_flow(P=1E6, fd=0.00185, L=1000., D=0.5)


389699.7317645518

A number of limitations exist with respect to the accuracy of this model:


• Density dependence is that of an ideal gas.
• If calculating the pressure drop, the average gas density cannot be known immediately; iteration must be used
to correct this.
• The friction factor depends on both the gas density and velocity, so it should be solved for iteratively as well. It
changes throughout the pipe as the gas expands and velocity increases.
• The model is not easily adapted to include elevation effects due to the acceleration term included in it.
• As the gas expands, it will change temperature slightly, further altering the density and friction factor.
We can explore how the gas density and friction factor effect the model using the thermo library for chemical proper-
ties.
Compute the downstream pressure of 50 kg/s of natural gas flowing in a 0.5 m diameter pipeline for 1 km, roughness
= 5E-5 m:

>>> from thermo import *


>>> from fluids import *
>>> D = 0.5
>>> L = 1000
>>> epsilon = 5E-5
>>> S1 = Stream('natural gas', P=1E6, m=50)
>>> V = S1.Q/(pi/4*D**2)
>>> Re = S1.Reynolds(D=D, V=V)
>>> fd = friction_factor(Re=Re, eD=epsilon/D)
>>> P2 = isothermal_gas(rho=S1.rho, fd=fd, P1=S1.P, D=D, L=L, m=S1.m)
>>> P2
877424.4964411375

In the above example, the friction factor was calculated using the density and velocity of the gas when it enters the
stream. However, the average values, at the middle pressure, and more representative. We can iterate to observe the
effect of using the average values:

1.12. Gas pipeline sizing 15


Fluids Documentation, Release 0.1

>>> for i in range(10):


... S2 = Stream('natural gas', P=0.5*(P2+S1.P), m=50)
... V = S2.Q/(pi/4*D**2)
... Re = S2.Reynolds(D=D, V=V)
... fd = friction_factor(Re=Re, eD=epsilon/D)
... P2 = isothermal_gas(rho=S2.rho, fd=fd, P1=S1.P, D=D, L=L, m=S1.m)
... print('%g' %P2)
868964
868303
868251
868247
868247
868247
868247
868247
868247
868247

As can be seen, the system converges very quickly. The difference in calculated pressure drop is approximately 1%.

1.13 Gas pipeline sizing: Empirical equations

In addition to the actual model, many common simplifications used in industry are implemented as well. These are
equally capable of solving for any of the following inputs:
• Mass flow rate
• Upstream pressure
• Downstream pressure
• Diameter of pipe
• Length of pipe
None of these models include an acceleration term. In addition to reducing their accuracy, it allows all solutions for
the above variables to be analytical. These models cannot predict the occurrence of chocked flow, and model only
turbulent, not laminar, flow. Most of these models do not depend on the gas’s viscosity.
Rather than using mass flow rate, they use specific gravity and volumetric flow rate. The volumetric flow rate is
specified with respect to a reference temperature and pressure. The defaults are 288.7 K and 101325 Pa, dating to the
old imperial standard of 60° F. The specific gravity is with respect to air at the reference conditions. As the ideal gas
law is used in each of these models, in addition to pressure and specific gravity the average temperature in the pipeline
is required. Average compressibility factor is an accepted input to all models and corrects the ideal gas law’s ideality.
The full list of approximate models is as follows:
• Panhandle_A
• Panhandle_B
• Weymouth
• Oliphant
• Fritzsche
• Muller
• IGT

16 Chapter 1. fluids tutorial


Fluids Documentation, Release 0.1

• Spitzglass_high
• Spitzglass_low
As an example, calculating flow for a pipe with diameter 0.34 m, upstream pressure 90 bar and downstream pressure
20 bar, 160 km long, 0.693 specific gravity and with an average temperature in the pipeline of 277.15 K:

>>> Panhandle_A(D=0.340, P1=90E5, P2=20E5, L=160E3, SG=0.693, Tavg=277.15)


42.56082051195928

Each model also includes a pipeline efficiency term, ranging from 0 to 1. These are just empirical correction factors,
Some of the models were developed with theory and a correction factor applied always; others are more empirical,
and have a default correction factor. 0.92 is the default for the Panhandle A/B, Weymouth, and Oliphant models; the
rest default to a correction of 1 i.e. no correction at all.
The Muller and IGT models are the most accurate and recent approximations. They both depend on viscosity.

>>> Muller(D=0.340, P1=90E5, P2=20E5, L=160E3, SG=0.693, mu=1E-5, Tavg=277.15)


60.45796698148659
>>> IGT(D=0.340, P1=90E5, P2=20E5, L=160E3, SG=0.693, mu=1E-5, Tavg=277.15)
48.92351786788815

These empirical models are included because they are mandated in many industrial applications regardless of their
accuracy, and correction factors have already been determined.
A great deal of effort was spent converting these models to base SI units and checking the coefficients used in each
model with multiple sources. In many cases multiple sets of coefficients are available for a model; the most authorita-
tive or common ones were used in those cases.

1.14 Drag and terminal velocity

A number of spherical particle drag correlations are implemented.


In the simplest case, consider a spherical particle of diameter D=1 mm, density=3400 kg/m^3, travelling at 30 m/s in
air with viscosity mu=1E-5 Pa*s and density 1.2 kg/m^3.
We calculate the particle Reynolds number:

>>> Re = Reynolds(V=30, rho=1.2, mu=1E-5, D=1E-3)


>>> Re
3599.9999999999995

The drag coefficient Cd can be calculated with no other parameters from drag_sphere:

>>> drag_sphere(Re)
0.3914804681941151

The terminal velocity of the particle is easily calculated with the v_terminal function.

>>> v_terminal(D=1E-3, rhop=3400, rho=1.2, mu=1E-5)


8.971223953182939

Very often, we are not interested in just what the velocity of the particle will be at terminal conditions, but on the
distance it will travel and the particle will never have time to reach terminal conditions. An integrating function is
available to do that. Consider that same particle being shot directly down from a helicopter 100 m high.
The integrating function, integrate_drag_sphere, performs the integral with respect to time. At one second,
we can see the (velocity, distance travelled):

1.14. Drag and terminal velocity 17


Fluids Documentation, Release 0.1

>>> integrate_drag_sphere(D=1E-3, rhop=3400., rho=1.2, mu=1E-5, t=1, V=30,


˓→distance=True)

(10.561878111165333, 15.607904177715518)

After integrating to 10 seconds, we can see the particle has travelled 97 meters and is almost on the ground.

>>> integrate_drag_sphere(D=1E-3, rhop=3400., rho=1.2, mu=1E-5, t=10, V=30,


˓→distance=True)

(8.97122398706632, 97.13276290361276)

For this example simply using the terminal velocity would have given an accurate estimation of distance travelled:

>>> 8.971223953182939*10
89.7122395318294

Many engineering applications such as direct contact condensers do operate far from terminal velocity however, and
this function is useful there.

1.15 Pressure drop through packed beds

Twelve different packed bed pressure drop correlations are available. A meta function which allows any of them to be
selected and automatically selects the most accurate correlation for the given parameters.
Pressure drop through a packed bed depends on the density, viscosity and velocity of the fluid, as well as the diameter
of the particles, the amount of free space in the bed (voidage), and to a lesser amount the ratio of particle to tube
diameter and the shape of the particles.
Consider 0.8 mm pebbles with 40% empty space with water flowing through a 2 m column creeping flow at a superfi-
cial velocity of 1 mm/s. We can calculate the pressure drop in Pascals using the dP_packed_bed function:

>>> dP_packed_bed(dp=8E-4, voidage=0.4, vs=1E-3, rho=1E3, mu=1E-3, L=2)


2876.565391768883

The method can be specified manually as well, for example the commonly used Ergun equation:

>>> dP_packed_bed(dp=8E-4, voidage=0.4, vs=1E-3, rho=1E3, mu=1E-3, L=2, Method='Ergun


˓→')

2677.734374999999

Incorporation of the tube diameter will add wall effects to the model.

>>> dP_packed_bed(dp=8E-4, voidage=0.4, vs=1E-3, rho=1E3, mu=1E-3, L=2, Dt=0.01)


2510.3251325096853

Models can be used directly as well. The length of the column is an optional input; if not provided, the result will be
in terms of Pa/m.

>>> KTA(dp=8E-4, voidage=0.4, vs=1E-3, rho=1E3, mu=1E-3) # A correlation standardized


˓→for use in pebble reactors

1440.409277034248

If the column diameter was 0.5 m, the flow rate in m^3/s would be:

>>> .001*(pi/4*0.5**2) # superficial_velocity*A_column


0.00019634954084936208

18 Chapter 1. fluids tutorial


Fluids Documentation, Release 0.1

The holdup (total volume of the column holding fluid not particles) would be:

>>> (pi/4*0.5**2)*(2)*0.4 # A_column*H_column*voidage


0.15707963267948966

Not all particles are spherical. There have been correlations published for specific shapes, but what is often performed
is simply an adjustment of particle diameter by its sphericity in the correlation, with the effective dp used as the product
of the actual dp and the sphericity of the particle. The less spherical the particles, the higher the pressure drop. This is
supported in all of the correlations.

>>> dP_packed_bed(dp=8E-4, voidage=0.4, vs=1E-3, rho=1E3, mu=1E-3, L=2, Dt=0.01,


˓→sphericity=0.9)

3050.419598116882

While it is easy to measure the volume of particles added to a given column and determine the voidage
experimentally, this does not help in the design process. Several authors have methodically filled columns
with particles of different sizes and created correlations in terms of sphericity and particle to tube diam-
eter ratios. Three such correlations are implemented in fluids, one generally using sphericity, one for
spheres, and one for cylinders (voidage_Benyahia_Oneil, voidage_Benyahia_Oneil_spherical and
voidage_Benyahia_Oneil_cylindrical respectively).
1 mm spheres in a 5 cm diameter tube:

>>> voidage_Benyahia_Oneil_spherical(Dp=.001, Dt=.05)


0.3906653157443224

1 mm diameter cylinder 5 mm long in a 5 cm diameter tube:

>>> V_cyl = V_cylinder(D=0.001, L=0.005)


>>> D_sphere_eq = (6*V_cyl/pi)**(1/3.)
>>> A_cyl = A_cylinder(D=0.001, L=0.005)
>>> sph = sphericity(A=A_cyl, V=V_cyl)
>>> voidage_Benyahia_Oneil_cylindrical(Dpe=D_sphere_eq, Dt=0.05, sphericity=sph)
0.3754895273247688

Same calculation, but using the general correlation for all shapes:

>>> voidage_Benyahia_Oneil(Dpe=D_sphere_eq, Dt=0.05, sphericity=sph)


0.4425769555048246

1.16 Pressure drop through piping

It is straightforward to calculate the pressure drop of fluid flowing in a pipeline with any number of fittings using the
fluids library’s fluids.fittings submodule.
15 m of piping, with a sharp entrance and sharp exit, two 30 degree miter bends, one rounded bend 45 degrees, 1
sharp contraction to half the pipe diameter and 1 sharp expansion back to the normal pipe diameter (water, V=3 m/s,
Di=0.05, roughness 0.01 mm):

>>> Re = Reynolds(V=3, D=0.05, rho=1000, mu=1E-3)


>>> fd = friction_factor(Re, eD=1E-5/0.05)
>>> K = K_from_f(fd=fd, L=15, D=0.05)
>>> K += entrance_sharp()
>>> K += exit_normal()
>>> K += 2*bend_miter(angle=30)
(continues on next page)

1.16. Pressure drop through piping 19


Fluids Documentation, Release 0.1

(continued from previous page)


>>> K += bend_rounded(Di=0.05, angle=45, fd=fd)
>>> K += contraction_sharp(Di1=0.05, Di2=0.025)
>>> K += diffuser_sharp(Di1=0.025, Di2=0.05)
>>> dP_from_K(K, rho=1000, V=3)
37920.51140146369

If the diameter of the piping varies, not all of the loss coefficients will be with respect to the same diameter. Each loss
coefficient must be converted to one standard diameter before the total pressure drop can be calculated. The following
example is solved with the optional pint unit compatibility module.
40 m piping, beveled entrance (10 mm length, 30 degrees, into 5 cm ID pipe) , then a 30 degree miter bend, a sharp
contraction to half the pipe diameter (5 m long), a 30 degree miter bend, a rounded 45 degree bend, a sharp expansion
to 4 cm ID pipe (15 more meters), and a sharp exit:

>>> from fluids.units import *


>>> from math import *
>>> material = nearest_material_roughness('steel', clean=True)
>>> epsilon = material_roughness(material)
>>> Q = .01*u.m**3/u.s
>>> rho = 1000*u.kg/u.m**3
>>> mu = 1E-4*u.Pa*u.s
>>> D1 = 5*u.cm
>>> D2 = 2.5*u.cm
>>> D3 = 4*u.cm
>>> L1 = 20*u.m
>>> L2 = 5*u.m
>>> L3 = 15*u.m
>>> V1 = Q/(pi/4*D1**2)

>>> Re = Reynolds(V=V1, D=D1, rho=rho, mu=mu)


>>> fd = friction_factor(Re, eD=epsilon/D1)
>>> K = K_from_f(fd=fd, L=L1, D=D1)
>>> K += entrance_beveled(Di=D1, l=10*u.mm, angle=30*u.degrees)
>>> K += bend_miter(angle=30*u.degrees)
>>> K += contraction_sharp(Di1=D1, Di2=D2)

>>> V2 = Q/(pi/4*D2**2)
>>> Re2 = Reynolds(V=V2, D=D2, rho=rho, mu=mu)
>>> fd2 = friction_factor(Re2, eD=epsilon/D2)

>>> K += change_K_basis(K_from_f(fd=fd2, L=L2, D=D2), D1=D2, D2=D1)


>>> K += change_K_basis(K1=bend_miter(angle=30*u.degrees), D1=D2, D2=D1)
>>> K += change_K_basis(K1=bend_rounded(Di=D2, angle=45*u.degrees, fd=fd2), D1=D2,
˓→D2=D1)

>>> V3 = Q/(pi/4*D3**2)
>>> Re3 = Reynolds(V=V3, D=D3, rho=rho, mu=mu)
>>> fd3 = friction_factor(Re3, eD=epsilon/D3)

>>> K += change_K_basis(K_from_f(fd=fd3, L=L3, D=D3), D1=D3, D2=D1)


>>> K += diffuser_sharp(Di1=D2, Di2=D3)

>>> dP_from_K(K, rho=rho, V=V1)


<Quantity(608471.881547, 'pascal')>

20 Chapter 1. fluids tutorial


Fluids Documentation, Release 0.1

1.17 Control valve sizing: Introduction

The now internationally-standardized methods (IEC 60534) for sizing liquid and gas valves have been implemented.
Conversion factors among the different types of valve coefficients are implemented as well.
There are two forms of loss coefficient used for vales, an imperial and a metric variable called “valve flow coefficient”.
Both can be converted to the standard dimensionless loss coefficient.
If one knows the actual loss coefficient of a valve, the valve flow coefficient can be calculated in either metric or
imperial forms as follows. The flow coefficients are specific to the diameter of the valve. Kv, Cv, and K values can be
converted easily with the functions K_to_Kv, K_to_Cv, Cv_to_K, Kv_to_K, Cv_to_Kv, and Kv_to_Cv.

>>> from fluids import *


>>> K_to_Kv(K=16, D=0.016)
2.56
>>> K_to_Cv(K=16, D=0.016)
2.9596140245853606

If Kv or Cv are known, they can be converted to each other with the proportionality constant 1.156, which is derived
from a unit conversion only. This conversion does not require valve diameter.

>>> Cv_to_Kv(12)
10.379731865307619
>>> Kv_to_Cv(10.37)
11.988748998027418

If a Cv or Kv is obtained from a valve datasheet, it can be converted into a standard loss coefficient as follows.

>>> Kv_to_K(Kv=2.56, D=0.016)


16.000000000000004
>>> Cv_to_K(Cv=3, D=0.016)
15.57211586581753

For a valve with a specified Kv and pressure drop, the flow rate can be calculated easily for the case of non-choked
non-compressible flow (neglecting other friction losses), as illustrated in the example below for a 5 cm valve with a
pressure drop 370 kPa and density of 870 kg/m^3:

>>> Kv = 72.5
>>> D = 0.05
>>> dP = 370E3
>>> K = Kv_to_K(D=D, Kv=Kv)
>>> rho = 870
>>> V = (dP/(.5*rho*K))**0.5 # dP = K*0.5*rho*V^2
>>> A = pi/4*D**2
>>> Q = V*A
>>> Q
0.04151682468778643

Alternatively, the required Kv can be calculated from an assumed diameter and allowable pressure drop:

>>> Q = .05
>>> D = 0.05
>>> dP = 370E3
>>> rho = 870
>>> A = pi/4*D**2
>>> V = Q/A
>>> K = dP/(.5*rho*V**2)
(continues on next page)

1.17. Control valve sizing: Introduction 21


Fluids Documentation, Release 0.1

(continued from previous page)


>>> K_to_Kv(D=D, K=K)
87.31399925838778

The approach documented above is not an adequate procedure for sizing valves however because chocked flow, com-
pressible flow, the effect of inlet and outlet reducers, the effect of viscosity and the effect of laminar/turbulent flow all
have large influences on the performance of control valves.
Historically, valve manufacturers had their own standards for sizing valves, but these have been standardized today
into the IEC 60534 methods.

1.18 Control valve sizing: Liquid flow

To rigorously size a control valve for liquid flow, the inlet pressure, allowable pressure drop, and desired flow rate must
first be known. These need to be determined taking into account the entire pipe network and the various operating
conditions it needs to support; sizing the valves can be performed afterward and only if no valve with the desired
performance is available does the network need to be redesigned.
To illustrate sizing a valve, we borrow an example from Emerson’s Control Valve Handbook, 4th edition (2005). It
involves a flow of 800 gpm of liquid propane. The inlet and outlet pipe size is 8 inches, but the size of the valve itself
is unknown. The desired pressure drop is 25 psi.
Converting this problem to SI units and using the thermo library to calculate the necessary properties of the fluid, we
calculate the necessary Kv of the valve based on an assumed valve size of 3 inches:

>>> from scipy.constants import *


>>> from fluids.control_valve import size_control_valve_l
>>> from thermo.chemical import Chemical
>>> P1 = 300*psi + psi # to Pa
>>> P2 = 275*psi + psi # to Pa
>>> T = 273.15 + 21 # to K
>>> propane = Chemical('propane', P=(P1+P2)/2, T=T)
>>> rho = propane.rho
>>> Psat = propane.Psat
>>> Pc = propane.Pc
>>> mu = propane.mu
>>> Q = 800*gallon/minute # to m^3/s
>>> D1 = D2 = 8*inch # to m
>>> d = 3*inch # to m

The standard specifies two more parameters specific to a valve:


• FL, Liquid pressure recovery factor of a control valve without attached fittings
• Fd, Valve style modifier
Both of these are factors between 0 and 1. In the Emerson handbook, they are not considered in the sizing procedure
and set to 1. These factors are also a function of the diameter of the valve and are normally tabulated next to the values
of Cv or Kv for a valve. Now using size_control_valve_l to solve for the flow coefficient:

>>> Kv = size_control_valve_l(rho, Psat, Pc, mu, P1, P2, Q, D1, D2, d, FL=1, Fd=1)
>>> Kv
109.27127420992377

The handbook states the Cv of the valve is 121; we convert Kv to Cv:

22 Chapter 1. fluids tutorial


Fluids Documentation, Release 0.1

>>> Kv_to_Cv(Kv=Kv)
126.3284357953137

The example in the book calculated Cv = 125.7, but doesn’t actually use the full calculation method. Either way, the
valve will not carry the desired flow rate; we need to try a larger valve size. The 4 inch size is tried next in the example,
which has a known Cv of 203.

>>> d = 4*inch # to m
>>> Kv = size_control_valve_l(rho, Psat, Pc, mu, P1, P2, Q, D1, D2, d, FL=1, Fd=1)
>>> Kv_to_Cv(Kv=Kv)
116.0624409988861

The calculated Cv is well under the valve’s maximum Cv; we can select it.
This model requires a vapor pressure and a critical pressure of the fluid as inputs. There is no clarification in the
standard about how to handle mixtures, which do not have these values. It is reasonable to calculate vapor pressure as
the bubble pressure, and the mixture’s critical pressure through a mole-weighted average.
For actual values of Cv, Fl, Fd, and available diameters, an excellent resource is the Fisher Catalog 12.

1.19 Control valve sizing: Gas flow

To rigorously size a control valve for gas flow, the inlet pressure, allowable pressure drop, and desired flow rate must
first be known. These need to be determined taking into account the entire pipe network and the various operating
conditions it needs to support; sizing the valves can be performed afterward and only if no valve with the desired
performance is available does the network need to be redesigned.
To illustrate sizing a valve, we borrow an example from Emerson’s Control Valve Handbook, 4th edition (2005). It
involves a flow of 6 million ft^3/hour of natural gas. The inlet and outlet pipe size is 8 inches, but the size of the valve
itself is unknown. The desired pressure drop is 150 psi.
Converting this problem to SI units and using the thermo library to calculate the necessary properties of the fluid, we
calculate the necessary Kv of the valve based on an assumed valve size of 8 inches.

>>> from scipy.constants import *


>>> from fluids.control_valve import size_control_valve_g
>>> from thermo.chemical import Chemical
>>> P1 = 214.7*psi
>>> P2 = 64.7*psi
>>> T = 16 + 273.15
>>> natural_gas = Mixture('natural gas', T=T, P=(P1+P2)/2)
>>> Z = natural_gas.Z
>>> MW = natural_gas.MW
>>> mu = natural_gas.mu
>>> gamma = natural_gas.isentropic_exponent
>>> Q = 6E6*foot**3/hour
>>> D1 = D2 = d = 8*inch # 8-inch Fisher Design V250

The standard specifies three more parameters specific to a valve:


• FL, Liquid pressure recovery factor of a control valve without attached fittings
• Fd, Valve style modifier
• xT, Pressure difference ratio factor of a valve without fittings at choked flow
All three of these are factors between 0 and 1. In the Emerson handbook, FL and Fd are not considered in the sizing
procedure and set to 1. xT is specified as 0.137 at full opening. These factors are also a function of the diameter of the

1.19. Control valve sizing: Gas flow 23


Fluids Documentation, Release 0.1

valve and are normally tabulated next to the values of Cv or Kv for a valve. Now using size_control_valve_g
to solve for the flow coefficient:

>>> Kv = size_control_valve_g(T, MW, mu, gamma, Z, P1, P2, Q, D1, D2, d, FL=1, Fd=1,
˓→xT=.137)

>>> Kv_to_Cv(Kv)
1560.9362792230884

The 8-inch valve is rated with Cv = 2190. The valve is adequate to provide the desired flow because the rated Cv is
higher. The calculated value in their example is 1515, differing slightly due to the properties used.
The example next goes on to determine the actual opening position the valve should be set at to provide the required
flow. Their conclusion is approximately 75% open; we can do better using a numerical solver. The values of opening
at different positions are obtained in this example from the valve’s datasheet.
Loading the data and creating interpolation functions so FL, Fd, and xT are all smooth functions:

>>> from scipy.interpolate import interp1d


>>> from scipy.optimize import newton
>>> openings = [.2, .3, .4, .5, .6, .7, .8, .9]
>>> Fds = [0.59, 0.75, 0.85, 0.92, 0.96, 0.98, 0.99, 0.99]
>>> Fls = [0.9, 0.9, 0.9, 0.85, 0.78, 0.68, 0.57, 0.45]
>>> xTs = [0.92, 0.81, 0.85, 0.63, 0.58, 0.48, 0.29, 0.14]
>>> Kvs = [24.1, 79.4, 153, 266, 413, 623, 1060, 1890]
>>> Fd_interp = interp1d(openings, Fds, kind='cubic')
>>> Fl_interp = interp1d(openings, Fls, kind='cubic')
>>> xT_interp = interp1d(openings, xTs, kind='cubic')
>>> Kv_interp = interp1d(openings, Kvs, kind='cubic')

Creating and solving the objective function:

>>> def to_solve(opening):


... Fd = float(Fd_interp(opening))
... Fl = float(Fl_interp(opening))
... xT = float(xT_interp(opening))
... Kv_lookup = float(Kv_interp(opening))
... Kv_calc = size_control_valve_g(T, MW, mu, gamma, Z, P1, P2, Q, D1, D2, d,
˓→FL=Fl, Fd=Fd, xT=xT)

... return Kv_calc - Kv_lookup


>>> newton(to_solve, .8) # initial guess of 80%
0.7495168349025819

We see the valve should indeed be set to almost exactly 75% open to provide the desired flow.

1.20 Electric motor sizing

Motors are available in standard sizes, mostly as designated by the National Electrical Manufacturers Association
(NEMA). To easily determine what the power of a motor will actually be once purchased, motor_round_size
implements rounding up of a motor power to the nearest size. NEMA standard motors are specified in terms of
horsepower.

>>> motor_round_size(1E5) # 100 kW motor; 11.8% larger than desired


111854.98073734052
>>> from scipy.constants import hp
>>> motor_round_size(1E5)/hp # convert to hp
150.0

24 Chapter 1. fluids tutorial


Fluids Documentation, Release 0.1

Motors are designed to generate a certain amount of power, but they themselves are not 100% efficient at doing this
and require more power due to efficiency losses. Many minimum values for motor efficiency are standardized. The
Canadian standard for this is implemented in fluids as CSA_motor_efficiency.

>>> CSA_motor_efficiency(P=5*hp)
0.855

Most motors are not enclosed (the default assumption), but those that are closed are more efficient.

>>> CSA_motor_efficiency(P=5*hp, closed=True)


0.875

The number of poles in a motor also affects its efficiency:

>>> CSA_motor_efficiency(P=5*hp, poles=6)


0.875

There is also a schedule of higher efficiency values standardized as well, normally available at somewhat higher cost:

>>> CSA_motor_efficiency(P=5*hp, closed=True, poles=6, high_efficiency=True)


0.895

A motor will spin at more or less its design frequency, depending on its type. However, if it does not meet sufficient
resistance, it will not be using its design power. This is good and bad - less power is used, but as a motor drops under
50% of its design power, its efficiency becomes terrible. The function motor_efficiency_underloaded has
been written based on generic performance curves to estimate the underloaded efficiency of a motor. Just how bad
efficiency drops off depends on the design power of a motor - higher power motors do better operating at low loads
than small motors.

>>> motor_efficiency_underloaded(P=1E3, load=.9)


1
>>> motor_efficiency_underloaded(P=1E3, load=.2)
0.6639347559654663

This needs to be applied on top of the normal motor efficiency; for example, that 1 kW motor at 20% load would have
a net efficiency of:

>>> motor_efficiency_underloaded(P=1E3, load=.2)*CSA_motor_efficiency(P=1E3)


0.5329404286134798

Many motors have Variable Frequency Drives (VFDs) which allow them to vary the speed of their rotation. The VFD
is another source of inefficiency, but by allowing the pump or other piece of equipment to vary its speed, a system
may be designed to be less energy intensive. For example, rather than running a pump at a certain high frequency and
controlling the flow with a large control valve, the flow rate can be controlled with the VFD directly.
The efficiency of a VFD depends on the maximum power it needs to be able to generate, and the power it is
actually generating at an instant (load). A table of typical modern VFD efficiencies is implemented in fluids as
VFD_efficiency.

>>> VFD_efficiency(1E5) # 100 kW


0.97
>>> VFD_efficiency(5E3, load=.2) # 5 kW, 20% load
0.8562

1.20. Electric motor sizing 25


Fluids Documentation, Release 0.1

1.21 Particle Size Distributions

Fluids has means for calculating, fitting, and manipulating particle size distributions through the fluids.
particle_size_distribution module. In addition to discrete and continuous distributions, there are also
means to create interpolating distributions from discrete distributions, and to use any of SciPy’s statistical distribu-
tions or a custom distribution for calculations.
The following example particle size distribution shows some calculations. Note there is one more diameter point than
number point - this is how the input should be given when the analysis provides classes and each bin has a range of
sizes representing it. Also supported is providing as many diameter values as fraction values.

>>> ds = [240, 360, 450, 562.5, 703, 878, 1097, 1371, 1713, 2141, 2676, 3345, 4181,
˓→5226, 6532]

>>> numbers = [65, 119, 232, 410, 629, 849, 990, 981, 825, 579, 297, 111, 21, 1]
>>> psd = ParticleSizeDistribution(ds=ds, fractions=numbers, order=0)
>>> psd
<Particle Size Distribution, points=14, D[3, 3]=2450.886241 m>

In the above example, the analysis available was the number of particles counted in each bin. This is equivalent
to having normalized the numbers into fractions; they are normalized inside the ParticleSizeDistribution
class.
If masses in each of the different bins had been known instead, then the same constructor would be given except with
order=3, representing a mass or volume distribution (they are the same thing for distributions with the same density
for all particles).
If the data is available as a cumulative distribution, simple add the flag cdf=True and it will be interpreted correctly.
The probability distribution and cumulative distribution can be plotted with plot_pdf and plot_cdf respectively.
Important statistical parameters describing the distribution can be calculated with the methods fluids.
particle_size_distribution.ParticleSizeDistribution.mean_size or fluids.
particle_size_distribution.ParticleSizeDistribution.mean_size_ISO. The following
example shows calculation of the size-weighted mean diameter; arithmetic mean diameter; Sauter mean diameter;
and De Brouckere diameter.

>>> psd.mean_size(2, 1)
1857.788857205553
>>> psd.mean_size(1, 0)
1459.3725650679328
>>> psd.mean_size(1, 2)
1857.7888572055529
>>> psd.mean_size(1, 3)
2053.2703977309357

An interpolated distribution exists underneath the discrete data to allow useful properties to be calculated, such as the
D10 or D90:

>>> psd.dn(0.1), psd.dn(0.9)


(1437.071392769334, 3911.479636364713)

Or probability density functions:

>>> psd.pdf(1000)
0.00010632384327525043
>>> psd.cdf(5000)
0.9897400734854198

26 Chapter 1. fluids tutorial


Fluids Documentation, Release 0.1

Statistical distributions implemented are PSDLognormal, PSDGatesGaudinSchuhman, and


PSDRosinRammler. Discrete and continuous distributions share most methods.

>>> psd = PSDLognormal(s=0.5, d_characteristic=5E-6)


>>> psd.pdf(1e-6) # probability density function
4487.892155358317
>>> psd.cdf(7e-6) # cumulative distribution function
0.749508691386811
>>> psd.dn(0.1) # At what diameter is this fraction of particles smaller than?
2.634417591480183e-06
>>> psd.mean_size(3, 2)
4.412484512922977e-06
>>> ds = psd.ds_discrete(pts=1000) # Compare calculations with the discrete
˓→distribution

>>> fractions = psd.fractions_discrete(ds)


>>> ParticleSizeDistribution(ds=ds, fractions=fractions, order=3).mean_size(3, 2)
4.425743630583137e-06

It is straightforward to calculate descriptions of the distribution using the available routines:


Volume specific surface area:

>>> psd.vssa
1359778.1436801916

Span (D90 - D10):

>>> psd.dn(.9) - psd.dn(0.1)


6.855345945193373e-06

Relative span (D90 - D10)/D50:

>>> (psd.dn(.9) - psd.dn(0.1))/psd.dn(0.5)


1.3710691890386744

Percentile ratios, D75/D25 and D90/D10:

>>> psd.dn(0.75)/psd.dn(0.25)
1.9630310841582574
>>> psd.dn(0.9)/psd.dn(0.1)
3.602224479279158

1.21. Particle Size Distributions 27


Fluids Documentation, Release 0.1

28 Chapter 1. fluids tutorial


CHAPTER 2

API Reference

2.1 Atmospheric properties (fluids.atmosphere)

This module contains models of earth’s atmosphere. Models are empirical and based on extensive research, primarily
by NASA.
For reporting bugs, adding feature requests, or submitting pull requests, please use the GitHub issue tracker or contact
the author at [email protected].

• Atmospheres
• Solar Radiation and Position
• Wind Models (requires Fortran compiler!)

2.1.1 Atmospheres

class fluids.atmosphere.ATMOSPHERE_1976(Z, dT=0)


Bases: object
US Standard Atmosphere 1976 class, which calculates T, P, rho, v_sonic, mu, k, and g as a function of altitude
above sea level. Designed to provide reasonable results up to an elevation of 86,000 m (0.4 Pa). The model is
also valid under sea level, to -610 meters.
Parameters
Z [float] Elevation, [m]
dT [float, optional] Temperature difference from standard conditions used in determining the
properties of the atmosphere, [K]

29
Fluids Documentation, Release 0.1

Notes

Up to 32 km, the International Standard Atmosphere (ISA) and World Meteorological Organization (WMO)
standard atmosphere are identical.
This is a revision of the US 1962 atmosphere.

References

[Rf2dc4e0525c7-1], [Rf2dc4e0525c7-2], [Rf2dc4e0525c7-3]

Examples

>>> five_km = ATMOSPHERE_1976(5000)


>>> five_km.P, five_km.rho, five_km.mu
(54048.28614576141, 0.7364284207799743, 1.628248135362207e-05)
>>> five_km.k, five_km.g, five_km.v_sonic
(0.02273190295142526, 9.791241076982665, 320.5455196704035)

Attributes
T [float] Temperature of atmosphere at specified conditions, [K]
P [float] Pressure of atmosphere at specified conditions, [Pa]
rho [float] Mass density of atmosphere at specified conditions [kg/m^3]
H [float] Geopotential height, [m]
g [float] Acceleration due to gravity, [m/s^2]
mu [float] Viscosity of atmosphere at specified conditions, [Pa*s]
k [float] Thermal conductivity of atmosphere at specified conditions, [W/m/K]
v_sonic [float] Speed of sound of atmosphere at specified conditions, [m/s]

Methods

density(T, P) Method defined in the US Standard Atmosphere


1976 for calculating density of air as a function of
T and P.
gravity(Z) Method defined in the US Standard Atmosphere
1976 for calculating the gravitational acceleration
above earth as a function of elevation only.
pressure_integral(T1, P1, dH) Method to compute an integral of the pressure differ-
ential of an elevation difference with a base elevation
defined by temperature T1 and pressure P1.
sonic_velocity(T) Method defined in the US Standard Atmosphere
1976 for calculating the speed of sound in air as a
function of T only.
thermal_conductivity(T) Method defined in the US Standard Atmosphere
1976 for calculating thermal conductivity of air as
a function of T only.
Continued on next page

30 Chapter 2. API Reference


Fluids Documentation, Release 0.1

Table 1 – continued from previous page


viscosity(T) Method defined in the US Standard Atmosphere
1976 for calculating viscosity of air as a function of
T only.

R = 8314.32
static density(T, P)
Method defined in the US Standard Atmosphere 1976 for calculating density of air as a function of T and
P. MW is defined as 28.9644 g/mol, and R as 8314.32 J/kmol/K
𝑃 · 𝑀𝑊
𝜌𝑔 =
𝑇 · 𝑅 · 1000
Parameters
T [float] Temperature, [K]
P [float] Pressure, [Pa]
Returns
rho [float] Mass density, [kg/m^3]
static gravity(Z)
Method defined in the US Standard Atmosphere 1976 for calculating the gravitational acceleration above
earth as a function of elevation only.
(︂ )︂2
𝑟0
𝑔 = 𝑔0
𝑟0 + 𝑍
Parameters
Z [float] Elevation above sea level, [m]
Returns
g [float] Acceleration due to gravity, [m/s^2]
static pressure_integral(T1, P1, dH)
Method to compute an integral of the pressure differential of an elevation difference with a base elevation
defined by temperature T1 and pressure P1. This is similar to subtracting the pressures at two different
elevations, except it allows for local conditions (temperature and pressure) to be taken into account. This
is useful for e.x. evaluating the pressure difference between the top and bottom of a natural draft cooling
tower.
Parameters
T1 [float] Temperature at the lower elevation condition, [K]
P1 [float] Pressure at the lower elevation condition, [Pa]
dH [float] Elevation difference for which to evaluate the pressure difference, [m]
Returns
delta_P [float] Pressure difference between the elevations, [Pa]
static sonic_velocity(T)
Method defined in the US Standard Atmosphere 1976 for calculating the speed of sound in air as a function
of T only.
(︂ )︂0.5
𝛾𝑅𝑇
𝑐=
𝑀𝑊

2.1. Atmospheric properties (fluids.atmosphere) 31


Fluids Documentation, Release 0.1

Parameters
T [float] Temperature, [K]
Returns
c [float] Speed of sound, [m/s]
static thermal_conductivity(T)
Method defined in the US Standard Atmosphere 1976 for calculating thermal conductivity of air as a
function of T only.

2.64638 × 10−3 𝑇 1.5


𝑘𝑔 =
𝑇 + 245.4 · 10−12./𝑇
Parameters
T [float] Temperature, [K]
Returns
kg [float] Thermal conductivity, [W/m/K]
static viscosity(T)
Method defined in the US Standard Atmosphere 1976 for calculating viscosity of air as a function of T
only.

1.458 × 10−6 𝑇 1.5


𝜇𝑔 =
𝑇 + 110.4
Parameters
T [float] Temperature, [K]
Returns
mug [float] Viscosity, [Pa*s]
class fluids.atmosphere.ATMOSPHERE_NRLMSISE00(Z, latitude=0.0, longitude=0.0,
day=0, seconds=0.0, f107=150.0,
f107_avg=150.0, geomag-
netic_disturbance_indices=None)
Bases: object
NRLMSISE 00 model for calculating temperature and density of gases in the atmosphere, from ground level to
1000 km, as a function of time of year, longitude and latitude, solar activity and earth’s geomagnetic disturbance.
NRLMSISE stands for the US Naval Research Laboratory Mass Spectrometer and Incoherent Scatter Radar
Exosphere model, released in 2001; see [R4bc72d62ed0b-1] for details.
Parameters
Z [float] Elevation, [m]
latitude [float, optional] Latitude, between -90 and 90 [degrees]
longitude [float, optional] Longitude, between -180 and 180 or 0 and 360, [degrees]
day [float, optional] Day of year, 0-366 [day]
seconds [float, optional] Seconds since start of day, in UT1 time; using UTC provides no loss
in accuracy [s]
f107 [float, optional] Daily average 10.7 cm solar flux measurement of the strength of solar
emissions on the 100 MHz band centered on 2800 MHz, averaged hourly; in sfu units,
which are multiples of 10^-22 W/m^2/Hz; use 150 as a default [10^-22 W/m^2/Hz]

32 Chapter 2. API Reference


Fluids Documentation, Release 0.1

f107_avg [float, optional] 81-day sfu average; centered on specified day if possible, otherwise
use the previous days [10^-22 W/m^2/Hz]
geomagnetic_disturbance_indices [list of float, optional] List of the 7 following Ap indexes
also known as planetary magnetic indexes. Has a negligible effect on the calculation. 4 is
the default value often used for each of these values.
• Average daily Ap.
• 3-hour average Ap centered on the current time.
• 3-hour average Ap before the current time.
• 6-hour average Ap before the current time.
• 9-hour average Ap before the current time.
• Average Ap from 12 to 33 hours before the current time, based on eight 3-hour average
Ap values.
• Average Ap from 36 to 57 hours before the current time, based on eight 3-hour average
Ap values.

Notes

No full description has been published of this model; it has been defined by its implementation only. It was
written in FORTRAN, and is accessible at ftp://hanna.ccmc.gsfc.nasa.gov/pub/modelweb/atmospheric/msis/
nrlmsise00/
A C port of the model by Dominik Brodowskihas become popular, and is available on his website: http://www.
brodo.de/space/nrlmsise/.
In 2013 Joshua Milas ported the C port to Python. This is an interface to his excellent port. It is a 1000-
sloc model, and has been rigorously tested against the C version, and the online calculation tool available at
[R4bc72d62ed0b-3] for parametric inputs of latitude, longitude, altitude, time of day and day of year.
This model is based on measurements other than gravity; it does not provide a calculation method for g. It does
not provide transport properties.
This model takes on the order of ~2 ms.

References

[R4bc72d62ed0b-1], [R4bc72d62ed0b-2], [R4bc72d62ed0b-3]

Examples

>>> atmosphere = ATMOSPHERE_NRLMSISE00(1E3, 45, 45, 150)


>>> atmosphere.T, atmosphere.rho
(285.54408606237405, 1.1019062026405517)

Attributes
rho [float] Mass density [kg/m^3]
T [float] Temperature, [K]
P [float] Pressure, calculated with ideal gas law [Pa]

2.1. Atmospheric properties (fluids.atmosphere) 33


Fluids Documentation, Release 0.1

He_density [float] Density of helium atoms [count/m^3]


O_density [float] Density of monatomic oxygen [count/m^3]
N2_density [float] Density of nitrogen molecules [count/m^3]
O2_density [float] Density of oxygen molecules [count/m^3]
Ar_density [float] Density of Argon atoms [count/m^3]
H_density [float] Density of hydrogen atoms [count/m^3]
N_density [float] Density of monatomic nitrogen [count/m^3]
O_anomalous_density [float] Density of anomalous oxygen; see [R4bc72d62ed0b-1] for de-
tails [count/m^3]
particle_density [float] Total density of molecules [count/m^3]
components [list[str]] List of species making up the atmosphere [-]
zs [list[float]] Mole fractions of each molecule in the atmosphere, in order of components [-]

MWs = [28.0134, 31.9988, 39.948, 4.002602, 15.9994, 1.00794, 14.0067]


atrrs = ['N2_density', 'O2_density', 'Ar_density', 'He_density', 'O_density', 'H_densit
components = ['N2', 'O2', 'Ar', 'He', 'O', 'H', 'N']
fluids.atmosphere.airmass(func, angle, H_max=86400.0, R_planet=6371229.0, RI=1.000276)
Calculates mass of air per square meter in the atmosphere using a provided atmospheric model. The lowest air
mass is calculated straight up; as the angle is lowered to nearer and nearer the horizon, the air mass increases,
and can approach 40x or more the minimum airmass.
∫︁ ∞ {︃ [︂ ]︂2 }︃−1/2
cos 𝛾
𝑚(𝛾) = 𝜌 1 − [1 + 2(RI − 1)(1 − 𝜌/𝜌0 )] 𝑑𝐻
0 (1 + ℎ/𝑅)

Parameters
func [float] Function which returns the density of the atmosphere as a function of elevation
angle [float] Degrees above the horizon (90 = straight up), [degrees]
H_max [float, optional] Maximum height to compute the integration up to before the contribu-
tion of density becomes negligible, [m]
R_planet [float, optional] The radius of the planet for which the integration is being performed,
[m]
RI [float, optional] The refractive index of the atmosphere (air on earth at 0.7 um as default)
assumed a constant, [-]
Returns
m [float] Mass of air per square meter in the atmosphere, [kg/m^2]

Notes

Numerical integration via SciPy’s quad is used to perform the calculation.

References

[1]

34 Chapter 2. API Reference


Fluids Documentation, Release 0.1

Examples

>>> airmass(lambda Z : ATMOSPHERE_1976(Z).rho, 90)


10356.127665863998

2.1.2 Solar Radiation and Position

fluids.atmosphere.solar_position(moment, latitude, longitude, Z=0.0, T=298.15, P=101325.0,


atmos_refract=0.5667)
Calculate the position of the sun in the sky. It is defined in terms of two angles - the zenith and the azimith. The
azimuth tells where a sundial would see the sun as coming from; the zenith tells how high in the sky it is. The
solar elevation angle is returned for convinience; it is the complimentary angle of the zenith.
The sun’s refraction changes how high it appears as though the sun is; so values are returned with an optional
conversion to the aparent angle. This impacts only the zenith/elevation.
Uses the Reda and Andreas (2004) model described in [1], originally incorporated into the excellent pvlib library
Parameters
moment [datetime] Time and date for the calculation, in local UTC time (not daylight savings
time), [-]
latitude [float] Latitude, between -90 and 90 [degrees]
longitude [float] Longitude, between -180 and 180, [degrees]
Z [float, optional] Elevation above sea level for the solar position calculation, [m]
T [float, optional] Temperature of atmosphere at ground level, [K]
P [float, optional] Pressure of atmosphere at ground level, [Pa]
atmos_refract [float, optional] Atmospheric refractivity, [degrees]
Returns
apparent_zenith [float] Zenith of the sun as observed from the ground based after accounting
for atmospheric refraction, [degrees]
zenith [float] Actual zenith of the sun (ignores atmospheric refraction), [degrees]
apparent_altitude [float] Altitude of the sun as observed from the ground based after account-
ing for atmospheric refraction, [degrees]
altitude [float] Actual altitude of the sun (ignores atmospheric refraction), [degrees]
azimuth [float] The azimuth of the sun, [degrees]
equation_of_time [float] Equation of time - the number of seconds to be added to the day’s
mean solar time to obtain the apparent solar noon time, [seconds]

Notes

If you were standing at the same longitude of the sun such that it was no further east or west than you were, the
amount of angle it was south or north of you is the zenith. If it were directly overhead it would be 0°; a little
north or south and it would be a little positive; near sunset or sunrise, near 90°; and at night, between 90° and
180°.
The solar altitude angle is defined as 90° -zenith. Note the elevation angle is just another name for the altitude
angle.

2.1. Atmospheric properties (fluids.atmosphere) 35


Fluids Documentation, Release 0.1

The azimuth the angle in degrees that the sun is East of the North angle. It is positive North eastwards 0° to
360°. Other conventions may be used.
Note that due to differences in atmospheric refractivity, estimation of sunset and sunrise are accuract to no more
than one minute. Refraction conditions truly vary across the atmosphere; so characterizing it by an average
value is limiting as well.

References

[1], [2]

Examples

>>> solar_position(datetime(2003, 10, 17, 13, 30, 30), 45, 45)


[140.8367913391112, 140.8367913391112, -50.83679133911118, -50.83679133911118,
˓→329.9096671679604, 878.4902950980904]

Sunrise occurs when the zenith is 90 degrees (Calgary, AB):

>>> solar_position(datetime(2018, 4, 15, 6, 43, 5), 51.0486, -114.07)[0]


90.00054676987014

Sunrise also occurs when the zenith is 90 degrees (13.5 hours later):

>>> solar_position(datetime(2018, 4, 15, 20, 30, 28), 51.0486, -114.07)


[89.9995695661236, 90.54103812161853, 0.00043043387640950836, -0.5410381216185247,
˓→ 286.8313781904518, 6.631429525878048]

fluids.atmosphere.solar_irradiation(latitude, longitude, Z, moment, surface_tilt,


surface_azimuth, T=None, P=None, so-
lar_constant=1366.1, atmos_refract=0.5667,
albedo=0.25, linke_turbidity=None, ex-
traradiation_method=’spencer’, air-
mass_model=’kastenyoung1989’, cache=None)
Calculates the amount of solar radiation and radiation reflected back the atmosphere which hits a surface at a
specified tilt, and facing a specified azimuth.
This functions is a wrapper for the incredibly comprehensive pvlib library, and requires it to be installed.
Parameters
latitude [float] Latitude, between -90 and 90 [degrees]
longitude [float] Longitude, between -180 and 180, [degrees]
Z [float, optional] Elevation above sea level for the position, [m]
moment [datetime] Time and date for the calculation, in local UTC time (not daylight savings
time), [-]
surface_tilt [float] The angle above the horizontal of the object being hit by radiation, [degrees]
surface_azimuth [float] The angle the object is facing (positive North eastwards 0° to 360°),
[degrees]
T [float, optional] Temperature of atmosphere at ground level, [K]
P [float, optional] Pressure of atmosphere at ground level, [Pa]

36 Chapter 2. API Reference


Fluids Documentation, Release 0.1

solar_constant [float, optional] The amount of solar radiation which reaches earth’s disk (at
a standardized distance of 1 AU); this constant is independent of activity or conditions on
earth, but will vary throughout the sun’s lifetime and may increase or decrease slightly due
to solar activity, [W/m^2]
atmos_refract [float, optional] Atmospheric refractivity at sunrise/sunset (0.5667 deg is an of-
ten used value; this varies substantially and has an impact of a few minutes on when sunrise
and sunset is), [degrees]
albedo [float, optional] The average amount of reflection of the terrain surrounding the object
at quite a distance; this impacts how much sunlight reflected off the ground, gest reflected
back off clouds, [-]
linke_turbidity [float, optional] The amount of pollution/water in the sky versus a perfect clear
sky; If not specified, this will be retrieved from a historical grid; typical values are 3 for
cloudy, and 7 for severe pollution around a city, [-]
extraradiation_method [str, optional] The specified method to calculate the effect of earth’s
position on the amount of radiation which reaches earth according to the methods available
in the pvlib library, [-]
airmass_model [str, optional] The specified method to calculate the amount of air the sunlight
needs to travel through to reach the earth according to the methods available in the pvlib
library, [-]
cache [dict, optional] Dictionary to to check for values to use to skip some calculations; appar-
ent_zenith, zenith, azimuth supported, [-]
Returns
poa_global [float] The total irradiance in the plane of the surface, [W/m^2]
poa_direct [float] The total beam irradiance in the plane of the surface, [W/m^2]
poa_diffuse [float] The total diffuse irradiance in the plane of the surface, [W/m^2]
poa_sky_diffuse [float] The sky component of the diffuse irradiance, excluding the impact from
the ground, [W/m^2]
poa_ground_diffuse [float] The ground-sky diffuse irradiance component, [W/m^2]

Notes

The retrieval of linke_turbidity requires the pytables library (and Pandas); if it is not installed, specify a value of
linke_turbidity to avoid the dependency.
There is some redundancy of the calculated results, according to the following relations. The total irradiance is
normally that desired for engineering calculations.
poa_diffuse = poa_ground_diffuse + poa_sky_diffuse
poa_global = poa_direct + poa_diffuse
FOr a surface such as a pipe or vessel, an approach would be to split it into a number of rectangles and sum up
the radiation absorbed by each.
This calculation is fairly slow.

References

[1]

2.1. Atmospheric properties (fluids.atmosphere) 37


Fluids Documentation, Release 0.1

Examples

>>> solar_irradiation(Z=1100.0, latitude=51.0486, longitude=-114.07,


... moment=datetime(2018, 4, 15, 13, 43, 5), surface_tilt=41.0,
... surface_azimuth=180.0)
(1065.7621896280812, 945.2656564506323, 120.49653317744884, 95.31535344213178, 25.
˓→181179735317063)

>>> cache = {'apparent_zenith': 41.099082295767545, 'zenith': 41.11285376417578,


˓→'azimuth': 182.5631874250523}

>>> solar_irradiation(Z=1100.0, latitude=51.0486, longitude=-114.07,


... moment=datetime(2018, 4, 15, 13, 43, 5), surface_tilt=41.0,
... linke_turbidity=3, T=300, P=1E5,
... surface_azimuth=180.0, cache=cache)
(1042.5677703677097, 918.2377548545295, 124.33001551318027, 99.6228657378363, 24.
˓→70714977534396)

At night, there is no solar radiation and this function returns zeros:

>>> solar_irradiation(Z=1100.0, latitude=51.0486, longitude=-114.07,


... moment=datetime(2018, 4, 15, 2, 43, 5), surface_tilt=41.0,
... surface_azimuth=180.0)
(0.0, -0.0, 0.0, 0.0, 0.0)

fluids.atmosphere.sunrise_sunset(moment, latitude, longitude)


Calculates the times at which the sun is at sunset; sunrise; and halfway between sunrise and sunset (transit).
Uses the Reda and Andreas (2004) model described in [1], originally incorporated into the excellent pvlib library
Parameters
moment [datetime] Date for the calculation; needs to contain only the year, month, and day, [-]
latitude [float] Latitude, between -90 and 90 [degrees]
longitude [float] Longitude, between -180 and 180, [degrees]
Returns
sunrise [datetime] The time at the specified day when the sun rises IN UTC, [-]
sunset [datetime] The time at the specified day when the sun sets IN UTC, [-]
transit [datetime] The time at the specified day when the sun is at solar noon - halfway between
sunrise and sunset IN UTC, [-]

Notes

This functions takes on the order of 2 ms per calculation.


The reason the function cannot return the time correct the local timezone is that the function does not know the
timezone at the specified lat/long.

References

[1]

38 Chapter 2. API Reference


Fluids Documentation, Release 0.1

Examples

>>> sunrise, sunset, transit = sunrise_sunset(datetime(2018, 4, 17),


... 51.0486, -114.07)
>>> sunrise
datetime.datetime(2018, 4, 17, 12, 36, 55, 782660)
>>> sunset
datetime.datetime(2018, 4, 18, 2, 34, 4, 249326)
>>> transit
datetime.datetime(2018, 4, 17, 19, 35, 46, 686265)

fluids.atmosphere.earthsun_distance(moment)
Calculates the distance between the earth and the sun as a function of date and time. Uses the Reda and Andreas
(2004) model described in [1], originally incorporated into the excellent pvlib library
Parameters
moment [datetime] Time and date for the calculation, in UTC time (or GMT, which is almost
the same thing); not local time, [-]
Returns
distance [float] Distance between the center of the earth and the center of the sun, [m]

Notes

This function is quite accurate. The difference comes from the impact of the moon.
Note this function is not continuous; the sun-earth distance is not sufficiently accurately modeled for the change
to be continuous throughout each day.

References

[1]

Examples

>>> earthsun_distance(datetime(2003, 10, 17, 13, 30, 30))


149090925951.18338

The distance at perihelion, which occurs at 4:21 according to this algorithm. The real value is 04:38 (January
2nd).

>>> earthsun_distance(datetime(2013, 1, 2, 4, 21, 50))


147098089490.67123

The distance at aphelion, which occurs at 14:44 according to this algorithm. The real value is dead on - 14:44
(July 5).

>>> earthsun_distance(datetime(2013, 7, 5, 14, 44, 51, 0))


152097354414.36044

2.1. Atmospheric properties (fluids.atmosphere) 39


Fluids Documentation, Release 0.1

2.1.3 Wind Models (requires Fortran compiler!)

fluids.atmosphere.hwm93(Z, latitude=0, longitude=0, day=0, seconds=0, f107=150.0,


f107_avg=150.0, geomagnetic_disturbance_index=4)
Horizontal Wind Model 1993, for calculating wind velocity in the atmosphere as a function of time of year,
longitude and latitude, solar activity and earth’s geomagnetic disturbance.
The model is described across the publications [1], [2], and [3].
Parameters
Z [float] Elevation, [m]
latitude [float, optional] Latitude, between -90 and 90 [degrees]
longitude [float, optional] Longitude, between -180 and 180 or 0 and 360, [degrees]
day [float, optional] Day of year, 0-366 [day]
seconds [float, optional] Seconds since start of day, in UT1 time; using UTC provides no loss
in accuracy [s]
f107 [float, optional] Daily average 10.7 cm solar flux measurement of the strength of solar
emissions on the 100 MHz band centered on 2800 MHz, averaged hourly; in sfu units,
which are multiples of 10^-22 W/m^2/Hz; use 150 as a default [W/m^2/Hz]
f107_avg [float, optional] 81-day sfu average; centered on specified day if possible, otherwise
use the previous days [W/m^2/Hz]
geomagnetic_disturbance_index [float, optional] Average daily Ap or also known as planetary
magnetic index.
Returns
v_north [float] Wind velocity, meridional (Northward) [m/s]
v_east [float] Wind velocity, zonal (Eastward) [m/s]

Notes

No full description has been published of this model; it has been defined by its implementation only. It was
written in FORTRAN, and is accessible at ftp://hanna.ccmc.gsfc.nasa.gov/pub/modelweb/atmospheric/hwm93/.
F2PY auto-compilation support is not yet currently supported. To compile this file, run the following command
in a shell after navigating to $FLUIDSPATH/fluids/optional/. This should generate the file hwm93.so in that
directory.
f2py -c hwm93.pyf hwm93.for –f77flags=”-std=legacy”
If the module is not compiled, an import error will be raised.

References

[1], [2], [3]

Examples

>>> hwm93(5E5, 45, 50, 365)


(-73.00312042236328, 0.1485661268234253)

40 Chapter 2. API Reference


Fluids Documentation, Release 0.1

fluids.atmosphere.hwm14(Z, latitude=0, longitude=0, day=0, seconds=0, geomag-


netic_disturbance_index=4)
Horizontal Wind Model 2014, for calculating wind velocity in the atmosphere as a function of time of year,
longitude and latitude, and earth’s geomagnetic disturbance. The model is described in [1].
The model no longer accounts for solar flux.
Parameters
Z [float] Elevation, [m]
latitude [float, optional] Latitude, between -90 and 90 [degrees]
longitude [float, optional] Longitude, between -180 and 180 or 0 and 360, [degrees]
day [float, optional] Day of year, 0-366 [day]
seconds [float, optional] Seconds since start of day, in UT1 time; using UTC provides no loss
in accuracy [s]
geomagnetic_disturbance_index [float, optional] Average daily Ap or also known as planetary
magnetic index.
Returns
v_north [float] Wind velocity, meridional (Northward) [m/s]
v_east [float] Wind velocity, zonal (Eastward) [m/s]

Notes

No full description has been published of this model; it has been defined by its implementation only. It was
written in FORTRAN, and is accessible at http://onlinelibrary.wiley.com/store/10.1002/2014EA000089/asset/
supinfo/ess224-sup-0002-supinfo.tgz?v=1&s=2a957ba70b7cf9dd0612d9430076297c3634ea75.
F2PY auto-compilation support is not yet currently supported. To compile this file, run the following command
in a shell after navigating to $FLUIDSPATH/fluids/optional/. This should generate the file hwm14.so in that
directory.
f2py -c hwm14.pyf hwm14.f90
The fortran .pyf signature file is included with this project, but it can also be re-created with the command:
f2py -m hwm14 -h hwm14.pyf hwm14.f90
If the module is not compiled, an import error will be raised.
No patches were necessary to either the generated pyf or hwm14.f90 file, as the authors of [1] have made it
F2PY compatible.
Developed using 73 million data points taken by 44 instruments over 60 years.

References

[1]

Examples

>>> hwm14(5E5, 45, 50, 365)


(-38.64341354370117, 12.871272087097168)

2.1. Atmospheric properties (fluids.atmosphere) 41


Fluids Documentation, Release 0.1

2.2 Compressible flow and compressor sizing (fluids.compressible)

fluids.compressible.Panhandle_A(SG, Tavg, L=None, D=None, P1=None, P2=None, Q=None,


Ts=288.7, Ps=101325.0, Zavg=1, E=0.92)
Calculation function for dealing with flow of a compressible gas in a pipeline with the Panhandle A formula.
Can calculate any of the following, given all other inputs:
• Flow rate
• Upstream pressure
• Downstream pressure
• Diameter of pipe
• Length of pipe
A variety of different constants and expressions have been presented for the Panhandle A equation. Here, a new
form is developed with all units in base SI, based on the work of [1].
)︂1.0788 [︂ ]︂0.5394
𝑃12 − 𝑃22
(︂
𝑇𝑠
𝑄 = 158.02053𝐸 𝐷2.6182
𝑃𝑠 𝐿 · 𝑆𝐺0.8539 𝑇𝑎𝑣𝑔 𝑍𝑎𝑣𝑔

Parameters
SG [float] Specific gravity of fluid with respect to air at the reference temperature and pressure
Ts and Ps, [-]
Tavg [float] Average temperature of the fluid in the pipeline, [K]
L [float, optional] Length of pipe, [m]
D [float, optional] Diameter of pipe, [m]
P1 [float, optional] Inlet pressure to pipe, [Pa]
P2 [float, optional] Outlet pressure from pipe, [Pa]
Q [float, optional] Flow rate of gas through pipe, [m^3/s]
Ts [float, optional] Reference temperature for the specific gravity of the gas, [K]
Ps [float, optional] Reference pressure for the specific gravity of the gas, [Pa]
Zavg [float, optional] Average compressibility factor for gas, [-]
E [float, optional] Pipeline efficiency, a correction factor between 0 and 1
Returns
Q, P1, P2, D, or L [float] The missing input which was solved for [base SI]

Notes

[1]’s original constant was 4.5965E-3, and it has units of km (length), kPa, mm (diameter), and flowrate in
m^3/day.
The form in [2] has the same exponents as used here, units of mm (diameter), kPa, km (length), and flow in
m^3/hour; its leading constant is 1.9152E-4.
The GPSA [3] has a leading constant of 0.191, a bracketed power of 0.5392, a specific gravity power of 0.853,
and otherwise the same constants. It is in units of mm (diameter) and kPa and m^3/day; length is stated to be in
km, but according to the errata is in m.

42 Chapter 2. API Reference


Fluids Documentation, Release 0.1

[4] has a leading constant of 1.198E7, a specific gravity of power of 0.8541, and a power of diameter which is
under the root of 4.854 and is otherwise the same. It has units of kPa and m^3/day, but is otherwise in base SI
units.
[5] has a leading constant of 99.5211, but its reference correction has no exponent; other exponents are the same
as here. It is entirely in base SI units.
[6] has pressures in psi, diameter in inches, length in miles, Q in ft^3/day, T in degrees Rankine, and a constant
of 435.87. Its reference condition power is 1.07881, and it has a specific gravity correction outside any other
term with a power of 0.4604.

References

[1], [2], [3], [4], [5], [6]

Examples

>>> Panhandle_A(D=0.340, P1=90E5, P2=20E5, L=160E3, SG=0.693, Tavg=277.15)


42.56082051195928

fluids.compressible.Panhandle_B(SG, Tavg, L=None, D=None, P1=None, P2=None, Q=None,


Ts=288.7, Ps=101325.0, Zavg=1, E=0.92)
Calculation function for dealing with flow of a compressible gas in a pipeline with the Panhandle B formula.
Can calculate any of the following, given all other inputs:
• Flow rate
• Upstream pressure
• Downstream pressure
• Diameter of pipe
• Length of pipe
A variety of different constants and expressions have been presented for the Panhandle B equation. Here, a new
form is developed with all units in base SI, based on the work of [1].
)︂1.02 [︂ ]︂0.51
𝑃12 − 𝑃22
(︂
𝑇𝑠
𝑄 = 152.88116𝐸 𝐷2.53
𝑃𝑠 𝐿 · 𝑆𝐺0.961 𝑇𝑎𝑣𝑔 𝑍𝑎𝑣𝑔

Parameters
SG [float] Specific gravity of fluid with respect to air at the reference temperature and pressure
Ts and Ps, [-]
Tavg [float] Average temperature of the fluid in the pipeline, [K]
L [float, optional] Length of pipe, [m]
D [float, optional] Diameter of pipe, [m]
P1 [float, optional] Inlet pressure to pipe, [Pa]
P2 [float, optional] Outlet pressure from pipe, [Pa]
Q [float, optional] Flow rate of gas through pipe, [m^3/s]
Ts [float, optional] Reference temperature for the specific gravity of the gas, [K]
Ps [float, optional] Reference pressure for the specific gravity of the gas, [Pa]

2.2. Compressible flow and compressor sizing (fluids.compressible) 43


Fluids Documentation, Release 0.1

Zavg [float, optional] Average compressibility factor for gas, [-]


E [float, optional] Pipeline efficiency, a correction factor between 0 and 1
Returns
Q, P1, P2, D, or L [float] The missing input which was solved for [base SI]

Notes

[1]’s original constant was 1.002E-2, and it has units of km (length), kPa, mm (diameter), and flowrate in
m^3/day.
The form in [2] has the same exponents as used here, units of mm (diameter), kPa, km (length), and flow in
m^3/hour; its leading constant is 4.1749E-4.
The GPSA [3] has a leading constant of 0.339, and otherwise the same constants. It is in units of mm (diameter)
and kPa and m^3/day; length is stated to be in km, but according to the errata is in m.
[4] has a leading constant of 1.264E7, a diameter power of 4.961 which is also under the 0.51 power, and is
otherwise the same. It has units of kPa and m^3/day, but is otherwise in base SI units.
[5] has a leading constant of 135.8699, but its reference correction has no exponent and its specific gravity has
a power of 0.9608; the other exponents are the same as here. It is entirely in base SI units.
[6] has pressures in psi, diameter in inches, length in miles, Q in ft^3/day, T in degrees Rankine, and a constant
of 737 with the exponents the same as here.

References

[1], [2], [3], [4], [5], [6]

Examples

>>> Panhandle_B(D=0.340, P1=90E5, P2=20E5, L=160E3, SG=0.693, Tavg=277.15)


42.35366178004172

fluids.compressible.Weymouth(SG, Tavg, L=None, D=None, P1=None, P2=None, Q=None,


Ts=288.7, Ps=101325.0, Zavg=1, E=0.92)
Calculation function for dealing with flow of a compressible gas in a pipeline with the Weymouth formula. Can
calculate any of the following, given all other inputs:
• Flow rate
• Upstream pressure
• Downstream pressure
• Diameter of pipe
• Length of pipe
A variety of different constants and expressions have been presented for the Weymouth equation. Here, a new
form is developed with all units in base SI, based on the work of [1].
]︂0.5
𝑃12 − 𝑃22
[︂
𝑇𝑠
𝑄 = 137.32958𝐸 𝐷2.667
𝑃𝑠 𝐿 · 𝑆𝐺 · 𝑇𝑎𝑣𝑔 𝑍𝑎𝑣𝑔

Parameters

44 Chapter 2. API Reference


Fluids Documentation, Release 0.1

SG [float] Specific gravity of fluid with respect to air at the reference temperature and pressure
Ts and Ps, [-]
Tavg [float] Average temperature of the fluid in the pipeline, [K]
L [float, optional] Length of pipe, [m]
D [float, optional] Diameter of pipe, [m]
P1 [float, optional] Inlet pressure to pipe, [Pa]
P2 [float, optional] Outlet pressure from pipe, [Pa]
Q [float, optional] Flow rate of gas through pipe, [m^3/s]
Ts [float, optional] Reference temperature for the specific gravity of the gas, [K]
Ps [float, optional] Reference pressure for the specific gravity of the gas, [Pa]
Zavg [float, optional] Average compressibility factor for gas, [-]
E [float, optional] Pipeline efficiency, a correction factor between 0 and 1
Returns
Q, P1, P2, D, or L [float] The missing input which was solved for [base SI]

Notes

[1]’s original constant was 3.7435E-3, and it has units of km (length), kPa, mm (diameter), and flowrate in
m^3/day.
The form in [2] has the same exponents as used here, units of mm (diameter), kPa, km (length), and flow in
m^3/hour; its leading constant is 1.5598E-4.
The GPSA [3] has a leading constant of 0.1182, and otherwise the same constants. It is in units of mm (diameter)
and kPa and m^3/day; length is stated to be in km, but according to the errata is in m.
[4] has a leading constant of 1.162E7, a diameter power of 5.333 which is also under the 0.50 power, and is
otherwise the same. It has units of kPa and m^3/day, but is otherwise in base SI units.
[5] has a leading constant of 137.2364; the other exponents are the same as here. It is entirely in base SI units.
[6] has pressures in psi, diameter in inches, length in miles, Q in ft^3/hour, T in degrees Rankine, and a constant
of 18.062 with the exponents the same as here.

References

[1], [2], [3], [4], [5], [6]

Examples

>>> Weymouth(D=0.340, P1=90E5, P2=20E5, L=160E3, SG=0.693, Tavg=277.15)


32.07729055913029

fluids.compressible.Spitzglass_high(SG, Tavg, L=None, D=None, P1=None, P2=None,


Q=None, Ts=288.7, Ps=101325.0, Zavg=1, E=1.0)
Calculation function for dealing with flow of a compressible gas in a pipeline with the Spitzglass (high pressure
drop) formula. Can calculate any of the following, given all other inputs:
• Flow rate

2.2. Compressible flow and compressor sizing (fluids.compressible) 45


Fluids Documentation, Release 0.1

• Upstream pressure
• Downstream pressure
• Diameter of pipe (numerical solution)
• Length of pipe
A variety of different constants and expressions have been presented for the Spitzglass (high pressure drop)
formula. Here, the form as in [1] is used but with a more precise metric conversion from inches to m.
]︂0.5
𝑃12 − 𝑃22
(︂ )︂ [︂
𝑇𝑠
𝑄 = 125.1060𝐸 150 𝐷2.5
𝑃𝑠 𝐿 · 𝑆𝐺𝑇𝑎𝑣𝑔 𝑍𝑎𝑣𝑔 (1 + 0.09144/𝐷 + 127 𝐷)

Parameters
SG [float] Specific gravity of fluid with respect to air at the reference temperature and pressure
Ts and Ps, [-]
Tavg [float] Average temperature of the fluid in the pipeline, [K]
L [float, optional] Length of pipe, [m]
D [float, optional] Diameter of pipe, [m]
P1 [float, optional] Inlet pressure to pipe, [Pa]
P2 [float, optional] Outlet pressure from pipe, [Pa]
Q [float, optional] Flow rate of gas through pipe, [m^3/s]
Ts [float, optional] Reference temperature for the specific gravity of the gas, [K]
Ps [float, optional] Reference pressure for the specific gravity of the gas, [Pa]
Zavg [float, optional] Average compressibility factor for gas, [-]
E [float, optional] Pipeline efficiency, a correction factor between 0 and 1
Returns
Q, P1, P2, D, or L [float] The missing input which was solved for [base SI]

Notes

This equation is often presented without any correction for reference conditions for specific gravity.
This model is also presented in [2] with a leading constant of 1.0815E-2, the same exponents as used here, units
of mm (diameter), kPa, km (length), and flow in m^3/hour.

References

[1], [2]

Examples

>>> Spitzglass_high(D=0.340, P1=90E5, P2=20E5, L=160E3, SG=0.693, Tavg=277.15)


29.42670246281681

46 Chapter 2. API Reference


Fluids Documentation, Release 0.1

fluids.compressible.Spitzglass_low(SG, Tavg, L=None, D=None, P1=None, P2=None,


Q=None, Ts=288.7, Ps=101325.0, Zavg=1, E=1.0)
Calculation function for dealing with flow of a compressible gas in a pipeline with the Spitzglass (low pressure
drop) formula. Can calculate any of the following, given all other inputs:
• Flow rate
• Upstream pressure
• Downstream pressure
• Diameter of pipe (numerical solution)
• Length of pipe
A variety of different constants and expressions have been presented for the Spitzglass (low pressure drop)
formula. Here, the form as in [1] is used but with a more precise metric conversion from inches to m.
(︂ )︂ [︂ ]︂0.5
𝑇𝑠 2(𝑃1 − 𝑃2 )(𝑃𝑠 + 1210)
𝑄 = 125.1060𝐸 𝐷2.5
𝑃𝑠 𝐿 · 𝑆𝐺 · 𝑇𝑎𝑣𝑔 𝑍𝑎𝑣𝑔 (1 + 0.09144/𝐷 + 150127 𝐷)
Parameters
SG [float] Specific gravity of fluid with respect to air at the reference temperature and pressure
Ts and Ps, [-]
Tavg [float] Average temperature of the fluid in the pipeline, [K]
L [float, optional] Length of pipe, [m]
D [float, optional] Diameter of pipe, [m]
P1 [float, optional] Inlet pressure to pipe, [Pa]
P2 [float, optional] Outlet pressure from pipe, [Pa]
Q [float, optional] Flow rate of gas through pipe, [m^3/s]
Ts [float, optional] Reference temperature for the specific gravity of the gas, [K]
Ps [float, optional] Reference pressure for the specific gravity of the gas, [Pa]
Zavg [float, optional] Average compressibility factor for gas, [-]
E [float, optional] Pipeline efficiency, a correction factor between 0 and 1
Returns
Q, P1, P2, D, or L [float] The missing input which was solved for [base SI]

Notes

This equation is often presented without any correction for reference conditions for specific gravity.
This model is also presented in [2] with a leading constant of 5.69E-2, the same exponents as used here, units
of mm (diameter), kPa, km (length), and flow in m^3/hour. However, it is believed to contain a typo, and gives
results <1/3 of the correct values. It is also present in [2] in imperial form; this is believed correct, but makes a
slight assumption not done in [1].
This model is present in [3] without reference corrections. The 1210 constant in [1] is an approximation neces-
sary for the reference correction to function without a square of the pressure difference. The GPSA version is
as follows, and matches this formulation very closely:
]︂0.5
(𝑃1 − 𝑃2 )𝐷5
[︂
𝑄 = 0.821
𝐿 · 𝑆𝐺(1 + 91.44/𝐷 + 0.0018𝐷)

2.2. Compressible flow and compressor sizing (fluids.compressible) 47


Fluids Documentation, Release 0.1

The model is also shown in [4], with diameter in inches, length in feet, flow in MMSCFD, pressure drop in
inH2O, and a rounded leading constant of 0.09; this makes its predictions several percent higher than the model
here.

References

[1], [2], [3], [4]

Examples

>>> Spitzglass_low(D=0.154051, P1=6720.3199, P2=0, L=54.864, SG=0.6, Tavg=288.7)


0.9488775242530617

fluids.compressible.Oliphant(SG, Tavg, L=None, D=None, P1=None, P2=None, Q=None,


Ts=288.7, Ps=101325.0, Zavg=1, E=0.92)
Calculation function for dealing with flow of a compressible gas in a pipeline with the Oliphant formula. Can
calculate any of the following, given all other inputs:
• Flow rate
• Upstream pressure
• Downstream pressure
• Diameter of pipe (numerical solution)
• Length of pipe
This model is a more complete conversion to metric of the Imperial version presented in [1].
)︂0.5
𝑃12 − 𝑃22
(︂
)︀ 𝑇𝑠
𝑄 = 84.5872 𝐷2.5 + 0.20915𝐷3
(︀
𝑃𝑠 𝐿 · 𝑆𝐺 · 𝑇𝑎𝑣𝑔

Parameters
SG [float] Specific gravity of fluid with respect to air at the reference temperature and pressure
Ts and Ps, [-]
Tavg [float] Average temperature of the fluid in the pipeline, [K]
L [float, optional] Length of pipe, [m]
D [float, optional] Diameter of pipe, [m]
P1 [float, optional] Inlet pressure to pipe, [Pa]
P2 [float, optional] Outlet pressure from pipe, [Pa]
Q [float, optional] Flow rate of gas through pipe, [m^3/s]
Ts [float, optional] Reference temperature for the specific gravity of the gas, [K]
Ps [float, optional] Reference pressure for the specific gravity of the gas, [Pa]
Zavg [float, optional] Average compressibility factor for gas, [-]
E [float, optional] Pipeline efficiency, a correction factor between 0 and 1
Returns
Q, P1, P2, D, or L [float] The missing input which was solved for [base SI]

48 Chapter 2. API Reference


Fluids Documentation, Release 0.1

Notes

Recommended in [1] for use between vacuum and 100 psi.


The model is simplified by grouping constants here; however, it is presented in the imperial unit set inches
(diameter), miles (length), psi, Rankine, and MMSCFD in [1]:
)︂]︂0.5
𝐷3
)︂ (︂ 2
𝑃1 − 𝑃22
(︂ )︂ (︂ )︂ (︂ )︂ [︂(︂ )︂ (︂
14.4 𝑇𝑠 0.6 520
𝑄 = 42(24) 𝐷2.5 +
30 𝑃𝑠 520 𝑆𝐺 𝑇𝑎𝑣𝑔 𝐿

References

[1], [2]

Examples

>>> Oliphant(D=0.340, P1=90E5, P2=20E5, L=160E3, SG=0.693, Tavg=277.15)


28.851535408143057

fluids.compressible.Fritzsche(SG, Tavg, L=None, D=None, P1=None, P2=None, Q=None,


Ts=288.7, Ps=101325.0, Zavg=1, E=1)
Calculation function for dealing with flow of a compressible gas in a pipeline with the Fritzsche formula. Can
calculate any of the following, given all other inputs:
• Flow rate
• Upstream pressure
• Downstream pressure
• Diameter of pipe
• Length of pipe
A variety of different constants and expressions have been presented for the Fritzsche formula. Here, the form
as in [1] is used but with all inputs in base SI units.
)︂0.538
𝑃12 − 𝑃22
(︂
𝑇𝑠
𝑄 = 93.500 𝐷2.69
𝑃𝑠 𝐿 · 𝑆𝐺0.8587 · 𝑇𝑎𝑣𝑔

Parameters
SG [float] Specific gravity of fluid with respect to air at the reference temperature and pressure
Ts and Ps, [-]
Tavg [float] Average temperature of the fluid in the pipeline, [K]
L [float, optional] Length of pipe, [m]
D [float, optional] Diameter of pipe, [m]
P1 [float, optional] Inlet pressure to pipe, [Pa]
P2 [float, optional] Outlet pressure from pipe, [Pa]
Q [float, optional] Flow rate of gas through pipe, [m^3/s]
Ts [float, optional] Reference temperature for the specific gravity of the gas, [K]
Ps [float, optional] Reference pressure for the specific gravity of the gas, [Pa]

2.2. Compressible flow and compressor sizing (fluids.compressible) 49


Fluids Documentation, Release 0.1

Zavg [float, optional] Average compressibility factor for gas, [-]


E [float, optional] Pipeline efficiency, a correction factor between 0 and 1
Returns
Q, P1, P2, D, or L [float] The missing input which was solved for [base SI]

Notes

This model is also presented in [1] with a leading constant of 2.827, the same exponents as used here, units of
mm (diameter), kPa, km (length), and flow in m^3/hour.
This model is shown in base SI units in [2], and with a leading constant of 94.2565, a diameter power of 2.6911,
main group power of 0.5382 and a specific gravity power of 0.858. The difference is very small.

References

[1], [2]

Examples

>>> Fritzsche(D=0.340, P1=90E5, P2=20E5, L=160E3, SG=0.693, Tavg=277.15)


39.421535157535565

fluids.compressible.Muller(SG, Tavg, mu, L=None, D=None, P1=None, P2=None, Q=None,


Ts=288.7, Ps=101325.0, Zavg=1, E=1)
Calculation function for dealing with flow of a compressible gas in a pipeline with the Muller formula. Can
calculate any of the following, given all other inputs:
• Flow rate
• Upstream pressure
• Downstream pressure
• Diameter of pipe
• Length of pipe
A variety of different constants and expressions have been presented for the Muller formula. Here, the form as
in [1] is used but with all inputs in base SI units.
)︂0.575 (︂
𝑃12 − 𝑃22 𝐷2.725
(︂ )︂
𝑇𝑠
𝑄 = 15.7743 𝐸
𝑃𝑠 𝐿 · 𝑍𝑎𝑣𝑔 · 𝑇𝑎𝑣𝑔 𝜇 𝑆𝐺0.425
0.15

Parameters
SG [float] Specific gravity of fluid with respect to air at the reference temperature and pressure
Ts and Ps, [-]
Tavg [float] Average temperature of the fluid in the pipeline, [K]
mu [float] Average viscosity of the fluid in the pipeline, [Pa*s]
L [float, optional] Length of pipe, [m]
D [float, optional] Diameter of pipe, [m]
P1 [float, optional] Inlet pressure to pipe, [Pa]

50 Chapter 2. API Reference


Fluids Documentation, Release 0.1

P2 [float, optional] Outlet pressure from pipe, [Pa]


Q [float, optional] Flow rate of gas through pipe, [m^3/s]
Ts [float, optional] Reference temperature for the specific gravity of the gas, [K]
Ps [float, optional] Reference pressure for the specific gravity of the gas, [Pa]
Zavg [float, optional] Average compressibility factor for gas, [-]
E [float, optional] Pipeline efficiency, a correction factor between 0 and 1
Returns
Q, P1, P2, D, or L [float] The missing input which was solved for [base SI]

Notes

This model is presented in [1] with a leading constant of 0.4937, the same exponents as used here, units of
inches (diameter), psi, feet (length), Rankine, pound/(foot*second) for viscosity, and 1000 ft^3/hour.
This model is also presented in [2] in both SI and imperial form. The SI form was incorrectly converted and
yields much higher flow rates. The imperial version has a leading constant of 85.7368, the same powers as used
here except with rounded values of powers of viscosity (0.2609) and specific gravity (0.7391) rearranged to be
inside the bracketed group; its units are inches (diameter), psi, miles (length), Rankine, pound/(foot*second) for
viscosity, and ft^3/day.
This model is shown in base SI units in [3], and with a leading constant of 15.7650, a diameter power of 2.724,
main group power of 0.5747, a specific gravity power of 0.74, and a viscosity power of 0.1494.

References

[1], [2], [3]

Examples

>>> Muller(D=0.340, P1=90E5, P2=20E5, L=160E3, SG=0.693, mu=1E-5,


... Tavg=277.15)
60.45796698148659

fluids.compressible.IGT(SG, Tavg, mu, L=None, D=None, P1=None, P2=None, Q=None,


Ts=288.7, Ps=101325.0, Zavg=1, E=1)
Calculation function for dealing with flow of a compressible gas in a pipeline with the IGT formula. Can
calculate any of the following, given all other inputs:
• Flow rate
• Upstream pressure
• Downstream pressure
• Diameter of pipe
• Length of pipe
A variety of different constants and expressions have been presented for the IGT formula. Here, the form as in
[1] is used but with all inputs in base SI units.
)︂5/9 (︂
𝑃12 − 𝑃22 𝐷8/3
(︂ )︂
𝑇𝑠
𝑄 = 24.6241 𝐸
𝑃𝑠 𝐿 · 𝑍𝑎𝑣𝑔 · 𝑇𝑎𝑣𝑔 𝜇 𝑆𝐺4/9
1/9

2.2. Compressible flow and compressor sizing (fluids.compressible) 51


Fluids Documentation, Release 0.1

Parameters
SG [float] Specific gravity of fluid with respect to air at the reference temperature and pressure
Ts and Ps, [-]
Tavg [float] Average temperature of the fluid in the pipeline, [K]
mu [float] Average viscosity of the fluid in the pipeline, [Pa*s]
L [float, optional] Length of pipe, [m]
D [float, optional] Diameter of pipe, [m]
P1 [float, optional] Inlet pressure to pipe, [Pa]
P2 [float, optional] Outlet pressure from pipe, [Pa]
Q [float, optional] Flow rate of gas through pipe, [m^3/s]
Ts [float, optional] Reference temperature for the specific gravity of the gas, [K]
Ps [float, optional] Reference pressure for the specific gravity of the gas, [Pa]
Zavg [float, optional] Average compressibility factor for gas, [-]
E [float, optional] Pipeline efficiency, a correction factor between 0 and 1
Returns
Q, P1, P2, D, or L [float] The missing input which was solved for [base SI]

Notes

This model is presented in [1] with a leading constant of 0.6643, the same exponents as used here, units of
inches (diameter), psi, feet (length), Rankine, pound/(foot*second) for viscosity, and 1000 ft^3/hour.
This model is also presented in [2] in both SI and imperial form. Both forms are correct. The imperial version
has a leading constant of 136.9, the same powers as used here except with rounded values of powers of viscosity
(0.2) and specific gravity (0.8) rearranged to be inside the bracketed group; its units are inches (diameter), psi,
miles (length), Rankine, pound/(foot*second) for viscosity, and ft^3/day.
This model is shown in base SI units in [3], and with a leading constant of 24.6145, and the same powers as
used here.

References

[1], [2], [3]

Examples

>>> IGT(D=0.340, P1=90E5, P2=20E5, L=160E3, SG=0.693, mu=1E-5, Tavg=277.15)


48.92351786788815

fluids.compressible.isothermal_gas(rho, fd, P1=None, P2=None, L=None, D=None,


m=None)
Calculation function for dealing with flow of a compressible gas in a pipeline for the complete isothermal flow
equation. Can calculate any of the following, given all other inputs:
• Mass flow rate
• Upstream pressure (numerical)

52 Chapter 2. API Reference


Fluids Documentation, Release 0.1

• Downstream pressure (analytical or numerical if an overflow occurs)


• Diameter of pipe (numerical)
• Length of pipe
A variety of forms of this equation have been presented, differing in their use of the ideal gas law and choice of
gas constant. The form here uses density explicitly, allowing for non-ideal values to be used.
(︁ )︁2
𝜋𝐷 2
(︀ )︀
4 𝜌𝑎𝑣𝑔 𝑃12 − 𝑃22
2
𝑚
˙ = (︁ )︁
𝐿
𝑃1 𝑓𝑑 𝐷 + 2 ln 𝑃1
𝑃2

Parameters
rho [float] Average density of gas in pipe, [kg/m^3]
fd [float] Darcy friction factor for flow in pipe [-]
P1 [float, optional] Inlet pressure to pipe, [Pa]
P2 [float, optional] Outlet pressure from pipe, [Pa]
L [float, optional] Length of pipe, [m]
D [float, optional] Diameter of pipe, [m]
m [float, optional] Mass flow rate of gas through pipe, [kg/s]
Returns
m, P1, P2, D, or L [float] The missing input which was solved for [base SI]

Notes

The solution for P2 has the following closed form, derived using Maple:
⎛ )︃ ⎞−1
−𝐶𝑚2 +𝐵𝑃1
(︃ (︃ )︃
𝐵𝑃1 −
0.5· 𝑚12 −𝐶𝑚2 + lambertW − 𝑚2
𝑒 𝑚2 𝑚2 +𝐵𝑃1
𝑃2 = 𝑃1 ⎝𝑒
⎜ ⎟

𝜋2 𝐷4
𝐵=𝜌𝑎𝑣𝑔
42
𝐿
𝐶 = 𝑓𝑑
𝐷
A wide range of conditions are impossible due to choked flow. See P_isothermal_critical_flow for details. An
exception is raised when they occur.
The 2 multiplied by the logarithm is often shown as a power of the pressure ratio; this is only the case when the
pressure ratio is raised to the power of 2 before its logarithm is taken.
A number of limitations exist for this model:
• Density dependence is that of an ideal gas.
• If calculating the pressure drop, the average gas density cannot be known immediately; iteration must be
used to correct this.
• The friction factor depends on both the gas density and velocity, so it should be solved for iteratively as
well. It changes throughout the pipe as the gas expands and velocity increases.
• The model is not easily adapted to include elevation effects due to the acceleration term included in it.

2.2. Compressible flow and compressor sizing (fluids.compressible) 53


Fluids Documentation, Release 0.1

• As the gas expands, it will change temperature slightly, further altering the density and friction factor.
There are many commercial packages which perform the actual direct integration of the flow, such as OLGA
Dynamic Multiphase Flow Simulator, or ASPEN Hydraulics.
This expression has also been presented with the ideal gas assumption directly incorporated into it [4] (note R
is the specific gas constant, in units of J/kg/K):
(︁ )︁2 (︀
𝜋𝐷 2
)︀
4 𝑃12 − 𝑃22
2
𝑚
˙ = (︁ )︁
𝐿
𝑅𝑇 𝑓𝑑 𝐷 + 2 ln 𝑃1
𝑃2

References

[1], [2], [3], [4]

Examples

>>> isothermal_gas(rho=11.3, fd=0.00185, P1=1E6, P2=9E5, L=1000, D=0.5)


145.4847572636031

fluids.compressible.isothermal_work_compression(P1, P2, T, Z=1)


Calculates the work of compression or expansion of a gas going through an isothermal process.
(︂ )︂
𝑃2
𝑊 = 𝑧𝑅𝑇 ln
𝑃1

Parameters
P1 [float] Inlet pressure, [Pa]
P2 [float] Outlet pressure, [Pa]
T [float] Temperature of the gas going through an isothermal process, [K]
Z [float] Constant compressibility factor of the gas, [-]
Returns
W [float] Work performed per mole of gas compressed/expanded [J/mol]

Notes

The full derivation with all forms is as follows:


∫︁ 𝑃2 ∫︁ 𝑃2
1
𝑊 = 𝑉 𝑑𝑃 = 𝑧𝑅𝑇 𝑑𝑃
𝑃1 𝑃1 𝑃
(︂ )︂ (︂ )︂ (︂ )︂
𝑃2 𝑃2 𝑃2
𝑊 = 𝑧𝑅𝑇 ln = 𝑃1 𝑉1 ln = 𝑃2 𝑉2 ln
𝑃1 𝑃1 𝑃1
The substitutions are according to the ideal gas law with compressibility:
The work of compression/expansion is the change in enthalpy of the gas. Returns negative values for expansion
and positive values for compression.
An average compressibility factor can be used where Z changes. For further accuracy, this expression can be
used repeatedly with small changes in pressure and the work from each step summed.

54 Chapter 2. API Reference


Fluids Documentation, Release 0.1

This is the best possible case for compression; all actual compresssors require more work to do the compression.
By making the compression take a large number of stages and cooling the gas between stages, this can be
approached reasonable closely. Integrally geared compressors are often used for this purpose.

References

[1]

Examples

>>> isothermal_work_compression(1E5, 1E6, 300)


5743.427304244769

fluids.compressible.polytropic_exponent(k, n=None, eta_p=None)


Calculates one of:
• Polytropic exponent from polytropic efficiency
• Polytropic efficiency from the polytropic exponent
𝑘𝜂𝑝
𝑛=
1 − 𝑘(1 − 𝜂𝑝 )
(︁ )︁
𝑛
𝑛−1 𝑛(𝑘 − 1)
𝜂𝑝 = (︁ )︁ =
𝑘 𝑘(𝑛 − 1)
𝑘−1

Parameters
k [float] Isentropic exponent of the gas (Cp/Cv) [-]
n [float, optional] Polytropic exponent of the process [-]
eta_p [float, optional] Polytropic efficiency of the process, [-]
Returns
n or eta_p [float] Polytropic exponent or polytropic efficiency, depending on input, [-]

References

[1]

Examples

>>> polytropic_exponent(1.4, eta_p=0.78)


1.5780346820809246

fluids.compressible.isentropic_work_compression(T1, k, Z=1, P1=None, P2=None,


W=None, eta=None)
Calculation function for dealing with compressing or expanding a gas going through an isentropic, adiabatic
process assuming constant Cp and Cv. The polytropic model is the same equation; just provide n instead of
k and use a polytropic efficiency for eta instead of a isentropic efficiency. Can calculate any of the following,
given all the other inputs:
• W, Work of compression

2.2. Compressible flow and compressor sizing (fluids.compressible) 55


Fluids Documentation, Release 0.1

• P2, Pressure after compression


• P1, Pressure before compression
• eta, isentropic efficiency of compression
[︃(︂ )︂ ]︃
(︂ )︂ (𝑘−1)/𝑘
𝑘 𝑃2
𝑊 = 𝑍𝑅𝑇1 − 1 /𝜂𝑖𝑠𝑒𝑛𝑡𝑟𝑜𝑝𝑖𝑐
𝑘−1 𝑃1
Parameters
T1 [float] Initial temperature of the gas, [K]
k [float] Isentropic exponent of the gas (Cp/Cv) or polytropic exponent n to use this as a poly-
tropic model instead [-]
Z [float, optional] Constant compressibility factor of the gas, [-]
P1 [float, optional] Inlet pressure, [Pa]
P2 [float, optional] Outlet pressure, [Pa]
W [float, optional] Work performed per mole of gas compressed/expanded [J/mol]
eta [float, optional] Isentropic efficiency of the process or polytropic efficiency of the process
to use this as a polytropic model instead [-]
Returns
W, P1, P2, or eta [float] The missing input which was solved for [base SI]

Notes

For the same compression ratio, this is always of larger magnitude than the isothermal case.
The full derivation is as follows:
For constant-heat capacity “isentropic” fluid,
1/𝑘
𝑃1 𝑉1
𝑉 =
𝑃 1/𝑘
∫︁ 𝑃2 ∫︁ 𝑃2 1/𝑘
𝑃1 𝑉1
𝑊 = 𝑉 𝑑𝑃 = 𝑑𝑃
𝑃1 𝑃1 𝑃 1/𝑘
1/𝑘
𝑃1 𝑉1 [︁ 1−1/𝑘 1−1/𝑘
]︁
𝑊 = 1 𝑃2 − 𝑃1
1− 𝑘
After performing the integration and substantial mathematical manipulation we can obtain:
[︃(︂ )︂ ]︃
(︂ )︂ (𝑘−1)/𝑘
𝑘 𝑃2
𝑊 = 𝑃1 𝑉1 −1
𝑘−1 𝑃1

Using PV = ZRT:
(︂ )︂ [︃(︂ )︂(𝑘−1)/𝑘 ]︃
𝑘 𝑃2
𝑊 = 𝑍𝑅𝑇1 −1
𝑘−1 𝑃1

The work of compression/expansion is the change in enthalpy of the gas. Returns negative values for expansion
and positive values for compression.

56 Chapter 2. API Reference


Fluids Documentation, Release 0.1

An average compressibility factor should be used as Z changes. For further accuracy, this expression can be
used repeatedly with small changes in pressure and new values of isentropic exponent, and the work from each
step summed.
For the polytropic case this is not necessary, as eta corrects for the simplification.

References

[1]

Examples

>>> isentropic_work_compression(P1=1E5, P2=1E6, T1=300, k=1.4, eta=0.78)


10416.876986384483

fluids.compressible.isentropic_efficiency(P1, P2, k, eta_s=None, eta_p=None)


Calculates either isentropic or polytropic efficiency from the other type of efficiency.

(𝑃2 /𝑃1 )(𝑘−1)/𝑘 − 1


𝜂𝑠 = 𝑘−1
(𝑃2 /𝑃1 ) 𝑘𝜂𝑝 − 1
(︁ )︁
(𝑘 − 1) log 𝑃 2
𝑃1
𝜂𝑝 = (︂ (︂ (︁ )︁ 𝑘1 (𝑘−1) )︂)︂
𝑘 log 1
𝜂𝑠 𝜂𝑠 + 𝑃 𝑃1
2
− 1

Parameters
P1 [float] Initial pressure of gas [Pa]
P2 [float] Final pressure of gas [Pa]
k [float] Isentropic exponent of the gas (Cp/Cv) [-]
eta_s [float, optional] Isentropic (adiabatic) efficiency of the process, [-]
eta_p [float, optional] Polytropic efficiency of the process, [-]
Returns
eta_s or eta_p [float] Isentropic or polytropic efficiency, depending on input, [-]

Notes

The form for obtained eta_p from eta_s was derived with SymPy.

References

[1]

2.2. Compressible flow and compressor sizing (fluids.compressible) 57


Fluids Documentation, Release 0.1

Examples

>>> isentropic_efficiency(1E5, 1E6, 1.4, eta_p=0.78)


0.7027614191263858

fluids.compressible.isentropic_T_rise_compression(T1, P1, P2, k, eta=1)


Calculates the increase in temperature of a fluid which is compressed or expanded under isentropic, adiabatic
conditions assuming constant Cp and Cv. The polytropic model is the same equation; just provide n instead of
k and use a polytropic efficienty for eta instead of a isentropic efficiency.
{︃ [︃(︂ )︂ ]︃}︃
(𝑘−1)/𝑘
∆𝑇𝑠 1 𝑃2
𝑇2 = 𝑇1 + = 𝑇1 1 + −1
𝜂𝑠 𝜂𝑠 𝑃1

Parameters
T1 [float] Initial temperature of gas [K]
P1 [float] Initial pressure of gas [Pa]
P2 [float] Final pressure of gas [Pa]
k [float] Isentropic exponent of the gas (Cp/Cv) or polytropic exponent n to use this as a poly-
tropic model instead [-]
eta [float] Isentropic efficiency of the process or polytropic efficiency of the process to use this
as a polytropic model instead [-]
Returns
T2 [float] Final temperature of gas [K]

Notes

For the ideal case (‘eta‘=1), the model simplifies to:


(︂ )︂(𝑘−1)/𝑘
𝑇2 𝑃2
=
𝑇1 𝑃1

References

[1], [2]

Examples

>>> isentropic_T_rise_compression(286.8, 54050, 432400, 1.4)


519.5230938217768

fluids.compressible.T_critical_flow(T, k)
Calculates critical flow temperature Tcf for a fluid with the given isentropic coefficient. Tcf is in a flow (with
Ma=1) whose stagnation conditions are known. Normally used with converging/diverging nozzles.

𝑇* 2
=
𝑇0 𝑘+1
Parameters

58 Chapter 2. API Reference


Fluids Documentation, Release 0.1

T [float] Stagnation temperature of a fluid with Ma=1 [K]


k [float] Isentropic coefficient []
Returns
Tcf [float] Critical flow temperature at Ma=1 [K]

Notes

Assumes isentropic flow.

References

[1]

Examples

Example 12.4 in [1]:

>>> T_critical_flow(473, 1.289)


413.2809086937528

fluids.compressible.P_critical_flow(P, k)
Calculates critical flow pressure Pcf for a fluid with the given isentropic coefficient. Pcf is in a flow (with
Ma=1) whose stagnation conditions are known. Normally used with converging/diverging nozzles.
)︂𝑘/(𝑘−1)
𝑃*
(︂
2
=
𝑃0 𝑘+1

Parameters
P [float] Stagnation pressure of a fluid with Ma=1 [Pa]
k [float] Isentropic coefficient []
Returns
Pcf [float] Critical flow pressure at Ma=1 [Pa]

Notes

Assumes isentropic flow.

References

[1]

Examples

Example 12.4 in [1]:

>>> P_critical_flow(1400000, 1.289)


766812.9022792266

2.2. Compressible flow and compressor sizing (fluids.compressible) 59


Fluids Documentation, Release 0.1

fluids.compressible.P_isothermal_critical_flow(P, fd, D, L)
Calculates critical flow pressure Pcf for a fluid flowing isothermally and suffering pressure drop caused by a
pipe’s friction factor.
(︁ (︁ (︁ 1 )︁ )︁ )︁
1
𝐷 LambertW −𝑒 𝐷 (−𝐷−𝐿𝑓𝑑 ) +1 +𝐿𝑓𝑑
𝑃2 = 𝑃1 𝑒 2𝐷

Parameters
P [float] Inlet pressure [Pa]
fd [float] Darcy friction factor for flow in pipe [-]
D [float] Diameter of pipe, [m]
L [float] Length of pipe, [m]
Returns
Pcf [float] Critical flow pressure of a compressible gas flowing from P1 to Pcf in a tube of
length L and friction factor fd [Pa]

Notes

Assumes isothermal flow. Developed based on the isothermal_gas model, using SymPy.
The isothermal gas model is solved for maximum mass flow rate; any pressure drop under it is impossible due
to the formation of a shock wave.

References

[1]

Examples

>>> P_isothermal_critical_flow(P=1E6, fd=0.00185, L=1000., D=0.5)


389699.7317645518

fluids.compressible.is_critical_flow(P1, P2, k)
Determines if a flow of a fluid driven by pressure gradient P1 - P2 is critical, for a fluid with the given isentropic
coefficient. This function calculates critical flow pressure, and checks if this is larger than P2. If so, the flow is
critical and choked.
Parameters
P1 [float] Higher, source pressure [Pa]
P2 [float] Lower, downstream pressure [Pa]
k [float] Isentropic coefficient []
Returns
flowtype [bool] True if the flow is choked; otherwise False

Notes

Assumes isentropic flow. Uses P_critical_flow function.

60 Chapter 2. API Reference


Fluids Documentation, Release 0.1

References

[1]

Examples

Examples 1-2 from API 520.

>>> is_critical_flow(670E3, 532E3, 1.11)


False
>>> is_critical_flow(670E3, 101E3, 1.11)
True

fluids.compressible.stagnation_energy(V)
Calculates the increase in enthalpy dH which is provided by a fluid’s velocity V.

𝑉2
∆𝐻 =
2
Parameters
V [float] Velocity [m/s]
Returns
dH [float] Incease in enthalpy [J/kg]

Notes

The units work out. This term is pretty small, but not trivial.

References

[1]

Examples

>>> stagnation_energy(125)
7812.5

fluids.compressible.P_stagnation(P, T, Tst, k)
Calculates stagnation flow pressure Pst for a fluid with the given isentropic coefficient and specified stagnation
temperature and normal temperature. Normally used with converging/diverging nozzles.
(︂ 𝑘
)︂ 𝑘−1
𝑃0 𝑇0
=
𝑃 𝑇

Parameters
P [float] Normal pressure of a fluid [Pa]
T [float] Normal temperature of a fluid [K]
Tst [float] Stagnation temperature of a fluid moving at a certain velocity [K]
k [float] Isentropic coefficient []

2.2. Compressible flow and compressor sizing (fluids.compressible) 61


Fluids Documentation, Release 0.1

Returns
Pst [float] Stagnation pressure of a fluid moving at a certain velocity [Pa]

Notes

Assumes isentropic flow.

References

[1]

Examples

Example 12-1 in [1].

>>> P_stagnation(54050., 255.7, 286.8, 1.4)


80772.80495900588

fluids.compressible.T_stagnation(T, P, Pst, k)
Calculates stagnation flow temperature Tst for a fluid with the given isentropic coefficient and specified stagna-
tion pressure and normal pressure. Normally used with converging/diverging nozzles.
(︂ )︂ 𝑘−1
𝑃 𝑘
𝑇 = 𝑇0
𝑃0

Parameters
T [float] Normal temperature of a fluid [K]
P [float] Normal pressure of a fluid [Pa]
Pst [float] Stagnation pressure of a fluid moving at a certain velocity [Pa]
k [float] Isentropic coefficient []
Returns
Tst [float] Stagnation temperature of a fluid moving at a certain velocity [K]

Notes

Assumes isentropic flow.

References

[1]

Examples

Example 12-1 in [1].

>>> T_stagnation(286.8, 54050, 54050*8, 1.4)


519.5230938217768

62 Chapter 2. API Reference


Fluids Documentation, Release 0.1

fluids.compressible.T_stagnation_ideal(T, V, Cp)
Calculates the ideal stagnation temperature Tst calculated assuming the fluid has a constant heat capacity Cp
and with a specified velocity V and temperature T.

𝑉2
𝑇* = 𝑇 +
2𝐶𝑝

Parameters
T [float] Tempearture [K]
V [float] Velocity [m/s]
Cp [float] Ideal heat capacity [J/kg/K]
Returns
Tst [float] Stagnation temperature [J/kg]

References

[1]

Examples

Example 12-1 in [1].

>>> T_stagnation_ideal(255.7, 250, 1005.)


286.79452736318405

2.3 Control valve sizing and rating (fluids.control_valve)

fluids.control_valve.size_control_valve_l(rho, Psat, Pc, mu, P1, P2, Q, D1=None,


D2=None, d=None, FL=0.9, Fd=1, al-
low_choked=True, allow_laminar=True,
full_output=False)
Calculates flow coefficient of a control valve passing a liquid according to IEC 60534. Uses a large number of
inputs in SI units. Note the return value is not standard SI. All parameters are required. This sizing model does
not officially apply to liquid mixtures, slurries, non-Newtonian fluids, or liquid-solid conveyance systems. For
details of the calculations, consult [1].
Parameters
rho [float] Density of the liquid at the inlet [kg/m^3]
Psat [float] Saturation pressure of the fluid at inlet temperature [Pa]
Pc [float] Critical pressure of the fluid [Pa]
mu [float] Viscosity of the fluid [Pa*s]
P1 [float] Inlet pressure of the fluid before valves and reducers [Pa]
P2 [float] Outlet pressure of the fluid after valves and reducers [Pa]
Q [float] Volumetric flow rate of the fluid [m^3/s]
D1 [float, optional] Diameter of the pipe before the valve [m]

2.3. Control valve sizing and rating (fluids.control_valve) 63


Fluids Documentation, Release 0.1

D2 [float, optional] Diameter of the pipe after the valve [m]


d [float, optional] Diameter of the valve [m]
FL [float, optional] Liquid pressure recovery factor of a control valve without attached fittings
(normally 0.8-0.9 at full open and decreasing as opened further to below 0.5; use default
very cautiously!) []
Fd [float, optional] Valve style modifier (0.1 to 1; varies tremendously depending on the type
of valve and position; do not use the default at all!) []
allow_choked [bool, optional] Overrides the automatic transition into the choked regime if this
is False and returns as if choked flow does not exist
allow_laminar [bool, optional] Overrides the automatic transition into the laminar regime if
this is False and returns as if laminar flow does not exist
full_output [bool, optional] If True, returns intermediate calculation values as well as Kv in
the form of a dictionary containing ‘Kv’, ‘Rev’, ‘choked’, ‘FL’, ‘FLP’, ‘FR’, ‘FP’, and
‘laminar’. Some may be None if they are not used in the calculation.
Returns
Kv [float] Metric Kv valve flow coefficient (flow rate of water at a pressure drop of 1 bar)
[m^3/hr]

Notes

It is possible to use this model without any diameters specified; in that case, turbulent flow is assumed. Choked
flow can still be modeled. This is not recommended. All three diameters need to be None for this to work. FL
and Fd are not used by the models when the diameters are not specified.

References

[1]

Examples

From [1], matching example 1 for a globe, parabolic plug, flow-to-open valve.

>>> size_control_valve_l(rho=965.4, Psat=70.1E3, Pc=22120E3, mu=3.1472E-4,


... P1=680E3, P2=220E3, Q=0.1, D1=0.15, D2=0.15, d=0.15,
... FL=0.9, Fd=0.46)
164.9954763704956

From [1], matching example 2 for a ball, segmented ball, flow-to-open valve.

>>> size_control_valve_l(rho=965.4, Psat=70.1E3, Pc=22120E3, mu=3.1472E-4,


... P1=680E3, P2=220E3, Q=0.1, D1=0.1, D2=0.1, d=0.1,
... FL=0.6, Fd=0.98)
238.05817216710483

fluids.control_valve.size_control_valve_g(T, MW, mu, gamma, Z, P1, P2, Q, D1=None,


D2=None, d=None, FL=0.9, Fd=1, xT=0.7,
allow_choked=True, allow_laminar=True,
full_output=False)
Calculates flow coefficient of a control valve passing a gas according to IEC 60534. Uses a large number of

64 Chapter 2. API Reference


Fluids Documentation, Release 0.1

inputs in SI units. Note the return value is not standard SI. All parameters are required. For details of the
calculations, consult [1]. Note the inlet gas flow conditions.
Parameters
T [float] Temperature of the gas at the inlet [K]
MW [float] Molecular weight of the gas [g/mol]
mu [float] Viscosity of the fluid at inlet conditions [Pa*s]
gamma [float] Specific heat capacity ratio [-]
Z [float] Compressibility factor at inlet conditions, [-]
P1 [float] Inlet pressure of the gas before valves and reducers [Pa]
P2 [float] Outlet pressure of the gas after valves and reducers [Pa]
Q [float] Volumetric flow rate of the gas at 273.15 K and 1 atm specifically [m^3/s]
D1 [float, optional] Diameter of the pipe before the valve [m]
D2 [float, optional] Diameter of the pipe after the valve [m]
d [float, optional] Diameter of the valve [m]
FL [float, optional] Liquid pressure recovery factor of a control valve without attached fittings
(normally 0.8-0.9 at full open and decreasing as opened further to below 0.5; use default
very cautiously!) []
Fd [float, optional] Valve style modifier (0.1 to 1; varies tremendously depending on the type
of valve and position; do not use the default at all!) []
xT [float, optional] Pressure difference ratio factor of a valve without fittings at choked flow
(increasing to 0.9 or higher as the valve is closed further and decreasing to 0.1 or lower as
the valve is opened further; use default very cautiously!) [-]
allow_choked [bool, optional] Overrides the automatic transition into the choked regime if this
is False and returns as if choked flow does not exist
allow_laminar [bool, optional] Overrides the automatic transition into the laminar regime if
this is False and returns as if laminar flow does not exist
full_output [bool, optional] If True, returns intermediate calculation values as well as Kv in the
form of a dictionary containing ‘Kv’, ‘Rev’, ‘choked’, ‘Y’, ‘FR’, ‘FP’, ‘xTP’, and ‘laminar’.
Some may be None if they are not used in the calculation.
Returns
Kv [float] Metric Kv valve flow coefficient (flow rate of water at a pressure drop of 1 bar)
[m^3/hr]

Notes

It is possible to use this model without any diameters specified; in that case, turbulent flow is assumed. Choked
flow can still be modeled. This is not recommended. All three diameters need to be None for this to work. FL
and Fd are not used by the models when the diameters are not specified, but xT definitely is used by the model.

References

[1]

2.3. Control valve sizing and rating (fluids.control_valve) 65


Fluids Documentation, Release 0.1

Examples

From [1], matching example 3 for non-choked gas flow with attached fittings and a rotary, eccentric plug, flow-
to-open control valve:

>>> size_control_valve_g(T=433., MW=44.01, mu=1.4665E-4, gamma=1.30,


... Z=0.988, P1=680E3, P2=310E3, Q=38/36., D1=0.08, D2=0.1, d=0.05,
... FL=0.85, Fd=0.42, xT=0.60)
72.58664545391052

From [1], roughly matching example 4 for a small flow trim sized tapered needle plug valve. Difference is 3%
and explained by the difference in algorithms used.

>>> size_control_valve_g(T=320., MW=39.95, mu=5.625E-5, gamma=1.67, Z=1.0,


... P1=2.8E5, P2=1.3E5, Q=0.46/3600., D1=0.015, D2=0.015, d=0.015, FL=0.98,
... Fd=0.07, xT=0.8)
0.016498765335995726

fluids.control_valve.cavitation_index(P1, P2, Psat)


Calculates the cavitation index of a valve with upstream and downstream absolute pressures P1 and P2 for a
fluid with a vapor pressure Psat.
𝑃1 − 𝑃𝑠𝑎𝑡
𝜎=
𝑃1 − 𝑃2
Parameters
P1 [float] Absolute pressure upstream of the valve [Pa]
P2 [float] Absolute pressure downstream of the valve [Pa]
Psat [float] Saturation pressure of the liquid at inlet temperature [Pa]
Returns
sigma [float] Cavitation index of the valve [-]

Notes

Larger values are safer. Models for adjusting cavitation indexes provided by the manufacturer to the user’s
conditions are available, making use of scaling the pressure differences and size differences.
Values can be calculated for incipient cavitation, constant cavitation, maximum vibration cavitation, incipient
damage, and choking cavitation.
Has also been defined as:
𝑃2 − 𝑃𝑠𝑎𝑡
𝜎=
𝑃1 − 𝑃2
Another definition and notation series is:
1 𝑃1 − 𝑃2
𝐾 = 𝑥𝐹 = =
𝜎 𝑃1 − 𝑃𝑠𝑎𝑡

References

[1]

66 Chapter 2. API Reference


Fluids Documentation, Release 0.1

Examples

>>> cavitation_index(1E6, 8E5, 2E5)


4.0

fluids.control_valve.FF_critical_pressure_ratio_l(Psat, Pc)
Calculates FF, the liquid critical pressure ratio factor, for use in IEC 60534 liquid valve sizing calculations.
√︂
𝑃𝑠𝑎𝑡
𝐹𝐹 = 0.96 − 0.28
𝑃𝑐
Parameters
Psat [float] Saturation pressure of the liquid at inlet temperature [Pa]
Pc [float] Critical pressure of the liquid [Pa]
Returns
FF [float] Liquid critical pressure ratio factor [-]

References

[1]

Examples

From [1], matching example.

>>> FF_critical_pressure_ratio_l(70100.0, 22120000.0)


0.9442375225233299

fluids.control_valve.is_choked_turbulent_l(dP, P1, Psat, FF, FL=None, FLP=None,


FP=None)
Calculates if a liquid flow in IEC 60534 calculations is critical or not, for use in IEC 60534 liquid valve sizing
calculations. Either FL may be provided or FLP and FP, depending on the calculation process.

∆𝑃 > 𝐹𝐿2 (𝑃1 − 𝐹𝐹 𝑃𝑠𝑎𝑡 )


(︂ )︂2
𝐹𝐿𝑃
∆𝑃 >= (𝑃1 − 𝐹𝐹 𝑃𝑠𝑎𝑡 )
𝐹𝑃
Parameters
dP [float] Differential pressure across the valve, with reducer/expanders [Pa]
P1 [float] Pressure of the fluid before the valve and reducers/expanders [Pa]
Psat [float] Saturation pressure of the fluid at inlet temperature [Pa]
FF [float] Liquid critical pressure ratio factor [-]
FL [float, optional] Liquid pressure recovery factor of a control valve without attached fittings
[-]
FLP [float, optional] Combined liquid pressure recovery factor with piping geometry factor, for
a control valve with attached fittings [-]
FP [float, optional] Piping geometry factor [-]

2.3. Control valve sizing and rating (fluids.control_valve) 67


Fluids Documentation, Release 0.1

Returns
choked [bool] Whether or not the flow is choked [-]

References

[1]

Examples

>>> is_choked_turbulent_l(460.0, 680.0, 70.1, 0.94, 0.9)


False
>>> is_choked_turbulent_l(460.0, 680.0, 70.1, 0.94, 0.6)
True

fluids.control_valve.is_choked_turbulent_g(x, Fgamma, xT=None, xTP=None)


Calculates if a gas flow in IEC 60534 calculations is critical or not, for use in IEC 60534 gas valve sizing
calculations. Either xT or xTP must be provided, depending on the calculation process.

𝑥 ≥ 𝐹𝛾 𝑥𝑇

𝑥 ≥ 𝐹𝛾 𝑥 𝑇 𝑃
Parameters
x [float] Differential pressure over inlet pressure, [-]
Fgamma [float] Specific heat ratio factor [-]
xT [float, optional] Pressure difference ratio factor of a valve without fittings at choked flow [-]
xTP [float] Pressure difference ratio factor of a valve with fittings at choked flow [-]
Returns
choked [bool] Whether or not the flow is choked [-]

References

[1]

Examples

Example 3, compressible flow, non-choked with attached fittings:

>>> is_choked_turbulent_g(0.544, 0.929, 0.6)


False
>>> is_choked_turbulent_g(0.544, 0.929, xTP=0.625)
False

fluids.control_valve.Reynolds_valve(nu, Q, D1, FL, Fd, C)


Calculates Reynolds number of a control valve for a liquid or gas flowing through it at a specified Q, for a
specified D1, FL, Fd, C, and with kinematic viscosity nu according to IEC 60534 calculations.
)︂1/4
𝐹𝐿2 𝐶 2
(︂
𝑁4 𝐹𝑑 𝑄
𝑅𝑒𝑣 = √ +1
𝜈 𝐶𝐹𝐿 𝑁2 𝐷 4

68 Chapter 2. API Reference


Fluids Documentation, Release 0.1

Parameters
nu [float] Kinematic viscosity, [m^2/s]
Q [float] Volumetric flow rate of the fluid [m^3/s]
D1 [float] Diameter of the pipe before the valve [m]
FL [float, optional] Liquid pressure recovery factor of a control valve without attached fittings
[]
Fd [float] Valve style modifier [-]
C [float] Metric Kv valve flow coefficient (flow rate of water at a pressure drop of 1 bar)
[m^3/hr]
Returns
Rev [float] Valve reynolds number [-]

References

[1]

Examples

>>> Reynolds_valve(3.26e-07, 360, 150.0, 0.9, 0.46, 165)


2966984.7525455453

fluids.control_valve.loss_coefficient_piping(d, D1=None, D2=None)


Calculates the sum of loss coefficients from possible inlet/outlet reducers/expanders around a control valve
according to IEC 60534 calculations.

Σ𝜉 = 𝜉1 + 𝜉2 + 𝜉𝐵1 − 𝜉𝐵2
[︃ (︂ )︂2 ]︃2
𝑑
𝜉1 = 0.5 1 −
𝐷1
[︃ (︂ )︂2 ]︃2
𝑑
𝜉2 = 1.0 1 −
𝐷2
(︂ )︂4
𝑑
𝜉𝐵1 = 1 −
𝐷1
(︂ )︂4
𝑑
𝜉𝐵2 = 1 −
𝐷2
Parameters
d [float] Diameter of the valve [m]
D1 [float] Diameter of the pipe before the valve [m]
D2 [float] Diameter of the pipe after the valve [m]
Returns
loss [float] Sum of the four loss coefficients [-]

2.3. Control valve sizing and rating (fluids.control_valve) 69


Fluids Documentation, Release 0.1

References

[1]

Examples

In example 3, non-choked compressible flow with fittings:


>>> loss_coefficient_piping(0.05, 0.08, 0.1)
0.6580810546875

fluids.control_valve.Reynolds_factor(FL, C, d, Rev, full_trim=True)


Calculates the Reynolds number factor FR for a valve with a Reynolds number Rev, diameter d, flow coeffi-
cient C, liquid pressure recovery factor FL, and with either full or reduced trim, all according to IEC 60534
calculations.
If full trim:
0.33𝐹𝐿0.5
(︂ )︂ (︂ )︂
𝑅𝑒𝑣
𝐹𝑅,1𝑎 = 1 + log10
𝑛0.25
1 10000
0.026 √︀
𝐹𝑅,2 = min( 𝑛1 𝑅𝑒𝑣 , 1)
𝐹𝐿
𝑁2
𝑛1 = (︀ )︀2
𝐶
𝑑2

𝐹𝑅 = 𝐹𝑅,2 if Rev < 10 else min(𝐹𝑅,1𝑎 , 𝐹𝑅,2 )


Otherwise :
0.33𝐹𝐿0.5
(︂ )︂ (︂ )︂
𝑅𝑒𝑣
𝐹𝑅,3𝑎 = 1 + log10
𝑛0.25
2 10000
0.026 √︀
𝐹𝑅,4 = 𝑛2 𝑅𝑒𝑣
𝐹𝐿
(︂ )︂2/3
𝐶
𝑛2 = 1 + 𝑁32
𝑑
𝐹𝑅 = 𝐹𝑅,4 if Rev < 10 else min(𝐹𝑅,3𝑎 , 𝐹𝑅,4 )
Parameters
FL [float] Liquid pressure recovery factor of a control valve without attached fittings []
C [float] Metric Kv valve flow coefficient (flow rate of water at a pressure drop of 1 bar)
[m^3/hr]
d [float] Diameter of the valve [m]
Rev [float] Valve reynolds number [-]
full_trim [bool] Whether or not the valve has full trim
Returns
FR [float] Reynolds number factor for laminar or transitional flow []

References

[1]

70 Chapter 2. API Reference


Fluids Documentation, Release 0.1

Examples

In Example 4, compressible flow with small flow trim sized for gas flow (Cv in the problem was converted to
Kv here to make FR match with N32, N2):

>>> Reynolds_factor(FL=0.98, C=0.015483, d=15., Rev=1202., full_trim=False)


0.7148753122302025

fluids.control_valve.Cv_char_quick_opening(opening)
fluids.control_valve.Cv_char_linear(opening)
fluids.control_valve.Cv_char_equal_percentage(opening)
fluids.control_valve.convert_flow_coefficient(flow_coefficient, old_scale, new_scale)
Convert from one flow coefficient scale to another; supports the Kv Cv, and Av scales.
Other scales are Qn and Cg, but clear definitions have yet to be found.
Parameters
flow_coefficient [float] Value of the flow coefficient to be converted, expressed in the original
scale.
old_scale [str] String specifying the original scale; one of ‘Av’, ‘Cv’, or ‘Kv’, [-]
new_scale [str] String specifying the new scale; one of ‘Av’, ‘Cv’, or ‘Kv’, [-]
Returns
converted_flow_coefficient [float] Flow coefficient converted to the specified scale.

Notes

Qn is a scale based on a flow of air in units of L/minute as air travels through a valve and loses one bar of
pressure (initially 7 bar absolute, to 6 bar absolute). No consistent conversion factors have been found and those
from theory do not match what have been found. Some uses of Qn use its flow rate as in normal (STP reference
conditions) flow rate of air; others use something like the 7 bar absolute condition.

Examples

>>> convert_flow_coefficient(10, 'Kv', 'Av')


0.0002776532068951358

fluids.control_valve.control_valve_choke_P_l(Psat, Pc, FL, P1=None, P2=None,


disp=True)
Calculates either the upstream or downstream pressure at which choked flow though a liquid control valve
occurs, given either a set upstream or downstream pressure. Implements an analytical solution of the needed
equations from the full function size_control_valve_l. For some pressures, no choked flow is possible;
for choked flow to occur the direction if flow must be reversed. If disp is True, an exception will be raised for
these conditions.
𝐹𝐹 𝐹𝐿2 𝑃𝑠𝑎𝑡 − 𝑃2
𝑃1 =
𝐹𝐿2 − 1

𝑃2 = 𝐹𝐹 𝐹𝐿2 𝑃𝑠𝑎𝑡 − 𝐹𝐿2 𝑃1 + 𝑃1


Parameters

2.3. Control valve sizing and rating (fluids.control_valve) 71


Fluids Documentation, Release 0.1

Psat [float] Saturation pressure of the liquid at inlet temperature [Pa]


Pc [float] Critical pressure of the liquid [Pa]
FL [float, optional] Liquid pressure recovery factor of a control valve without attached fittings
[-]
P1 [float, optional] Absolute pressure upstream of the valve [Pa]
P2 [float, optional] Absolute pressure downstream of the valve [Pa]
disp [bool, optional] Whether or not to raise an exception on flow reversal, [-]
Returns
P_choke [float] Pressure at which a choke occurs in the liquid valve [Pa]

Notes

Extremely cheap to compute.

Examples

>>> control_valve_choke_P_l(69682.89291024722, 22048320.0, 0.6, 680000.0)


458887.5306077305
>>> control_valve_choke_P_l(69682.89291024722, 22048320.0, 0.6, P2=458887.
˓→5306077305)

680000.0

fluids.control_valve.control_valve_choke_P_g(xT, gamma, P1=None, P2=None)


Calculates either the upstream or downstream pressure at which choked flow though a gas control valve occurs,
given either a set upstream or downstream pressure. Implements an analytical solution of the needed equations
from the full function size_control_valve_g. A singularity arises as xT goes to 1 and gamma goes to
1.4.
7𝑃2
𝑃1 = −
5𝛾𝑥𝑇 − 7
𝑃1
𝑃2 = (−5𝛾𝑥𝑇 + 7)
7
Parameters
xT [float, optional] Pressure difference ratio factor of a valve without fittings at choked flow [-]
gamma [float] Specific heat capacity ratio [-]
P1 [float, optional] Absolute pressure upstream of the valve [Pa]
P2 [float, optional] Absolute pressure downstream of the valve [Pa]
Returns
P_choke [float] Pressure at which a choke occurs in the gas valve [Pa]

Notes

Extremely cheap to compute.

72 Chapter 2. API Reference


Fluids Documentation, Release 0.1

Examples

>>> control_valve_choke_P_g(1, 1.3, 1E5)


7142.857142857143
>>> control_valve_choke_P_g(1, 1.3, P2=7142.857142857143)
100000.0

fluids.control_valve.control_valve_noise_l_2015(m, P1, P2, Psat, rho, c, Kv, d, Di,


FL, Fd, t_pipe, rho_pipe=7800.0,
c_pipe=5000.0, rho_air=1.2,
c_air=343.0, xFz=None, An=-4.6)
Calculates the sound made by a liquid flowing through a control valve according to the standard IEC 60534-8-4
(2015) [1].
Parameters
m [float] Mass flow rate of liquid through the control valve, [kg/s]
P1 [float] Inlet pressure of the fluid before valves and reducers [Pa]
P2 [float] Outlet pressure of the fluid after valves and reducers [Pa]
Psat [float] Saturation pressure of the fluid at inlet temperature [Pa]
rho [float] Density of the liquid at the inlet [kg/m^3]
c [float] Speed of sound of the liquid at the inlet conditions [m/s]
Kv [float] Metric Kv valve flow coefficient (flow rate of water at a pressure drop of 1 bar)
[m^3/hr]
d [float] Diameter of the valve [m]
Di [float] Internal diameter of the pipe before and after the valve [m]
FL [float, optional] Liquid pressure recovery factor of a control valve without attached fittings
(normally 0.8-0.9 at full open and decreasing as opened further to below 0.5) [-]
Fd [float, optional] Valve style modifier [-]
t_pipe [float] Wall thickness of the pipe after the valve, [m]
rho_pipe [float, optional] Density of the pipe wall material at flowing conditions, [kg/m^3]
c_pipe [float, optional] Speed of sound of the pipe wall material at flowing conditions, [m/s]
rho_air [float, optional] Density of the air surrounding the valve and pipe wall, [kg/m^3]
c_air [float, optional] Speed of sound of the air surrounding the valve and pipe wall, [m/s]
xFz [float, optional] If specified, this value xFz is used instead of estimated; the calculation is
sensitive to this value, [-]
An [float, optional] Valve correction factor for acoustic efficiency
Returns
LpAe1m [float] A weighted sound pressure level 1 m from the pipe wall, 1 m distance dow-
stream of the valve (at reference sound pressure level 2E-5), [dBA]

2.3. Control valve sizing and rating (fluids.control_valve) 73


Fluids Documentation, Release 0.1

Notes

For formulas see [1]. This takes on the order of 100 us to compute. This model can also tell if noise is being
produced in a valve just due to turbulent flow, or cavitation. For values of An, see [1]; it is normally -4.6 for
globel valves, -4.3 for butterfly valves, and -4.0 for expanders.
This model was checked against three examples in [1]; they match to all given decimals.
A formula is given in [1] for multihole trim valves to estimate xFz as well; this is not implemented here and xFz
must be calculated by the user separately. The formula is
)︂−1/2
𝑁0 𝑑2𝐻
(︂
𝑥𝐹 𝑧 = 4.5 + 1650
𝐹𝐿

Where N0 is the number of open channels and dH is the multihole trim hole diameter.

References

[1]

Examples

>>> control_valve_noise_l_2015(m=40, P1=1E6, P2=6.5E5, Psat=2.32E3,


... rho=997, c=1400, Kv=77.848, d=0.1, Di=0.1071, FL=0.92, Fd=0.42,
... t_pipe=0.0036, rho_pipe=7800.0, c_pipe=5000.0,rho_air=1.293,
... c_air=343.0, An=-4.6)
81.58200097996539

fluids.control_valve.control_valve_noise_g_2011(m, P1, P2, T1, rho, gamma, MW, Kv,


d, Di, t_pipe, Fd, FL, FLP=None,
FP=None, rho_pipe=7800.0,
c_pipe=5000.0, P_air=101325.0,
rho_air=1.2, c_air=343.0, An=-3.8,
Stp=0.2, T2=None, beta=0.93)
Calculates the sound made by a gas flowing through a control valve according to the standard IEC 60534-8-3
(2011) [1].
Parameters
m [float] Mass flow rate of gas through the control valve, [kg/s]
P1 [float] Inlet pressure of the gas before valves and reducers [Pa]
P2 [float] Outlet pressure of the gas after valves and reducers [Pa]
T1 [float] Inlet gas temperature, [K]
rho [float] Density of the gas at the inlet [kg/m^3]
gamma [float] Specific heat capacity ratio [-]
MW [float] Molecular weight of the gas [g/mol]
Kv [float] Metric Kv valve flow coefficient (flow rate of water at a pressure drop of 1 bar)
[m^3/hr]
d [float] Diameter of the valve [m]
Di [float] Internal diameter of the pipe before and after the valve [m]

74 Chapter 2. API Reference


Fluids Documentation, Release 0.1

t_pipe [float] Wall thickness of the pipe after the valve, [m]
Fd [float] Valve style modifier (0.1 to 1; varies tremendously depending on the type of valve
and position; do not use the default at all!) [-]
FL [float] Liquid pressure recovery factor of a control valve without attached fittings (normally
0.8-0.9 at full open and decreasing as opened further to below 0.5; use default very cau-
tiously!) [-]
FLP [float, optional] Combined liquid pressure recovery factor with piping geometry factor, for
a control valve with attached fittings [-]
FP [float, optional] Piping geometry factor [-]
rho_pipe [float, optional] Density of the pipe wall material at flowing conditions, [kg/m^3]
c_pipe [float, optional] Speed of sound of the pipe wall material at flowing conditions, [m/s]
P_air [float, optional] Pressure of the air surrounding the valve and pipe wall, [Pa]
rho_air [float, optional] Density of the air surrounding the valve and pipe wall, [kg/m^3]
c_air [float, optional] Speed of sound of the air surrounding the valve and pipe wall, [m/s]
An [float, optional] Valve correction factor for acoustic efficiency
Stp [float, optional] Strouhal number at the peak fp; between 0.1 and 0.3 typically, [-]
T2 [float, optional] Outlet gas temperature; assumed T1 if not provided (a PH flash should be
used to obtain this if possible), [K]
beta [float, optional] Valve outlet / expander inlet contraction coefficient, [-]
Returns
LpAe1m [float] A weighted sound pressure level 1 m from the pipe wall, 1 m distance dow-
stream of the valve (at reference sound pressure level 2E-5), [dBA]

Notes

For formulas see [1]. This takes on the order of 100 us to compute. For values of An, see [1].
This model was checked against six examples in [1]; they match to all given decimals.
Several additional formulas are given for multihole trim valves, control valves with two or more fixed area
stages, and multipath, multistage trim valves.

References

[1]

Examples

>>> control_valve_noise_g_2011(m=2.22, P1=1E6, P2=7.2E5, T1=450, rho=5.3,


... gamma=1.22, MW=19.8, Kv=77.85, d=0.1, Di=0.2031, FL=None, FLP=0.792,
... FP=0.98, Fd=0.296, t_pipe=0.008, rho_pipe=8000.0, c_pipe=5000.0,
... rho_air=1.293, c_air=343.0, An=-3.8, Stp=0.2)
91.67702674629604

2.3. Control valve sizing and rating (fluids.control_valve) 75


Fluids Documentation, Release 0.1

2.4 Dimensionless numbers (fluids.core)

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.
𝐷·𝑉 𝜌𝑉 𝐷
𝑅𝑒 = =
𝜈 𝜇
Inputs either of any of the following sets:
• V, D, density rho and kinematic viscosity mu
• V, D, and dynamic 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

Momentum
𝑅𝑒 =
Viscosity
An error is raised if none of the required input sets are provided.

References

[1], [2]

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.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.
𝐶𝑝 𝜇 𝜈 𝐶𝑝 𝜌𝜈
𝑃𝑟 = = =
𝑘 𝛼 𝑘
Inputs can be any of the following sets:
• Heat capacity, dynamic viscosity, and thermal conductivity
• Thermal diffusivity and kinematic viscosity

76 Chapter 2. API Reference


Fluids Documentation, Release 0.1

• 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

kinematic viscosity momentum diffusivity


𝑃𝑟 = =
thermal diffusivity thermal diffusivity
An error is raised if none of the required input sets are provided.

References

[1], [2], [3]

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

𝑔𝛽(𝑇𝑠 − 𝑇∞ )𝐿3 𝑔𝛽(𝑇𝑠 − 𝑇∞ )𝐿3 𝜌2


𝐺𝑟 = 2
=
𝜈 𝜇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]

2.4. Dimensionless numbers (fluids.core) 77


Fluids Documentation, Release 0.1

T2 [float, optional] Temperature 2, usually a bulk temperature (or 0 if only a difference is pro-
vided 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

Buoyancy forces
𝐺𝑟 =
Viscous forces
An error is raised if none of the required input sets are provided. Used in free convection problems only.

References

[1], [2]

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.Nusselt(h, L, k)
Calculates Nusselt number Nu for a heat transfer coefficient h, characteristic length L, and thermal conductivity
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!
Convective heat transfer
𝑁𝑢 =
Conductive heat transfer

78 Chapter 2. API Reference


Fluids Documentation, Release 0.1

References

[1], [2]

Examples

>>> Nusselt(1000., 1.2, 300.)


4.0
>>> Nusselt(10000., .01, 4000.)
0.025

fluids.core.Sherwood(K, L, D)
Calculates Sherwood number Sh for a mass transfer coefficient K, characteristic length L, and diffusivity 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

Mass transfer by convection 𝐾


𝑆ℎ = =
Mass transfer by diffusion 𝐷/𝐿

References

[1]

Examples

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


4.0

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.
𝑅𝑎 = 𝑃 𝑟𝐺𝑟
Parameters
Pr [float] Prandtl number []
Gr [float] Grashof number []
Returns
Ra [float] Rayleigh number []

2.4. Dimensionless numbers (fluids.core) 79


Fluids Documentation, Release 0.1

Notes

Used in free convection problems only.

References

[1], [2]

Examples

>>> Rayleigh(1.2, 4.6E9)


5520000000.0

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


Calculates Schmidt number or Sc for a fluid with the given parameters.
𝜇 𝜈
𝑆𝑐 = =
𝐷𝜌 𝐷
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

kinematic viscosity viscous diffusivity


𝑆𝑐 = =
molecular diffusivity species diffusivity
An error is raised if none of the required input sets are provided.

References

[1], [2]

80 Chapter 2. API Reference


Fluids Documentation, Release 0.1

Examples

>>> Schmidt(D=2E-6, mu=4.61E-6, rho=800)


0.00288125
>>> Schmidt(D=1E-9, nu=6E-7)
599.9999999999999

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.
𝑉 𝐿𝜌𝐶𝑝 𝐿𝑉
𝑃𝑒 = =
𝑘 𝛼
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

Bulk heat transfer


𝑃𝑒 =
Conduction heat transfer
An error is raised if none of the required input sets are provided.

References

[1], [2]

Examples

>>> Peclet_heat(1.5, 2, 1000., 4000., 0.6)


20000000.0
>>> Peclet_heat(1.5, 2, alpha=1E-7)
30000000.0

2.4. Dimensionless numbers (fluids.core) 81


Fluids Documentation, Release 0.1

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.
𝐿𝑉
𝑃𝑒 =
𝐷
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

Advective transport rate


𝑃𝑒 =
Diffusive transport rate

References

[1]

Examples

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


3000000000.0

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 prop-
erties for the given fluid.

𝑘𝑡 𝛼𝑡
𝐹𝑜 = 2
= 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]

82 Chapter 2. API Reference


Fluids Documentation, Release 0.1

Returns
Fo [float] Fourier number (heat) []

Notes

Heat conduction rate


𝐹𝑜 =
Rate of thermal energy storage in a solid
An error is raised if none of the required input sets are provided.

References

[1], [2]

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.
𝐷𝑡
𝐹𝑜 =
𝐿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

Diffusive transport rate


𝐹𝑜 =
Storage rate

References

[1]

2.4. Dimensionless numbers (fluids.core) 83


Fluids Documentation, Release 0.1

Examples

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


3.7500000000000005e-10

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.

𝑉 𝐷 2 · 𝐶𝑝 𝜌 𝑉 𝐷2
𝐺𝑧 = =
𝑥·𝑘 𝑥𝛼
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

Time for radial heat diffusion in a fluid by conduction


𝐺𝑧 =
Time taken by fluid to reach distance x
𝐷
𝐺𝑧 = 𝑅𝑒𝑃 𝑟
𝑥
An error is raised if none of the required input sets are provided.

References

[1]

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

84 Chapter 2. API Reference


Fluids Documentation, Release 0.1

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.
𝑘 𝛼
𝐿𝑒 = =
𝜌𝐶𝑝 𝐷 𝐷

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

Thermal diffusivity 𝑆𝑐
𝐿𝑒 = =
Mass diffusivity 𝑃𝑟
An error is raised if none of the required input sets are provided.

References

[1], [2], [3]

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.Weber(V, L, rho, sigma)


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

𝑉 2 𝐿𝜌
𝑊𝑒 =
𝜎
Parameters
V [float] Velocity of fluid, [m/s]
L [float] Characteristic length, typically bubble diameter [m]
rho [float] Density of fluid, [kg/m^3]

2.4. Dimensionless numbers (fluids.core) 85


Fluids Documentation, Release 0.1

sigma [float] Surface tension, [N/m]


Returns
We [float] Weber number []

Notes

Used in bubble calculations.


inertial force
𝑊𝑒 =
surface tension force

References

[1], [2], [3]

Examples

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


2.916

fluids.core.Mach(V, c)
Calculates Mach number or Ma for a fluid of velocity V with speed of sound 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.


fluid velocity
𝑀𝑎 =
sonic velocity

References

[1], [2]

86 Chapter 2. API Reference


Fluids Documentation, Release 0.1

Examples

>>> Mach(33., 330)


0.1

fluids.core.Knudsen(path, L)
Calculates Knudsen number or Kn for a fluid with mean free path path and for a characteristic length 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.


Mean free path length
𝐾𝑛 =
Characteristic length

References

[1], [2]

Examples

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


1e-07

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

𝑔(𝜌𝑙 − 𝜌𝑔 )𝐿2
𝐵𝑜 =
𝜎
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 []

2.4. Dimensionless numbers (fluids.core) 87


Fluids Documentation, Release 0.1

References

[1]

Examples

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


665187.2339558573

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.
√︂ √︂
𝐷𝑖 𝐷𝑖 𝜌𝑣𝐷
De = Re =
𝐷 𝐷 𝜇
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.



centripetal forces · inertial forces
De =
viscous forces

References

[1]

Examples

>>> Dean(10000, 0.1, 0.4)


5000.0

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.

𝑔𝜇4𝑙 (𝜌𝑙 − 𝜌𝑔 )
𝑀𝑜 =
𝜌2𝑙 𝜎 3

Parameters
rhol [float] Density of liquid phase, [kg/m^3]
rhog [float] Density of gas phase, [kg/m^3]

88 Chapter 2. API Reference


Fluids Documentation, Release 0.1

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.

References

[1], [2]

Examples

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


2.311183104430743e-07

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.
𝑉
𝐹𝑟 = √
𝑔𝐿
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.


Inertial Force
𝐹𝑟 =
Gravity Force

References

[1], [2]

2.4. Dimensionless numbers (fluids.core) 89


Fluids Documentation, Release 0.1

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 𝐹 𝑟𝑑𝑒𝑛 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.
√︂
𝑉 𝜌(1 or 2)
𝐹𝑟 = √
𝑔𝐿 𝜌1 − 𝜌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.


Inertial Force
𝐹𝑟 =
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]

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

90 Chapter 2. API Reference


Fluids Documentation, Release 0.1

fluids.core.Strouhal(f, L, V)
Calculates Strouhal number St for a characteristic frequency f, characteristic length L, and velocity 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.


Characteristic flow time
𝑆𝑡 =
Period of oscillation

References

[1], [2]

Examples

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


4.0

fluids.core.Biot(h, L, k)
Calculates Biot number Br for heat transfer coefficient h, geometric length L, and thermal conductivity 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!
Surface thermal resistance
𝐵𝑖 =
Internal thermal resistance

2.4. Dimensionless numbers (fluids.core) 91


Fluids Documentation, Release 0.1

References

[1], [2]

Examples

>>> Biot(1000., 1.2, 300.)


4.0
>>> Biot(10000., .01, 4000.)
0.025

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.


𝑆𝑡 =
𝑉 𝜌𝐶𝑝
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

Heat transfer coefficient


𝑆𝑡 =
Thermal capacity

References

[1], [1]

Examples

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


0.000625

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.
∆𝑃
𝐸𝑢 =
𝜌𝑉 2
Parameters
dP [float] Pressure drop experience by the fluid, [Pa]

92 Chapter 2. API Reference


Fluids Documentation, Release 0.1

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.
Pressure drop
𝐸𝑢 =
2 · velocity head

References

[1], [2]

Examples

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


6.25

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.
𝑃 − 𝑃𝑠𝑎𝑡
𝐶𝑎 = 𝜎𝑐 = 𝜎 = 1 2
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;
Pressure - Vapor pressure
𝐶𝑎 =
Inertial pressure

References

[1], [2]

2.4. Dimensionless numbers (fluids.core) 93


Fluids Documentation, Release 0.1

Examples

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


3.8

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.
𝑉2
𝐸𝑐 =
𝐶𝑝 ∆𝑇

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.


Kinetic energy
𝐸𝑐 =
Enthalpy difference

References

[1]

Examples

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


0.002

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.
𝐶𝑃 ∆𝑇𝑒
𝐽𝑎 =
∆𝐻𝑣𝑎𝑝

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

94 Chapter 2. API Reference


Fluids Documentation, Release 0.1

Notes

Used in boiling heat transfer analysis. Fairly rare.


∆Sensible heat
𝐽𝑎 =
∆Latent heat

References

[1], [2]

Examples

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


0.02

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, rota-
tional speed N, to a fluid with a specified density rho.
𝑃
𝑃𝑜 =
𝜌𝑁 3 𝐷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.


Power
𝑃𝑜 =
Rotational inertia

References

[1], [2]

Examples

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


144000000.0

2.4. Dimensionless numbers (fluids.core) 95


Fluids Documentation, Release 0.1

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.

𝜌𝑝 𝑉 𝐷𝑝2
Stk =
18𝜇𝑓 𝐷

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.

References

[1], [2]

Examples

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


0.5

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.
𝐹𝑑
𝐶𝐷 =
𝐴 · 12 𝜌𝑉 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, [-]

96 Chapter 2. API Reference


Fluids Documentation, Release 0.1

Notes

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


Drag forces
𝐶𝐷 =
Projected area · Velocity head

References

[1], [2]

Examples

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


400.0

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


Calculates Capillary number Ca for a characteristic velocity V, viscosity mu, and surface tension 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.
Viscous forces
𝐶𝑎 =
Surface forces

References

[1], [2]

Examples

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


0.12

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.
∆𝑃 𝐿2
𝐵𝑒𝐿 =
𝜇𝛼

2.4. Dimensionless numbers (fluids.core) 97


Fluids Documentation, Release 0.1

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.

References

[1], [2]

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.
∆𝑃 𝐾
𝐵𝑒𝑝 =
𝜇𝛼
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.

References

[1], [2]

98 Chapter 2. API Reference


Fluids Documentation, Release 0.1

Examples

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


10000000000000.0

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.
𝑞
Bg =
𝐺𝑡𝑝 ∆𝐻𝑣𝑎𝑝

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.
mass liquid evaporated / area heat transfer surface
Bg =
mass flow rate fluid / flow cross sectional area
First defined in [4], though not named.

References

[1], [2], [3], [4]

Examples

>>> Boiling(300, 3000, 800000)


1.25e-05

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.
[︁ ]︁0.5
𝜎
𝑔(𝜌𝑙 −𝜌𝑔 )
Co =
𝐷
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]

2.4. Dimensionless numbers (fluids.core) 99


Fluids Documentation, Release 0.1

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].
surface tension force
buoyancy force
Co =
Channel area

References

[1], [2], [3]

Examples

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


0.6596978265315191

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, vis-
cosity, and gravity (usually diameter of particle).

𝐿3 𝜌𝑓 (𝜌𝑝 − 𝜌𝑓 )𝑔
𝐴𝑟 =
𝜇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.


Gravitational force
𝐴𝑟 =
Viscous force

References

[1], [2]

100 Chapter 2. API Reference


Fluids Documentation, Release 0.1

Examples

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


470.4053872

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


Calculates Ohnesorge number, Oh, for a fluid with the given characteristic length, density, viscosity, and surface
tension.
𝜇
Oh = √
𝜌𝜎𝐿
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.



We viscous forces
𝑂ℎ = =√
Re Inertia · Surface tension

References

[1]

Examples

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


0.01

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


Calculates Suratman number, Su, for a fluid with the given characteristic length, density, viscosity, and surface
tension.
𝜌𝜎𝐿
Su =
𝜇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]

2.4. Dimensionless numbers (fluids.core) 101


Fluids Documentation, Release 0.1

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.

Re2 Inertia · Surface tension


Su = =
We (viscous forces)2
The oldest reference to this group found by the author is in 1963, from [2].

References

[1], [2]

Examples

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


10000.0

fluids.core.Hagen(Re, fd)
Calculates Hagen number, Hg, for a fluid with the given Reynolds number and friction factor.

𝑓𝑑 2 1 ∆𝑃 𝐷3 𝜌∆𝑃 𝐷3
Hg = 𝑅𝑒 = =
2 𝜌 ∆𝑧 𝜈 2 𝜇2 ∆𝑧
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.

References

[1], [2], [3]

102 Chapter 2. API Reference


Fluids Documentation, Release 0.1

Examples

Example from [3]:

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


6591507.17175

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


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

𝑘
𝛼=
𝜌𝐶𝑝
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]

References

[1]

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.
√︀
𝑐= 𝑘𝑅𝑠𝑝𝑒𝑐𝑖𝑓 𝑖𝑐 𝑇

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:
1000
𝑅𝑠𝑝𝑒𝑐𝑖𝑓 𝑖𝑐 = 𝑅
𝑀𝑊

2.4. Dimensionless numbers (fluids.core) 103


Fluids Documentation, Release 0.1

References

[1], [2]

Examples

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


348.9820953185441

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 rough-
ness is that of steel.
𝜖
𝑒𝐷 =
𝐷
Parameters
D [float] Diameter of pipe, [m]
roughness [float, optional] Roughness of pipe wall [m]
Returns
eD [float] Relative Roughness, [-]

References

[1], [2]

Examples

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


0.0002

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.
𝜇
𝜈=
𝜌

𝜇 = 𝜈𝜌
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

104 Chapter 2. API Reference


Fluids Documentation, Release 0.1

References

[1]

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.

𝑔 = 9.780356(1 + 0.0052885 sin2 𝜑 − 0.00000592 2𝜑) − 3.086 × 10−6 𝐻

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.

References

[1]

Examples

>>> gravity(55, 1E4)


9.784151976863571

fluids.core.K_from_f(fd, L, D)
Calculates loss coefficient, K, for a given section of pipe at a specified friction factor.

𝐾 = 𝑓𝑑 𝐿/𝐷

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, []

2.4. Dimensionless numbers (fluids.core) 105


Fluids Documentation, Release 0.1

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).
𝐿
𝐾 = 𝑓𝑑
𝐷
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

fluids.core.L_equiv_from_K(K, fd=0.015)
Calculates equivalent length of pipe (L/D), for a given loss coefficient.
𝐿 𝐾
=
𝐷 𝑓𝑑
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.

106 Chapter 2. API Reference


Fluids Documentation, Release 0.1

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.
𝐾𝐷
𝐿=
𝑓𝑑
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

fluids.core.dP_from_K(K, rho, V)
Calculates pressure drop, for a given loss coefficient, at a specified density and velocity.

𝑑𝑃 = 0.5𝐾𝜌𝑉 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

fluids.core.head_from_K(K, V, g=9.80665)
Calculates head loss, for a given loss coefficient, at a specified velocity.
𝐾𝑉 2
head =
2𝑔

2.4. Dimensionless numbers (fluids.core) 107


Fluids Documentation, Release 0.1

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

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


Calculates head for a fluid of specified density at specified pressure.
𝑃
head =
𝜌𝑔
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

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


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

𝑃 = 𝜌𝑔 · head

Parameters
head [float] Head, [m]
rho [float] Density of fluid, [kg/m^3]

108 Chapter 2. API Reference


Fluids Documentation, Release 0.1

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


Returns
P [float] Pressure fluid in pipe, [Pa]

Examples

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


39226.6

fluids.core.Eotvos(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).

𝑔(𝜌𝑙 − 𝜌𝑔 )𝐿2
𝐵𝑜 =
𝜎
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 []

References

[1]

Examples

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


665187.2339558573

2.5 Drag and terminal velocity (fluids.drag)

fluids.drag.drag_sphere(Re, Method=None, AvailableMethods=False)


This function handles calculation of drag coefficient on spheres. Twenty methods are available, all requiring
only the Reynolds number of the sphere. Most methods are valid from Re=0 to Re=200,000. A correlation will
be automatically selected if none is specified. The full list of correlations valid for a given Reynolds number can
be obtained with the AvailableMethods flag.
If no correlation is selected, the following rules are used:
• If Re < 0.01, use Stoke’s solution.
• If 0.01 <= Re < 0.1, linearly combine ‘Barati’ with Stokes’s solution such that at Re = 0.1 the solution is
‘Barati’, and at Re = 0.01 the solution is ‘Stokes’.

2.5. Drag and terminal velocity (fluids.drag) 109


Fluids Documentation, Release 0.1

• If 0.1 <= Re <= ~212963, use the ‘Barati’ solution.


• If ~212963 < Re <= 1E6, use the ‘Barati_high’ solution.
• For Re > 1E6, raises an exception; no valid results have been found.

Parameters
Re [float] Particle Reynolds number of the sphere using the surrounding fluid density and vis-
cosity, [-]
Returns
Cd [float] Drag coefficient [-]
methods [list, only returned if AvailableMethods == True] List of methods which can be used
to calculate Cd with the given Re
Other Parameters
Method [string, optional] A string of the function name to use, as in the dictionary
drag_sphere_correlations
AvailableMethods [bool, optional] If True, function will consider which methods which can be
used to calculate Cd with the given Re

Examples

>>> drag_sphere(200)
0.7682237950389874

fluids.drag.v_terminal(D, rhop, rho, mu, Method=None)


Calculates terminal velocity of a falling sphere using any drag coefficient method supported by drag_sphere.
The laminar solution for Re < 0.01 is first tried; if the resulting terminal velocity does not put it in the laminar
regime, a numerical solution is used.
√︃
4𝑔𝑑𝑝 (𝜌𝑝 − 𝜌𝑓 )
𝑣𝑡 =
3𝐶𝐷 𝜌𝑓

Parameters
D [float] Diameter of the sphere, [m]
rhop [float] Particle density, [kg/m^3]
rho [float] Density of the surrounding fluid, [kg/m^3]
mu [float] Viscosity of the surrounding fluid [Pa*s]
Method [string, optional] A string of the function name to use, as in the dictionary
drag_sphere_correlations
Returns
v_t [float] Terminal velocity of falling sphere [m/s]

Notes

As there are no correlations implemented for Re > 1E6, an error will be raised if the numerical solver seeks a
solution above that limit.

110 Chapter 2. API Reference


Fluids Documentation, Release 0.1

The laminar solution is given in [1] and is:

𝑔𝑑2𝑝 (𝜌𝑝 − 𝜌𝑓 )
𝑣𝑡 =
18𝜇𝑓

References

[1], [2]

Examples

>>> v_terminal(D=70E-6, rhop=2600., rho=1000., mu=1E-3)


0.004142497244531304

Example 7-1 in GPSA handbook, 13th edition:

>>> from scipy.constants import *


>>> v_terminal(D=150E-6, rhop=31.2*lb/foot**3, rho=2.07*lb/foot**3, mu=1.2e-05)/
˓→foot

0.4491992020345101

The answer reported there is 0.46 ft/sec.


fluids.drag.integrate_drag_sphere(D, rhop, rho, mu, t, V=0, Method=None, distance=False)
Integrates the velocity and distance traveled by a particle moving at a speed which will converge to its terminal
velocity.
Performs an integration of the following expression for acceleration:

𝑔(𝜌𝑝 − 𝜌𝑓 ) 3𝐶𝐷 𝜌𝑓 𝑢2
𝑎= −
𝜌𝑝 4𝐷𝜌𝑝

Parameters
D [float] Diameter of the sphere, [m]
rhop [float] Particle density, [kg/m^3]
rho [float] Density of the surrounding fluid, [kg/m^3]
mu [float] Viscosity of the surrounding fluid [Pa*s]
t [float] Time to integrate the particle to, [s]
V [float] Initial velocity of the particle, [m/s]
Method [string, optional] A string of the function name to use, as in the dictionary
drag_sphere_correlations
distance [bool, optional] Whether or not to calculate the distance traveled and return it as well
Returns
v [float] Velocity of falling sphere after time t [m/s]
x [float, returned only if distance == True] Distance traveled by the falling sphere in time t, [m]

2.5. Drag and terminal velocity (fluids.drag) 111


Fluids Documentation, Release 0.1

Notes

This can be relatively slow as drag correlations can be complex.


There are analytical solutions available for the Stokes law regime (Re < 0.3). They were obtained from Wolfram
Alpha. [1] was not used in the derivation, but also describes the derivation fully.
exp(−𝑎𝑡)(𝑉0 𝑎 + 𝑏(exp(𝑎𝑡) − 1))
𝑉 (𝑡) =
𝑎
exp(−𝑎𝑡) [𝑉0 𝑎(exp(𝑎𝑡) − 1) + 𝑏 exp(𝑎𝑡)(𝑎𝑡 − 1) + 𝑏]
𝑥(𝑡) =
𝑎2
18𝜇𝑓
𝑎= 2
𝐷 𝜌𝑝
𝑔(𝜌𝑝 − 𝜌𝑓 )
𝑏=
𝜌𝑝
The analytical solution will automatically be used if the initial and terminal velocity is show the particle’s
behavior to be laminar. Note that this behavior requires that the terminal velocity of the particle be solved for -
this adds slight (1%) overhead for the cases where particles are not laminar.

References

[1]

Examples

>>> integrate_drag_sphere(D=0.001, rhop=2200., rho=1.2, mu=1.78E-5, t=0.5,


... V=30, distance=True)
(9.686465044053476, 7.8294546436299175)

fluids.drag.time_v_terminal_Stokes(D, rhop, rho, mu, V0, tol=1e-14)


Calculates the time required for a particle in Stoke’s regime only to reach terminal velocity (approximately).
An infinitely long period is required theoretically, but with floating points, it is possible to calculate the time
required to come within a specified tol of that terminal velocity.
(︂ 2
𝐷 𝑔𝜌 − 𝐷2 𝑔𝜌𝑝 + 18𝜇𝑉𝑡𝑒𝑟𝑚
)︂
1
𝑡𝑡𝑒𝑟𝑚 = − ln 𝐷2 𝜌𝑝
18𝜇 𝐷2 𝑔𝜌 − 𝐷2 𝑔𝜌𝑝 + 18𝜇𝑉0
Parameters
D [float] Diameter of the sphere, [m]
rhop [float] Particle density, [kg/m^3]
rho [float] Density of the surrounding fluid, [kg/m^3]
mu [float] Viscosity of the surrounding fluid [Pa*s]
V0 [float] Initial velocity of the particle, [m/s]
tol [float, optional] How closely to approach the terminal velocity - the target velocity is the
terminal velocity multiplied by 1 (+/-) this, depending on if the particle is accelerating or
decelerating, [-]
Returns
t [float] Time for the particle to reach the terminal velocity to within the specified or an achiev-
able tolerance, [s]

112 Chapter 2. API Reference


Fluids Documentation, Release 0.1

Notes

The symbolic solution was obtained via Wolfram Alpha.


If a solution cannot be obtained due to floating point error at very high tolerance, an exception is raised - but
first, the tolerance is doubled, up to fifty times in an attempt to obtain the highest possible precision while sill
giving an answer. If at any point the tolerance is larger than 1%, an exception is also raised.

Examples

>>> time_v_terminal_Stokes(D=1e-7, rhop=2200., rho=1.2, mu=1.78E-5, V0=1)


3.188003113787153e-06
>>> time_v_terminal_Stokes(D=1e-2, rhop=2200., rho=1.2, mu=1.78E-5, V0=1,
... tol=1e-30)
24800.636391802

fluids.drag.Stokes(Re)
Calculates drag coefficient of a smooth sphere using Stoke’s law.

𝐶𝐷 = 24/𝑅𝑒

Parameters
Re [float] Particle Reynolds number of the sphere using the surrounding fluid density and vis-
cosity, [-]
Returns
Cd [float] Drag coefficient [-]

Notes

Range is Re <= 0.3

References

[1]

Examples

>>> Stokes(0.1)
240.0

fluids.drag.Barati(Re)
Calculates drag coefficient of a smooth sphere using the method in [1].

𝐶𝐷 = 5.4856 × 109 tanh(4.3774 × 10−9 /𝑅𝑒) + 0.0709 tanh(700.6574/𝑅𝑒) + 0.3894 tanh(74.1539/𝑅𝑒) − 0.1198 tanh(7429

Parameters
Re [float] Particle Reynolds number of the sphere using the surrounding fluid density and vis-
cosity, [-]
Returns
Cd [float] Drag coefficient [-]

2.5. Drag and terminal velocity (fluids.drag) 113


Fluids Documentation, Release 0.1

Notes

Range is Re <= 2E5

References

[1]

Examples

Matching example in [1], in a table of calculated values.


>>> Barati(200.)
0.7682237950389874

fluids.drag.Barati_high(Re)
Calculates drag coefficient of a smooth sphere using the method in [1].

𝐶𝐷 = 8 × 10−6 (𝑅𝑒/6530)2 + tanh(𝑅𝑒) − 8 ln(𝑅𝑒)/ ln(10) − 0.4119 exp(−2.08 × 1043 /[𝑅𝑒 + 𝑅𝑒2 ]4 ) − 2.1344 exp(−{[ln
[︀ ]︀

Parameters
Re [float] Particle Reynolds number of the sphere using the surrounding fluid density and vis-
cosity, [-]
Returns
Cd [float] Drag coefficient [-]

Notes

Range is Re <= 1E6 This model is the wider-range model the authors developed. At sufficiently low diameters
or Re values, drag is no longer a phenomena.

References

[1]

Examples

Matching example in [1], in a table of calculated values.


>>> Barati_high(200.)
0.7730544082789523

fluids.drag.Rouse(Re)
Calculates drag coefficient of a smooth sphere using the method in [1] as described in [2].
24 3
𝐶𝐷 = + + 0.34
𝑅𝑒 𝑅𝑒0.5
Parameters
Re [float] Particle Reynolds number of the sphere using the surrounding fluid density and vis-
cosity, [-]

114 Chapter 2. API Reference


Fluids Documentation, Release 0.1

Returns
Cd [float] Drag coefficient [-]

Notes

Range is Re <= 2E5

References

[1], [2]

Examples

>>> Rouse(200.)
0.6721320343559642

fluids.drag.Engelund_Hansen(Re)
Calculates drag coefficient of a smooth sphere using the method in [1] as described in [2].
24
𝐶𝐷 = + 1.5
𝑅𝑒
Parameters
Re [float] Particle Reynolds number of the sphere using the surrounding fluid density and vis-
cosity, [-]
Returns
Cd [float] Drag coefficient [-]

Notes

Range is Re <= 2E5

References

[1], [2]

Examples

>>> Engelund_Hansen(200.)
1.62

fluids.drag.Clift_Gauvin(Re)
Calculates drag coefficient of a smooth sphere using the method in [1] as described in [2].
24 0.417
𝐶𝐷 = (1 + 0.152𝑅𝑒0.677 ) +
𝑅𝑒 1 + 5070𝑅𝑒−0.94
Parameters

2.5. Drag and terminal velocity (fluids.drag) 115


Fluids Documentation, Release 0.1

Re [float] Particle Reynolds number of the sphere using the surrounding fluid density and vis-
cosity, [-]
Returns
Cd [float] Drag coefficient [-]

Notes

Range is Re <= 2E5

References

[1], [2]

Examples

>>> Clift_Gauvin(200.)
0.7905400398000133

fluids.drag.Morsi_Alexander(Re)
Calculates drag coefficient of a smooth sphere using the method in [1] as described in [2].
⎧ 24
if 𝑅𝑒 < 0.1
⎪ 𝑅𝑒

⎪ 22.73 0.0903


⎪ 𝑅𝑒 + 𝑅𝑒 2 + 3.69 if 0.1 < 𝑅𝑒 < 1
⎪ 29.1667 3.8889


⎪ 𝑅𝑒 − 𝑅𝑒 2 + 1.2220 if 1 < 𝑅𝑒 < 10
⎪ 46.5 116.67

𝑅𝑒 − 𝑅𝑒 2 + 0.6167 if 10 < 𝑅𝑒 < 100
𝐶𝐷 = 98.33
− 2778
2 + 0.3644 if 100 < 𝑅𝑒 < 1000
⎪ 𝑅𝑒 𝑅𝑒
148.62 4.75×104



⎪ 𝑅𝑒 − 𝑅𝑒2 + 0.3570 if 1000 < 𝑅𝑒 < 5000
57.87×104

−490.5460
+ 𝑅𝑒2 + 0.46 if 5000 < 𝑅𝑒 < 10000


𝑅𝑒


⎩ −1662.5 5.4167×106

𝑅𝑒 + 𝑅𝑒2 + 0.5191 if 10000 < 𝑅𝑒 < 50000

Parameters
Re [float] Particle Reynolds number of the sphere using the surrounding fluid density and vis-
cosity, [-]
Returns
Cd [float] Drag coefficient [-]

Notes

Range is Re <= 2E5. Original was reviewed, and confirmed to contain the cited equations.

References

[1], [2]

Examples

116 Chapter 2. API Reference


Fluids Documentation, Release 0.1

>>> Morsi_Alexander(200)
0.7866

fluids.drag.Graf(Re)
Calculates drag coefficient of a smooth sphere using the method in [1] as described in [2].
24 7.3
𝐶𝐷 = + + 0.25
𝑅𝑒 1 + 𝑅𝑒0.5
Parameters
Re [float] Particle Reynolds number of the sphere using the surrounding fluid density and vis-
cosity, [-]
Returns
Cd [float] Drag coefficient [-]

Notes

Range is Re <= 2E5

References

[1], [2]

Examples

>>> Graf(200.)
0.8520984424785725

fluids.drag.Flemmer_Banks(Re)
Calculates drag coefficient of a smooth sphere using the method in [1] as described in [2].
24 𝐸
𝐶𝐷 = 10
𝑅𝑒
0.143
𝐸 = 0.383𝑅𝑒0.356 − 0.207𝑅𝑒0.396 −
1 + (log10 𝑅𝑒)2
Parameters
Re [float] Particle Reynolds number of the sphere using the surrounding fluid density and vis-
cosity, [-]
Returns
Cd [float] Drag coefficient [-]

Notes

Range is Re <= 2E5

References

[1], [2]

2.5. Drag and terminal velocity (fluids.drag) 117


Fluids Documentation, Release 0.1

Examples

>>> Flemmer_Banks(200.)
0.7849169609270039

fluids.drag.Khan_Richardson(Re)
Calculates drag coefficient of a smooth sphere using the method in [1] as described in [2].

𝐶𝐷 = (2.49𝑅𝑒−0.328 + 0.34𝑅𝑒0.067 )3.18

Parameters
Re [float] Particle Reynolds number of the sphere using the surrounding fluid density and vis-
cosity, [-]
Returns
Cd [float] Drag coefficient [-]

Notes

Range is Re <= 2E5

References

[1], [2]

Examples

>>> Khan_Richardson(200.)
0.7747572379211097

fluids.drag.Swamee_Ojha(Re)
Calculates drag coefficient of a smooth sphere using the method in [1] as described in [2].

]︂2.5 [︃(︂ )︂2 ]︃−0.25 ⎫0.25
⎨ [︂ 24 130 0.72 40000 ⎬
𝐶𝐷 = 0.5 16 ( )1.6 + ( ) + +1
⎩ 𝑅𝑒 𝑅𝑒 𝑅𝑒 ⎭

Parameters
Re [float] Particle Reynolds number of the sphere using the surrounding fluid density and vis-
cosity, [-]
Returns
Cd [float] Drag coefficient [-]

Notes

Range is Re <= 1.5E5

References

[1], [2]

118 Chapter 2. API Reference


Fluids Documentation, Release 0.1

Examples

>>> Swamee_Ojha(200.)
0.8490012397545713

fluids.drag.Yen(Re)
Calculates drag coefficient of a smooth sphere using the method in [1] as described in [2].
24 (︁ √ )︁ 0.208
𝐶𝐷 = 1 + 0.15 𝑅𝑒 + 0.017𝑅𝑒 −
𝑅𝑒 1 + 104 𝑅𝑒−0.5
Parameters
Re [float] Particle Reynolds number of the sphere using the surrounding fluid density and vis-
cosity, [-]
Returns
Cd [float] Drag coefficient [-]

Notes

Range is Re <= 2E5

References

[1], [2]

Examples

>>> Yen(200.)
0.7822647002187014

fluids.drag.Haider_Levenspiel(Re)
Calculates drag coefficient of a smooth sphere using the method in [1] as described in [2].
(︂ )︂
24 0.4251
𝐶𝐷 = (1 + 0.1806𝑅𝑒0.6459 ) +
𝑅𝑒 1 + 6880.95
𝑅𝑒

Parameters
Re [float] Particle Reynolds number of the sphere using the surrounding fluid density and vis-
cosity, [-]
Returns
Cd [float] Drag coefficient [-]

Notes

Range is Re <= 2E5 An improved version of this correlation is in Brown and Lawler.

References

[1], [2]

2.5. Drag and terminal velocity (fluids.drag) 119


Fluids Documentation, Release 0.1

Examples

>>> Haider_Levenspiel(200.)
0.7959551680251666

fluids.drag.Cheng(Re)
Calculates drag coefficient of a smooth sphere using the method in [1] as described in [2].
24
𝐶𝐷 = (1 + 0.27𝑅𝑒)0.43 + 0.47[1 − exp(−0.04𝑅𝑒0.38 )]
𝑅𝑒
Parameters
Re [float] Particle Reynolds number of the sphere using the surrounding fluid density and vis-
cosity, [-]
Returns
Cd [float] Drag coefficient [-]

Notes

Range is Re <= 2E5

References

[1], [2]

Examples

>>> Cheng(200.)
0.7939143028294227

fluids.drag.Terfous(Re)
Calculates drag coefficient of a smooth sphere using the method in [1] as described in [2].
21.683 0.131 10.616 12.216
𝐶𝐷 = 2.689 + + − +
𝑅𝑒 𝑅𝑒2 𝑅𝑒0.1 𝑅𝑒0.2
Parameters
Re [float] Particle Reynolds number of the sphere using the surrounding fluid density and vis-
cosity, [-]
Returns
Cd [float] Drag coefficient [-]

Notes

Range is 0.1 < Re <= 5E4

References

[1], [2]

120 Chapter 2. API Reference


Fluids Documentation, Release 0.1

Examples

>>> Terfous(200.)
0.7814651149769638

fluids.drag.Mikhailov_Freire(Re)
Calculates drag coefficient of a smooth sphere using the method in [1] as described in [2].

3808[(1617933/2030) + (178861/1063)𝑅𝑒 + (1219/1084)𝑅𝑒2 ]


𝐶𝐷 =
681𝑅𝑒[(77531/422) + (13529/976)𝑅𝑒 − (1/71154)𝑅𝑒2 ]

Parameters
Re [float] Particle Reynolds number of the sphere using the surrounding fluid density and vis-
cosity, [-]
Returns
Cd [float] Drag coefficient [-]

Notes

Range is Re <= 118300

References

[1], [2]

Examples

>>> Mikhailov_Freire(200.)
0.7514111388018659

fluids.drag.Clift(Re)
Calculates drag coefficient of a smooth sphere using the method in [1] as described in [2].
⎧ 24 3

⎪ 𝑅𝑒 + 16 if 𝑅𝑒 < 0.01
24 0.82−0.05 log 𝑅𝑒
(1 + 0.1315𝑅𝑒 ) if 0.01 < 𝑅𝑒 < 20



⎪ 𝑅𝑒
24 0.6305
(1 + 0.1935𝑅𝑒 ) if 20 < 𝑅𝑒 < 260



⎪ 𝑅𝑒
⎪ [1.6435−1.1242 log 𝑅𝑒+0.1558[log 𝑅𝑒]2


⎨ 10 if 260 < 𝑅𝑒 < 1500
2 3
𝐶𝐷 = 10[−2.4571+2.5558 log 𝑅𝑒−0.9295[log 𝑅𝑒] +0.1049[log 𝑅𝑒] if 1500 < 𝑅𝑒 < 12000
2
⎪ 10[−1.9181+0.6370 log 𝑅𝑒−0.0636[log 𝑅𝑒]


⎪ if 12000 < 𝑅𝑒 < 44000
⎪ 2
[−4.3390+1.5809 log 𝑅𝑒−0.1546[log 𝑅𝑒]
10 if 44000 < 𝑅𝑒 < 338000




9.78 − 5.3 log 𝑅𝑒 if 338000 < 𝑅𝑒 < 400000




0.19 log 𝑅𝑒 − 0.49 if 400000 < 𝑅𝑒 < 1000000

Parameters
Re [float] Particle Reynolds number of the sphere using the surrounding fluid density and vis-
cosity, [-]
Returns
Cd [float] Drag coefficient [-]

2.5. Drag and terminal velocity (fluids.drag) 121


Fluids Documentation, Release 0.1

Notes

Range is Re <= 1E6.

References

[1], [2]

Examples

>>> Clift(200)
0.7756342422322543

fluids.drag.Ceylan(Re)
Calculates drag coefficient of a smooth sphere using the method in [1] as described in [2].

𝐶𝐷 = 1 − 0.5 exp(0.182) + 10.11𝑅𝑒−2/3 exp(0.952𝑅𝑒−1/4 ) − 0.03859𝑅𝑒−4/3 exp(1.30𝑅𝑒−1/2 ) + 0.037 × 10−4 𝑅𝑒 exp(−0.1

Parameters
Re [float] Particle Reynolds number of the sphere using the surrounding fluid density and vis-
cosity, [-]
Returns
Cd [float] Drag coefficient [-]

Notes

Range is 0.1 < Re <= 1E6 Original article reviewed.

References

[1], [2]

Examples

>>> Ceylan(200.)
0.7816735980280175

fluids.drag.Almedeij(Re)
Calculates drag coefficient of a smooth sphere using the method in [1] as described in [2].
[︂ ]︂0.1
1
𝐶𝐷 = + 𝜑4
(𝜑1 + 𝜑2 )−1 + (𝜑3 )−1

𝜑1 = (24𝑅𝑒−1 )10 + (21𝑅𝑒−0.67 )10 + (4𝑅𝑒−0.33 )10 + 0.410


]︀−1
𝜑2 = (0.148𝑅𝑒0.11 )−10 + (0.5)−10
[︀

𝜑3 = (1.57 × 108 𝑅𝑒−1.625 )10


]︀−1
𝜑4 = (6 × 10−17 𝑅𝑒2.63 )−10 + (0.2)−10
[︀

122 Chapter 2. API Reference


Fluids Documentation, Release 0.1

Parameters
Re [float] Particle Reynolds number of the sphere using the surrounding fluid density and vis-
cosity, [-]
Returns
Cd [float] Drag coefficient [-]

Notes

Range is Re <= 1E6. Original work has been reviewed.

References

[1], [2]

Examples

>>> Almedeij(200.)
0.7114768646813396

fluids.drag.Morrison(Re)
Calculates drag coefficient of a smooth sphere using the method in [1] as described in [2].
(︀ 𝑅𝑒 )︀−7.94
24 2.6𝑅𝑒/5 0.411 263000 𝑅𝑒0.8
𝐶𝐷 = + (︀ 𝑅𝑒 )︀1.52 + (︀ 𝑅𝑒 )︀−8 +
𝑅𝑒 1 + 1 + 263000 461000
5

Parameters
Re [float] Particle Reynolds number of the sphere using the surrounding fluid density and vis-
cosity, [-]
Returns
Cd [float] Drag coefficient [-]

Notes

Range is Re <= 1E6.

References

[1], [2]

Examples

>>> Morrison(200.)
0.767731559965325

2.5. Drag and terminal velocity (fluids.drag) 123


Fluids Documentation, Release 0.1

fluids.drag.Song_Xu(Re, sphericity=1.0, S=1.0)


Calculates drag coefficient of a particle using the method in [1]. Developed with data for spheres, cubes, and
cylinders. Claims 3.52% relative error for 0.001 < Re < 100 based on 336 tests data.
24 0.44
𝐶𝑑 = (1 + 0.35𝑅𝑒)
𝑅𝑒𝜑0.65 𝑆 0.3
Parameters
Re [float] Particle Reynolds number of the sphere using the surrounding fluid density and vis-
cosity, [-]
sphericity [float, optional] Sphericity of the particle
S [float, optional] Ratio of equivalent sphere area and the projected area in the particle settling
direction [-]
Returns
Cd [float] Drag coefficient of particle [-]

Notes

Notable as its experimental data and analysis is included in their supporting material.

References

[1]

Examples

>>> Song_Xu(30.)
2.3431335190092444

2.6 Filter pressure drop (fluids.filters)

fluids.filters.round_edge_screen(alpha, Re, angle=0)


Returns the loss coefficient for a round edged wire screen or bar screen, as shown in [1]. Angle of inclination
may be specified as well.
Parameters
alpha [float] Fraction of screen open to flow [-]
Re [float] Reynolds number of flow through screen with D = space between rods, []
angle [float, optional] Angle of inclination, with 0 being straight and 90 being parallel to flow
[degrees]
Returns
K [float] Loss coefficient [-]

124 Chapter 2. API Reference


Fluids Documentation, Release 0.1

Notes

Linear interpolation between a table of values. Re table extends from 20 to 400, with constant values outside of
the table. This behavior should be adequate. alpha should be between 0.05 and 0.8. If angle is over 85 degrees,
the value at 85 degrees is used.

References

[1]

Examples

>>> round_edge_screen(0.5, 100)


2.0999999999999996
>>> round_edge_screen(0.5, 100, 45)
1.05

fluids.filters.round_edge_open_mesh(alpha, subtype=’diamond pattern wire’, angle=0)


Returns the loss coefficient for a round edged open net/screen made of one of the following patterns, according
to [1]:
‘round bar screen’:

𝐾 = 0.95(1 − 𝛼) + 0.2(1 − 𝛼)2

‘diamond pattern wire’:

𝐾 = 0.67(1 − 𝛼) + 1.3(1 − 𝛼)2

‘knotted net’:

𝐾 = 0.70(1 − 𝛼) + 4.9(1 − 𝛼)2

‘knotless net’:

𝐾 = 0.72(1 − 𝛼) + 2.1(1 − 𝛼)2

Parameters
alpha [float] Fraction of net/screen open to flow [-]
subtype [str] One of ‘round bar screen’, ‘diamond pattern wire’, ‘knotted net’ or ‘knotless net’.
angle [float, optional] Angle of inclination, with 0 being straight and 90 being parallel to flow
[degrees]
Returns
K [float] Loss coefficient [-]

Notes

alpha should be between 0.85 and 1 for these correlations. Flow should be turbulent, with Re > 500.

2.6. Filter pressure drop (fluids.filters) 125


Fluids Documentation, Release 0.1

References

[1]

Examples

>>> round_edge_open_mesh(0.96, angle=33.)


0.02031327712601458

fluids.filters.square_edge_screen(alpha)
Returns the loss coefficient for a square wire screen or square bar screen or perforated plate with squared edges,
as shown in [1].
Parameters
alpha [float] Fraction of screen open to flow [-]
Returns
K [float] Loss coefficient [-]

Notes

Linear interpolation between a table of values.

References

[1]

Examples

>>> square_edge_screen(0.99)
0.008000000000000007

fluids.filters.square_edge_grill(alpha, l=None, Dh=None, fd=None)


Returns the loss coefficient for a square grill or square bar screen or perforated plate with squared edges of
thickness l, as shown in [1].
for Dh < l < 50D
0.5(1 − 𝛼) + (1 − 𝛼2 )
𝐾=
𝛼2
else:
0.5(1 − 𝛼) + (1 − 𝛼2 ) + 𝑓 𝑙/𝐷
𝐾=
𝛼2
Parameters
alpha [float] Fraction of grill open to flow [-]
l [float, optional] Thickness of the grill or plate [m]
Dh [float, optional] Hydraulic diameter of gap in grill, [m]
fd [float, optional] Darcy friction factor [-]

126 Chapter 2. API Reference


Fluids Documentation, Release 0.1

Returns
K [float] Loss coefficient [-]

Notes

If l, Dh, or fd is not provided, the first expression is used instead. The alteration of the expression to include
friction factor is there if the grill is long enough to have considerable friction along the surface of the grill.

References

[1]

Examples

>>> square_edge_grill(.45)
5.296296296296296
>>> square_edge_grill(.45, l=.15, Dh=.002, fd=.0185)
12.148148148148147

fluids.filters.round_edge_grill(alpha, l=None, Dh=None, fd=None)


Returns the loss coefficient for a rounded square grill or square bar screen or perforated plate with rounded
edges of thickness l, as shown in [1].
for Dh < l < 50D

𝐾 = 𝑙𝑜𝑜𝑘𝑢𝑝(𝑎𝑙𝑝ℎ𝑎)

else:
𝑓𝑙
𝐾 = 𝑙𝑜𝑜𝑘𝑢𝑝(𝑎𝑙𝑝ℎ𝑎) +
𝛼2 𝐷
Parameters
alpha [float] Fraction of grill open to flow [-]
l [float, optional] Thickness of the grill or plate [m]
Dh [float, optional] Hydraulic diameter of gap in grill, [m]
fd [float, optional] Darcy friction factor [-]
Returns
K [float] Loss coefficient [-]

Notes

If l, Dh, or fd is not provided, the first expression is used instead. The alteration of the expression to include
friction factor is there if the grill is long enough to have considerable friction along the surface of the grill. alpha
must be between 0.3 and 0.7.

References

[1]

2.6. Filter pressure drop (fluids.filters) 127


Fluids Documentation, Release 0.1

Examples

>>> round_edge_grill(.4)
1.0
>>> round_edge_grill(.4, l=.15, Dh=.002, fd=.0185)
2.3874999999999997

2.7 Fittings pressure drop (fluids.fittings)

fluids.fittings.contraction_sharp(Di1, Di2)
Returns loss coefficient for any sharp edged pipe contraction as shown in [1].

𝐾 = 0.0696(1 − 𝛽 5 )𝜆2 + (𝜆 − 1)2

𝜆 = 1 + 0.622(1 − 0.215𝛽 2 − 0.785𝛽 5 )

𝛽 = 𝑑2 /𝑑1

Parameters
Di1 [float] Inside diameter of original pipe, [m]
Di2 [float] Inside diameter of following pipe, [m]
Returns
K [float] Loss coefficient in terms of the following pipe [-]

Notes

A value of 0.506 or simply 0.5 is often used.

References

[1]

128 Chapter 2. API Reference


Fluids Documentation, Release 0.1

Examples

>>> contraction_sharp(Di1=1, Di2=0.4)


0.5301269161591805

fluids.fittings.contraction_round(Di1, Di2, rc, method=’Rennels’)


Returns loss coefficient for any any round edged pipe contraction. This calculation has three methods available.
The ‘Miller’ [2] method is a bivariate spline digitization of a graph; the ‘Idelchik’ [3] method is an interpolation
using a formula and a table of values.
The most conservative formulation is that of Rennels; with fairly similar. The ‘Idelchik’ method is more con-
servative and less complex; it offers a straight-line curve where the others curves are curved.
The Rennels [1] formulas are:
(︂ )︂ (︂ √︂ )︂
𝑟 𝑟
𝐾 = 0.0696 1 − 0.569 1− 𝛽 (1 − 𝛽 5 )𝜆2 + (𝜆 − 1)2
𝑑2 𝑑2
(︂ √︂ )︂4
𝑟 𝑟
𝜆 = 1 + 0.622 1 − 0.30 − 0.70 (1 − 0.215𝛽 2 − 0.785𝛽 5 )
𝑑2 𝑑2
𝛽 = 𝑑2 /𝑑1

Parameters
Di1 [float] Inside diameter of original pipe, [m]
Di2 [float] Inside diameter of following pipe, [m]
rc [float] Radius of curvature of the contraction, [m]
method [str] The calculation method to use; one of ‘Rennels’, ‘Miller’, or ‘Idelchik’, [-]
Returns
K [float] Loss coefficient in terms of the following pipe [-]

Notes

Rounding radius larger than 0.14Di2 prevents flow separation from the wall. Further increase in rounding radius
continues to reduce loss coefficient.

References

[1], [2], [3]

2.7. Fittings pressure drop (fluids.fittings) 129


Fluids Documentation, Release 0.1

Comparison of available methods for rounded pipe contractions


Rennels, ratio = 0.1
Miller, ratio = 0.1
0.5 Idelchik, ratio = 0.1
Rennels, ratio = 0.06
Miller, ratio = 0.06
0.4 Idelchik, ratio = 0.06
Rennels, ratio = 0.04
Miller, ratio = 0.04
0.3 Idelchik, ratio = 0.04
K

Rennels, ratio = 0.02


Miller, ratio = 0.02
0.2 Idelchik, ratio = 0.02
Rennels, ratio = 0
0.1 Miller, ratio = 0
Idelchik, ratio = 0

0.0
0.0 0.2 0.4 0.6 0.8 1.0
Area ratio

130 Chapter 2. API Reference


Fluids Documentation, Release 0.1

Examples

>>> contraction_round(Di1=1, Di2=0.4, rc=0.04)


0.1783332490866574

fluids.fittings.contraction_round_Miller(Di1, Di2, rc)


Returns loss coefficient for any round edged pipe contraction using the method of Miller [1]. This method uses
a spline fit to a graph with area ratios 0 to 1, and radius ratios (rc/Di2) from 0.1 to 0.
Parameters
Di1 [float] Inside diameter of original pipe, [m]
Di2 [float] Inside diameter of following pipe, [m]
rc [float] Radius of curvature of the contraction, [m]
Returns
K [float] Loss coefficient in terms of the following pipe, [-]

Notes

This method normally gives lower losses than the Rennels formulation.

References

[1]

Examples

>>> contraction_round_Miller(Di1=1, Di2=0.4, rc=0.04)


0.08565953051298639

fluids.fittings.contraction_conical(Di1, Di2, fd=None, l=None, angle=None, Re=None,


roughness=0.0, method=’Rennels’)
Returns the loss coefficient for any conical pipe contraction. This calculation has five methods available. The
‘Idelchik’ [2] and ‘Blevins’ [3] methods use interpolation among tables of values; ‘Miller’ uses a 2d spline
representation of a graph; and the ‘Rennels’ [1], ‘Crane’ [4], and ‘Swamee’ [5] methods use formulas for their
calculations.
The ‘Rennels’ [1] formulas are:

𝐾2 = 𝐾𝑓 𝑟,2 + 𝐾𝑐𝑜𝑛𝑣,2
𝑓𝑑
𝐾𝑓 𝑟,2 = 8 sin(𝜃/2)
1 − 𝛽4
𝐾𝑐𝑜𝑛𝑣,2 = 0.0696[1 + 𝐶𝐵 (sin(𝛼/2) − 1)](1 − 𝛽 5 )𝜆2 + (𝜆 − 1)2
𝜆 = 1 + 0.622(𝛼/180)0.8 (1 − 0.215𝛽 2 − 0.785𝛽 5 )
𝛽 = 𝑑2 /𝑑1
The ‘Swamee’ [5] formula is:

𝐾 = 0.315𝜃1/3

2.7. Fittings pressure drop (fluids.fittings) 131


Fluids Documentation, Release 0.1

Parameters
Di1 [float] Inside pipe diameter of the larger, upstream, pipe, [m]
Di2 [float] Inside pipe diameter of the smaller, downstream, pipe, [m]
fd [float, optional] Darcy friction factor; used only in the Rennels method and will be calculated
if not given, [-]
l [float, optional] Length of the contraction, optional [m]
angle [float, optional] Angle of contraction (180 = sharp, 0 = infinitely long contraction), op-
tional [degrees]
Re [float, optional] Reynolds number of the pipe (used in Rennels method only if no friction
factor given), [m]
roughness [float, optional] Roughness of bend wall (used in Rennel method if no friction factor
given), [m]
method [str, optional] The method to use for the calculation; one of ‘Rennels’, ‘Idelchik’,
‘Crane’, ‘Swamee’ or ‘Blevins’, [-]
Returns
K [float] Loss coefficient in terms of the following pipe [-]

Notes

Cheap and has substantial impact on pressure drop.


The ‘Idelchik’ method includes two tabular interpolations; its friction term is limited to angles between 2 and
20 degrees and area ratios 0.05 to 0.6, while its main term is limited to length over diameter ratios 0.025 to 0.6.
This seems to give it high results for angles < 25 degrees.
The ‘Blevins’ method is based on Idelchik data; it should not be used, because its data jumps around and its data
is limited to area ratios .1 to 0.83, and length over diameter ratios 0 to 0.6. The ‘Miller’ method jumps around
as well. Unlike most of Miller’s method, there is no correction for Reynolds number.
There is quite a bit of variance in the predictions of the methods, as demonstrated by the following figure.

References

[1], [2], [3], [4], [5], [6]

132 Chapter 2. API Reference


Fluids Documentation, Release 0.1

Comparison of available methods for conical pipe contractions


2 Angle
Area ratio (x) vs. Loss8 Angle
4 Angle
coefficient (y)
10 Angle
0.5
0.5
0.2 0.2
Rennels
0.0 0.0 0.0 0.0 Idelchik
0 15 Angle 1 0 20 Angle 1 0 25 Angle 1 0 30 Angle 1 Crane
Swamee
0.2 0.2 0.2 0.2 Blevins
Miller
0.0 0.0 0.0 0.0
0 45 Angle 1 0 60 Angle 1 0 90 Angle 1 0 120 Angle 1

0.2 0.2 0.25 0.25

0.0 0.0 0.00 0.00


0 135 Angle 1 0 150 Angle 1 0 165 Angle 1 0 180 Angle 1
0.5 0.5 0.5 0.5

0.0 0.0 0.0 0.0


0 1 0 1 0 1 0 1

2.7. Fittings pressure drop (fluids.fittings) 133


Fluids Documentation, Release 0.1

Examples

>>> contraction_conical(Di1=0.1, Di2=0.04, l=0.04, Re=1E6)


0.15639885880609544

fluids.fittings.contraction_conical_Crane(Di1, Di2, l=None, angle=None)


Returns loss coefficient for a conical pipe contraction as shown in Crane TP 410M [1] between 0 and 180
degrees.
If 𝜃 < 45∘ :
𝜃
𝐾2 = 0.8 sin (1 − 𝛽 2 )
2
otherwise:
√︂
𝜃
𝐾2 = 0.5 sin (1 − 𝛽 2 )
2

𝛽 = 𝑑2 /𝑑1
Parameters
Di1 [float] Inside pipe diameter of the larger, upstream, pipe, [m]
Di2 [float] Inside pipe diameter of the smaller, downstream, pipe, [m]
l [float] Length of the contraction, optional [m]
angle [float] Angle of contraction, optional [degrees]
Returns
K [float] Loss coefficient in terms of the following (smaller) pipe [-]

Notes

Cheap and has substantial impact on pressure drop. Note that the nomenclature in [1] is somewhat different -
the smaller pipe is called 1, and the larger pipe is called 2; and so the beta ratio is reversed, and the fourth power
of beta used in their equation is not necessary.

References

[1]

Examples

>>> contraction_conical_Crane(Di1=0.0779, Di2=0.0525, l=0)


0.2729017979998056

fluids.fittings.contraction_beveled(Di1, Di2, l=None, angle=None)


Returns loss coefficient for any sharp beveled pipe contraction as shown in [1].

𝐾 = 0.0696[1 + 𝐶𝐵 (sin(𝛼/2) − 1)](1 − 𝛽 5 )𝜆2 + (𝜆 − 1)2


[︂ (︂(︁ )︂]︂
𝛼 )︁0.8
𝜆 = 1 + 0.622 1 + 𝐶𝐵 − 1 (1 − 0.215𝛽 2 − 0.785𝛽 5 )
180

134 Chapter 2. API Reference


Fluids Documentation, Release 0.1

𝑙 2𝛽 tan(𝛼/2)
𝐶𝐵 =
𝑑2 1−𝛽
𝛽 = 𝑑2 /𝑑1

Parameters
Di1 [float] Inside diameter of original pipe, [m]
Di2 [float] Inside diameter of following pipe, [m]
l [float] Length of the bevel along the pipe axis ,[m]
angle [float] Angle of bevel, [degrees]
Returns
K [float] Loss coefficient in terms of the following pipe [-]

References

[1]

Examples

>>> contraction_beveled(Di1=0.5, Di2=0.1, l=.7*.1, angle=120)


0.40946469413070485

fluids.fittings.diffuser_sharp(Di1, Di2)
Returns loss coefficient for any sudden pipe diameter expansion as shown in [1] and in other sources.

𝐾1 = (1 − 𝛽 2 )2

Parameters
Di1 [float] Inside diameter of original pipe (smaller), [m]
Di2 [float] Inside diameter of following pipe (larger), [m]
Returns
K [float] Loss coefficient [-]

Notes

Highly accurate.

2.7. Fittings pressure drop (fluids.fittings) 135


Fluids Documentation, Release 0.1

References

[1]

Examples

>>> diffuser_sharp(Di1=.5, Di2=1)


0.5625

fluids.fittings.diffuser_conical(Di1, Di2, l=None, angle=None, fd=None, Re=None, rough-


ness=0.0, method=’Rennels’)
Returns the loss coefficient for any conical pipe diffuser. This calculation has four methods available.
The ‘Rennels’ [1] formulas are as follows (three different formulas are used, depending on the angle and the
ratio of diameters):
For 0 to 20 degrees, all aspect ratios:

𝑓 (1 − 𝛽 4 )
𝐾1 = 8.30[tan(𝛼/2)]1.75 (1 − 𝛽 2 )2 +
8 sin(𝛼/2)
For 20 to 60 degrees, beta < 0.5:
{︃ ]︂0.5 √︂ }︃
2𝜋(𝛼 − 15∘ ) 𝛼 − 20∘ 𝑓 (1 − 𝛽 4 )
[︂
4
𝐾1 = 1.366 sin − 0.170 − 3.28(0.0625 − 𝛽 ) ∘
(1 − 𝛽 2 )2 +
180 40 8 sin(𝛼/2)

For 20 to 60 degrees, beta >= 0.5:


{︃ ]︂0.5 }︃
2𝜋(𝛼 − 15∘ ) 𝑓 (1 − 𝛽 4 )
[︂
𝐾1 = 1.366 sin − 0.170 (1 − 𝛽 2 )2 +
180 8 sin(𝛼/2)

For 60 to 180 degrees, beta < 0.5:


[︃ √︂ ]︃
4 6 𝛼 − 60∘
𝐾1 = 1.205 − 3.28(0.0625 − 𝛽 ) − 12.8𝛽 (1 − 𝛽 2 )2
120∘

For 60 to 180 degrees, beta >= 0.5:


[︃ √︂ ]︃
𝛼 − 60∘
𝐾1 = 1.205 − 0.20 (1 − 𝛽 2 )2
120∘

The Swamee [5] formula is:


{︃ [︂ (︂ )︂]︂0.533𝑟−2.6 }︃−0.5
0.25 0.6 𝜋 − 𝜃
𝐾= 1 + 1.67
𝜃3 𝑟 𝜃

Parameters
Di1 [float] Inside diameter of original pipe (smaller), [m]
Di2 [float] Inside diameter of following pipe (larger), [m]
l [float, optional] Length of the contraction along the pipe axis, optional, [m]
angle [float, optional] Angle of contraction, [degrees]
fd [float, optional] Darcy friction factor [-]

136 Chapter 2. API Reference


Fluids Documentation, Release 0.1

Re [float, optional] Reynolds number of the pipe (used in Rennels method only if no friction
factor given), [m]
roughness [float, optional] Roughness of bend wall (used in Rennel method if no friction factor
given), [m]
method [str] The method to use for the calculation; one of ‘Rennels’, ‘Crane’, ‘Miller’,
‘Swamee’, or ‘Idelchik’ [-]
Returns
K [float] Loss coefficient with respect to smaller, upstream diameter [-]

Notes

The Miller method changes around quite a bit.


There is quite a bit of variance in the predictions of the methods, as demonstrated by the following figure.

References

[1], [2], [3], [4], [5]

Examples

>>> diffuser_conical(Di1=1/3., Di2=1.0, angle=50.0, Re=1E6)


0.8027721093415322

fluids.fittings.diffuser_conical_staged(Di1, Di2, DEs, ls, fd=None, method=’Rennels’)


Returns loss coefficient for any series of staged conical pipe expansions as shown in [1]. Five different formulas
are used, depending on the angle and the ratio of diameters. This function calls diffuser_conical.
Parameters
Di1 [float] Inside diameter of original pipe (smaller), [m]
Di2 [float] Inside diameter of following pipe (larger), [m]
DEs [array] Diameters of intermediate sections, [m]
ls [array] Lengths of the various sections, [m]
fd [float] Darcy friction factor [-]
method [str] The method to use for the calculation; one of ‘Rennels’, ‘Crane’, ‘Miller’,
‘Swamee’, or ‘Idelchik’ [-]
Returns

2.7. Fittings pressure drop (fluids.fittings) 137


Fluids Documentation, Release 0.1

Comparison of available methods for conical pipe diffusers


2 Angle
Area ratio (x) vs. Loss8 Angle
4 Angle
coefficient (y)
10 Angle
0.2 0.2
0.2 0.2
Rennels
0.0 0.0 0.0 0.0 Crane
0 15 Angle 1 0 20 Angle 1 0 25 Angle 1 0 30 Angle 1 Miller
0.5 Idelchik
0.5
0.2 0.25

0.0 0.00 0.0 0.0


0 45 Angle 1 0 60 Angle 1 0 90 Angle 1 0 120 Angle 1
1 1 1
1

0 0 0 0
0 135 Angle 1 0 150 Angle 1 0 165 Angle 1 0 180 Angle 1
1 1 1 1

0 0 0 0
0 1 0 1 0 1 0 1

138 Chapter 2. API Reference


Fluids Documentation, Release 0.1

K [float] Loss coefficient [-]

Notes

Only lengths of sections currently allowed. This could be changed to understand angles also.
Formula doesn’t make much sense, as observed by the example comparing a series of conical sections. Use only
for small numbers of segments of highly differing angles.

References

[1]

Examples

>>> diffuser_conical(Di1=1., Di2=10.,l=9, fd=0.01)


0.973137914861591

fluids.fittings.diffuser_curved(Di1, Di2, l)
Returns loss coefficient for any curved wall pipe expansion as shown in [1].

𝐾1 = 𝜑(1.43 − 1.3𝛽 2 )(1 − 𝛽 2 )2


(︂ )︂2 (︂ )︂3 (︂ )︂4
𝑙 𝑙 𝑙 𝑙
𝜑 = 1.01 − 0.624 + 0.30 − 0.074 + 0.0070
𝑑1 𝑑1 𝑑1 𝑑1

Parameters
Di1 [float] Inside diameter of original pipe (smaller), [m]
Di2 [float] Inside diameter of following pipe (larger), [m]
l [float] Length of the curve along the pipe axis, [m]
Returns
K [float] Loss coefficient [-]

Notes

Beta^2 should be between 0.1 and 0.9. A small mismatch between tabulated values of this function in table 11.3
is observed with the equation presented.

2.7. Fittings pressure drop (fluids.fittings) 139


Fluids Documentation, Release 0.1

References

[1]

Examples

>>> diffuser_curved(Di1=.25**0.5, Di2=1., l=2.)


0.2299781250000002

fluids.fittings.diffuser_pipe_reducer(Di1, Di2, l, fd1, fd2=None)


Returns loss coefficient for any pipe reducer pipe expansion as shown in [1]. This is an approximate formula.

0.20𝑙 𝑓1 (1 − 𝛽) 0.20𝑙 4
𝐾𝑓 = 𝑓1 + + 𝑓2 𝛽
𝑑1 8 sin(𝛼/2) 𝑑2
(︂ )︂
𝑑1 − 𝑑2
𝛼 = 2 tan−1
1.20𝑙
Parameters
Di1 [float] Inside diameter of original pipe (smaller), [m]
Di2 [float] Inside diameter of following pipe (larger), [m]
l [float] Length of the pipe reducer along the pipe axis, [m]
fd1 [float] Darcy friction factor at inlet diameter [-]
fd2 [float] Darcy friction factor at outlet diameter, optional [-]
Returns
K [float] Loss coefficient [-]

Notes

Industry lack of standardization prevents better formulas from being developed. Add 15% if the reducer is
eccentric. Friction factor at outlet will be assumed the same as at inlet if not specified.
Doubt about the validity of this equation is raised.

References

[1]

Examples

>>> diffuser_pipe_reducer(Di1=.5, Di2=.75, l=1.5, fd1=0.07)


0.06873244301714816

fluids.fittings.entrance_sharp(method=’Rennels’)
Returns loss coefficient for a sharp entrance to a pipe. Six sources are available; four of them recommending
K = 0.5, the most recent ‘Rennels’, method recommending K = 0.57, and the ‘Miller’ method recommending
~0.51 as read from a graph.

Parameters

140 Chapter 2. API Reference


Fluids Documentation, Release 0.1

method [str, optional] The method to use; one of ‘Rennels’, ‘Swamee’, ‘Blevins’, ‘Idelchik’,
‘Crane’, or ‘Miller, [-]
Returns
K [float] Loss coefficient [-]

Notes

0.5 is the result for ‘Swamee’, ‘Blevins’, ‘Idelchik’, and ‘Crane’; ‘Miller’ returns 0.5093, and ‘Rennels’ returns
0.57.

References

[1], [2], [3], [4], [5], [6]

Examples

>>> entrance_sharp()
0.57

fluids.fittings.entrance_distance(Di, t=None, l=None, method=’Rennels’)


Returns the loss coefficient for a sharp entrance to a pipe at a distance from the wall of a reservoir. This
calculation has five methods available; all but ‘Idelchik’ require the pipe to be at least Di/2 into the reservoir.
The most conservative formulation is that of Rennels; with Miller being almost identical until t/Di reaches
0.05, when it continues settling to K = 0.53 compared to K = 0.57 for ‘Rennels’. ‘Idelchik’ is offset lower by
about 0.03 and settles to 0.50. The ‘Harris’ method is a straight interpolation from experimental results with
smoothing, and it is the lowest at all points. The ‘Crane’ [6] method returns 0.78 for all cases.
The Rennels [1] formula is:
(︂ )︂2 (︂ )︂3
𝑡 𝑡 𝑡
𝐾 = 1.12 − 22 + 216 + 80
𝑑 𝑑 𝑑

2.7. Fittings pressure drop (fluids.fittings) 141


Fluids Documentation, Release 0.1

Parameters
Di [float] Inside diameter of pipe, [m]
t [float, optional] Thickness of pipe wall, used in all but ‘Crane’ method, [m]
l [float, optional] The distance the pipe extends into the reservoir; used only in the ‘Idelchik’
method, defaults to Di, [m]
method [str, optional] One of ‘Rennels’, ‘Miller’, ‘Idelchik’, ‘Harris’, ‘Crane’, [-]
Returns
K [float] Loss coefficient [-]

Notes

This type of inlet is also known as a Borda’s mouthpiece. It is not of practical interest according to [1].
The ‘Idelchik’ [3] data is recommended in [5]; it also provides rounded values for the ‘Harris. method.

Comparison of available methods for re-entrant entrances


Rennels
1.1 Miller
Idelchik
1.0 Harris
Crane
0.9

0.8
K

0.7

0.6

0.5

0.4
0.00 0.05 0.10 0.15 0.20 0.25 0.30
t/Di

References

[1], [2], [3], [4], [5], [6]

142 Chapter 2. API Reference


Fluids Documentation, Release 0.1

Examples

>>> entrance_distance(Di=0.1, t=0.0005)


1.0154100000000001
>>> entrance_distance(Di=0.1, t=0.0005, method='Idelchik')
0.9249999999999999
>>> entrance_distance(Di=0.1, t=0.0005, l=.02, method='Idelchik')
0.8474999999999999

fluids.fittings.entrance_angled(angle, method=’Idelchik’)
Returns loss coefficient for a sharp, angled entrance to a pipe flush with the wall of a reservoir. First published
in [2], it has been recommended in [3] as well as in [1].

𝐾 = 0.57 + 0.30 cos(𝜃) + 0.20 cos(𝜃)2

Parameters
angle [float] Angle of inclination (90° = straight, 0° = parallel to pipe wall), [degrees]
method [str, optional] The method to use; only ‘Idelchik’ is supported
Returns
K [float] Loss coefficient [-]

Notes

Not reliable for angles under 20 degrees. Loss coefficient is the same for an upward or downward angled inlet.

References

[1], [2], [3]

Examples

>>> entrance_angled(30)
0.9798076211353315

fluids.fittings.entrance_rounded(Di, rc, method=’Rennels’)


Returns loss coefficient for a rounded entrance to a pipe flush with the wall of a reservoir. This calculation has
six methods available.

2.7. Fittings pressure drop (fluids.fittings) 143


Fluids Documentation, Release 0.1

The most conservative formulation is that of Rennels; with the Swammee correlation being 0.02-0.07 lower.
They were published in 2012 and 2008 respectively, and for this reason could be regarded as more reliable.
The Idel’chik correlation appears based on the Hamilton data; and the Miller correlation as well, except a little
more conservative. The Crane model trends similarly but only has a few points. The Harris data set is the lowest.
The Rennels [1] formulas are:
(︁ 𝑟 )︁ 2
𝐾 = 0.0696 1 − 0.569 𝜆 + (𝜆 − 1)2
𝑑
(︂ √︂ )︂4
𝑟 𝑟
𝜆 = 1 + 0.622 1 − 0.30 − 0.70
𝑑 𝑑
The Swamee [5] formula is:
[︂ (︁ 𝑟 )︁1.2 ]︂−1
𝐾 = 0.5 1 + 36
𝐷

Parameters
Di [float] Inside diameter of pipe, [m]
rc [float] Radius of curvature of the entrance, [m]
method [str, optional] One of ‘Rennels’, ‘Crane’, ‘Miller’, ‘Idelchik’, ‘Harris’, or ‘Swamee’.
Returns
K [float] Loss coefficient [-]

Notes

For generously rounded entrance (rc/Di >= 1), the loss coefficient converges to 0.03 in the Rennels method.
The Rennels formulation was derived primarily from data and theoretical analysis from different flow scenarios
than a rounded pipe entrance; the only available data in [2] is quite old and [1] casts doubt on it.
The Hamilton data set is available in [1] and [6].

References

[1], [2], [3], [4], [5], [6], [7], [8]

Examples

Point from Diagram 9.2 in [1], which was used to confirm the Rennels model implementation:

144 Chapter 2. API Reference


Fluids Documentation, Release 0.1

Comparison of available methods for rounded flush entrances to pipes


Rennels
Crane
0.5 Miller
Idelchik
Harris
0.4 Swamee

0.3
K

0.2

0.1

0.0
0.00 0.05 0.10 0.15 0.20 0.25 0.30 0.35 0.40
rc/Di

2.7. Fittings pressure drop (fluids.fittings) 145


Fluids Documentation, Release 0.1

>>> entrance_rounded(Di=0.1, rc=0.0235)


0.09839534618360923

fluids.fittings.entrance_beveled(Di, l, angle, method=’Rennels’)


Returns loss coefficient for a beveled or chamfered entrance to a pipe flush with the wall of a reservoir. This
calculation has two methods available.
The ‘Rennels’ and ‘Idelchik’ methods have similar trends, but the ‘Rennels’ formulation is centered around a
straight loss coefficient of 0.57, so it is normally at least 0.07 higher.
The Rennels [1] formulas are:
(︂ )︂
𝑙
𝐾 = 0.0696 1 − 𝐶𝑏 𝜆2 + (𝜆 − 1)2
𝑑
1/4
⎡ ⎤
(︂ )︂ 1−(𝑙/𝑑)
𝑙 2
𝜆 = 1 + 0.622 ⎣1 − 1.5𝐶𝑏 ⎦
𝑑
(︂ )︂ (︂ 1
)︂ 1+𝑙/𝑑
𝜃 𝜃
𝐶𝑏 = 1−
90 90

Parameters
Di [float] Inside diameter of pipe, [m]
l [float] Length of bevel measured parallel to the pipe length, [m]
angle [float] Angle of bevel with respect to the pipe length, [degrees]
method [str, optional] One of ‘Rennels’, or ‘Idelchik’, [-]
Returns
K [float] Loss coefficient [-]

Notes

A cheap way of getting a lower pressure drop. Little credible data is available.
The table of data in [2] uses the angle for both bevels, so it runs from 0 to 180 degrees; this function follows the
convention in [1] which uses only one angle, with the angle varying from 0 to 90 degrees.

References

[1], [2]

146 Chapter 2. API Reference


Fluids Documentation, Release 0.1

Comparison of available methods for beveled entrances


Rennels, l/Di=0.025
Idelchik, l/Di=0.025
0.5 Rennels, l/Di=0.05
Idelchik, l/Di=0.05
Rennels, l/Di=0.1
Idelchik, l/Di=0.1
0.4 Rennels, l/Di=0.25
Idelchik, l/Di=0.25
Rennels, l/Di=0.5
K

Idelchik, l/Di=0.5
0.3 Rennels, l/Di=0.75
Idelchik, l/Di=0.75
Rennels, l/Di=1
0.2 Idelchik, l/Di=1

0.1
0 20 40 60 80
angle

2.7. Fittings pressure drop (fluids.fittings) 147


Fluids Documentation, Release 0.1

Examples

>>> entrance_beveled(Di=0.1, l=0.003, angle=45)


0.45086864221916984
>>> entrance_beveled(Di=0.1, l=0.003, angle=45, method='Idelchik')
0.3995000000000001

fluids.fittings.entrance_beveled_orifice(Di, do, l, angle)


Returns loss coefficient for a beveled or chamfered orifice entrance to a pipe flush with the wall of a reservoir,
as shown in [1].
(︂ )︂ (︃ (︂ )︂2 )︃2
𝑙 2 𝑑𝑜
𝐾 = 0.0696 1 − 𝐶𝑏 𝜆 + 𝜆−
𝑑𝑜 𝐷𝑖

)︂ 1−(𝑙/𝑑2𝑜 )0.25
⎡ ⎤
(︂
𝑙
𝜆 = 1 + 0.622 ⎣1 − 𝐶𝑏 ⎦
𝑑𝑜
(︂ )︂ (︂ 1
)︂ 1+𝑙/𝑑
Ψ Ψ 𝑜
𝐶𝑏 = 1−
90 90

Parameters
Di [float] Inside diameter of pipe, [m]
do [float] Inside diameter of orifice, [m]
l [float] Length of bevel measured parallel to the pipe length, [m]
angle [float] Angle of bevel with respect to the pipe length, [degrees]
Returns
K [float] Loss coefficient [-]

References

[1]

Examples

>>> entrance_beveled_orifice(Di=0.1, do=.07, l=0.003, angle=45)


1.2987552913818574

148 Chapter 2. API Reference


Fluids Documentation, Release 0.1

fluids.fittings.entrance_distance_45_Miller(Di, Di0)
Returns loss coefficient for a sharp entrance to a pipe at a distance from the wall of a reservoir with an initial 45
degree slope conical section of diameter Di0 added to reduce the overall loss coefficient.
This method is as shown in Miller’s Internal Flow Systems [1]. This method is a curve fit to a graph in [1] which
was digitized.
Parameters
Di [float] Inside diameter of pipe, [m]
Di0 [float] Initial inner diameter of the welded conical section of the entrance of the distant
(re-entrant) pipe, [m]
Returns
K [float] Loss coefficient with respect to the main pipe diameter Di, [-]

Notes

The graph predicts an almost constant loss coefficient once the thickness of pipe wall to pipe diameter ratio
becomes ~0.02.

References

[1]

Examples

>>> entrance_distance_45_Miller(Di=0.1, Di0=0.14)


0.24407641818143339

fluids.fittings.exit_normal()
Returns loss coefficient for any exit to a pipe as shown in [1] and in other sources.

𝐾=1

Returns
K [float] Loss coefficient [-]

2.7. Fittings pressure drop (fluids.fittings) 149


Fluids Documentation, Release 0.1

Notes

It has been found on occasion that K = 2.0 for laminar flow, and ranges from about 1.04 to 1.10 for turbulent
flow.

References

[1]

Examples

>>> exit_normal()
1.0

fluids.fittings.bend_rounded(Di, angle, fd=None, rc=None, bend_diameters=5.0, Re=None,


roughness=0.0, L_unimpeded=None, method=’Rennels’)
Returns loss coefficient for rounded bend in a pipe of diameter Di, angle, with a specified either radius of curva-
ture rc or curvature defined by bend_diameters, Reynolds number Re and optionally pipe roughness, unimpeded
length downstrean, and with the specified method. This calculation has five methods available.
It is hard to describe one method as more conservative than another as depending on the conditions, the relative
results change significantly.
The ‘Miller’ method is the most complicated and slowest method; the ‘Ito’ method comprehensive as well and
a source of original data, and the primary basis for the ‘Rennels’ method. The ‘Swamee’ method is very simple
and generally does not match the other methods. The ‘Crane’ method may match or not match other methods
depending on the inputs.
The Rennels [1] formula is:
√︀
𝑟 6.6𝑓 ( sin(𝛼/2) + sin(𝛼/2))
𝐾 = 𝑓 𝛼 + (0.10 + 2.4𝑓 ) sin(𝛼/2) + 4𝛼
𝑑 (𝑟/𝑑) 𝜋

The Swamee [5] formula is:


[︃ (︂ )︂3.5 ]︃
𝑑
𝐾 = 0.0733 + 0.923 𝜃0.5
𝑟𝑐

Parameters
Di [float] Inside diameter of pipe, [m]
angle [float] Angle of bend, [degrees]

150 Chapter 2. API Reference


Fluids Documentation, Release 0.1

fd [float, optional] Darcy friction factor; used only in Rennels method; calculated if not pro-
vided from Reynolds number, diameter, and roughness [-]
rc [float, optional] Radius of curvature of the entrance, optional [m]
bend_diameters [float, optional (used if rc not provided)] Number of diameters of pipe making
up the bend radius [-]
Re [float, optional] Reynolds number of the pipe (used in Miller, Ito methods primarily, and
Rennels method if no friction factor given), [m]
roughness [float, optional] Roughness of bend wall (used in Miller, Ito methods primarily, and
Rennels method if no friction factor given), [m]
L_unimpeded [float, optional] The length of unimpeded pipe without any fittings, instrumen-
tation, or flow disturbances downstream (assumed 20 diameters if not specified); used only
in Miller method, [m]
method [str, optional] One of ‘Rennels’, ‘Miller’, ‘Crane’, ‘Ito’, or ‘Swamee’, [-]
Returns
K [float] Loss coefficient [-]

Notes

When inputting bend diameters, note that manufacturers often specify this as a multiplier of nominal diameter,
which is different than actual diameter. Those require that rc be specified.
In the ‘Rennels’ method, rc is limited to 0.5 or above; which represents a sharp, square, inner edge - and an outer
bend radius of 1.0. Losses are at a minimum when this value is large. Its first term represents surface friction
loss; the second, secondary flows; and the third, flow separation. It encompasses the entire range of elbow and
pipe bend configurations. It was developed for bend angles between 0 and 180 degrees; and r/D ratios above
0.5. Only smooth pipe data was used in its development. Note the loss coefficient includes the surface friction
of the pipe as if it was straight.

References

[1], [2], [3], [4], [5], [6]

Examples

>>> bend_rounded(Di=4.020, rc=4.0*5, angle=30, Re=1E5)


0.11519070808085191

fluids.fittings.bend_rounded_Miller(Di, angle, Re, rc=None, bend_diameters=None, rough-


ness=0.0, L_unimpeded=None)
Calculates the loss coefficient for a rounded pipe bend according to Miller [1]. This is a sophisticated model
which uses corrections for pipe roughness, the length of the pipe downstream before another interruption, and a
correction for Reynolds number. It interpolates several times using several corrections graphs in [1].
Parameters
Di [float] Inside diameter of pipe, [m]
angle [float] Angle of bend, [degrees]

2.7. Fittings pressure drop (fluids.fittings) 151


Fluids Documentation, Release 0.1

Re [float] Reynolds number of the pipe (no specification if inlet or outlet properties should be
used), [m]
rc [float, optional] Radius of curvature of the entrance, [m]
bend_diameters [float, optional] Number of diameters of pipe making up the bend radius (used
if rc not provided; defaults to 5), [-]
roughness [float, optional] Roughness of bend wall, [m]
L_unimpeded [float, optional] The length of unimpeded pipe without any fittings, instrumen-
tation, or flow disturbances downstream (assumed 20 diameters if not specified), [m]
Returns
K [float] Loss coefficient [-]

Notes

When inputting bend diameters, note that manufacturers often specify this as a multiplier of nominal diameter,
which is different than actual diameter. Those require that rc be specified.
rc is limited to 0.5 or above; which represents a sharp, square, inner edge - and an outer bend radius of 1.0.
Losses are at a minimum when this value is large.
This was developed for bend angles between 10 and 180 degrees; and r/D ratios between 0.5 and 10. Both
smooth and rough data was used in its development from several sources.
Note the loss coefficient includes the surface friction of the pipe as if it was straight.

References

[1]

Examples

>>> bend_rounded_Miller(Di=.6, bend_diameters=2, angle=90, Re=2e6,


... roughness=2E-5, L_unimpeded=30*.6)
0.152618207051459

fluids.fittings.bend_rounded_Crane(Di, angle, rc=None, bend_diameters=None)


Calculates the loss coefficient for any rounded bend in a pipe according to the Crane TP 410M [1] method. This
method effectively uses an interpolation from tabulated values in [1] for friction factor multipliers vs. curvature
radius.

Parameters

152 Chapter 2. API Reference


Fluids Documentation, Release 0.1

Di [float] Inside diameter of pipe, [m]


angle [float] Angle of bend, [degrees]
rc [float, optional] Radius of curvature of the entrance, optional [m]
bend_diameters [float, optional (used if rc not provided)] Number of diameters of pipe making
up the bend radius [-]
Returns
K [float] Loss coefficient [-]

Notes

The Crane method does match the trend of increased pressure drop as roughness increases.
The points in [1] are extrapolated to other angles via a well-fitting Chebyshev approximation, whose accuracy
can be seen in the below plot.

Interpolation of Crane ft multipliers for pipe bend losses


50 Crane data
Cubic spline
45 Chebyshev approximation

40
Friction factor multiplier

35
30
25
20
15
10
2.5 5.0 7.5 10.0 12.5 15.0 17.5 20.0
Bend radius/pipe diameter ratio

References

[1]

2.7. Fittings pressure drop (fluids.fittings) 153


Fluids Documentation, Release 0.1

Examples

>>> bend_rounded_Crane(Di=.4020, rc=.4*5, angle=30)


0.09321910015613409

fluids.fittings.bend_miter(angle, Di=None, Re=None, roughness=0.0, L_unimpeded=None,


method=’Rennels’)
Returns loss coefficient for any single-joint miter bend in a pipe of angle angle, diameter Di, Reynolds number
Re, roughness roughness unimpeded downstream length L_unimpeded, and using the specified method. This
calculation has four methods available. The ‘Rennels’ method is based on a formula and extends to angles up to
150 degrees. The ‘Crane’ method extends only to 90 degrees; the ‘Miller’ and ‘Blevins’ methods extend to 120
degrees.
The Rennels [1] formula is:

𝐾 = 0.42 sin(𝛼/2) + 2.56 sin3 (𝛼/2)

The ‘Crane’, ‘Miller’, and ‘Blevins’ methods are all in part graph or tabular based and do not have straightfor-
ward formulas.

Parameters
angle [float] Angle of bend, [degrees]
Di [float, optional] Inside diameter of pipe, [m]
Re [float, optional] Reynolds number of the pipe (no specification if inlet or outlet properties
should be used), [m]
roughness [float, optional] Roughness of bend wall, [m]
L_unimpeded [float, optional] The length of unimpeded pipe without any fittings, instrumen-
tation, or flow disturbances downstream (assumed 20 diameters if not specified), [m]
method [str, optional] The specified method to use; one of ‘Rennels’, ‘Miller’, ‘Crane’, or
‘Blevins’, [-]
Returns
K [float] Loss coefficient with respect to either upstream or downstream diameter, [-]

Notes

This method is designed only for single-jointed miter bends. It is common for miter bends to have two or three
sections, to further reduce the loss coefficient. Some methods exist in [2] for taking this into account. Because
the additional configurations reduce the pressure loss, it is “common practice” to simply ignore their effect and
accept the slight overdesign.
The following figure illustrates the different methods.

154 Chapter 2. API Reference


Fluids Documentation, Release 0.1

Comparison of available methods for mitre bend losses


Angle (x) vs. Loss coefficient (y)
Re = 10000 Re = 40000 Re = 80000
2 2
2
1 1

0 0 0
0 100 0 100 0 100
Re = 200000 Re = 500000 Re = 1e+06
2
2 Rennels
2
Miller
1 1 1
Crane
Blevins
0 0 0
0 100 0 100 0 100
Re = 5e+06 Re = 1e+07 Re = 1e+08

2 2 2

1 1 1

0 0 0
0 100 0 100 0 100

2.7. Fittings pressure drop (fluids.fittings) 155


Fluids Documentation, Release 0.1

References

[1], [2], [3], [4]

Examples

>>> bend_miter(150)
2.7128147734758103
>>> bend_miter(Di=.6, angle=45, Re=1e6, roughness=1e-5, L_unimpeded=20,
... method='Miller')
0.2944060416245167

fluids.fittings.bend_miter_Miller(Di, angle, Re, roughness=0.0, L_unimpeded=None)


Calculates the loss coefficient for a single miter bend according to Miller [1]. This is a sophisticated model
which uses corrections for pipe roughness, the length of the pipe downstream before another interruption, and a
correction for Reynolds number. It interpolates several times using several corrections graphs in [1].
Parameters
Di [float] Inside diameter of pipe, [m]
angle [float] Angle of miter bend, [degrees]
Re [float] Reynolds number of the pipe (no specification if inlet or outlet properties should be
used), [m]
roughness [float, optional] Roughness of bend wall, [m]
L_unimpeded [float, optional] The length of unimpeded pipe without any fittings, instrumen-
tation, or flow disturbances downstream (assumed 20 diameters if not specified), [m]
Returns
K [float] Loss coefficient [-]

Notes

Note the loss coefficient includes the surface friction of the pipe as if it was straight.

References

[1]

Examples

>>> bend_miter_Miller(Di=.6, angle=90, Re=2e6, roughness=2e-5,


... L_unimpeded=30*.6)
1.1921574594947668

fluids.fittings.helix(Di, rs, pitch, N, fd)


Returns loss coefficient for any size constant-pitch helix as shown in [1]. Has applications in immersed coils in
tanks.
[︃ √︀ ]︃
(2𝜋𝑟)2 + 𝑝2
𝐾=𝑁 𝑓 + 0.20 + 4.8𝑓
𝑑

156 Chapter 2. API Reference


Fluids Documentation, Release 0.1

Parameters
Di [float] Inside diameter of pipe, [m]
rs [float] Radius of spiral, [m]
pitch [float] Distance between two subsequent coil centers, [m]
N [float] Number of coils in the helix [-]
fd [float] Darcy friction factor [-]
Returns
K [float] Loss coefficient [-]

Notes

Formulation based on peak secondary flow as in two 180 degree bends per coil. Flow separation ignored. No f,
Re, geometry limitations. Source not compared against others.

References

[1]

Examples

>>> helix(Di=0.01, rs=0.1, pitch=.03, N=10, fd=.0185)


14.525134924495514

fluids.fittings.spiral(Di, rmax, rmin, pitch, fd)


Returns loss coefficient for any size constant-pitch spiral as shown in [1]. Has applications in immersed coils in
tanks.
[︂ (︂ )︂ ]︂
𝑟𝑚𝑎𝑥 − 𝑟𝑚𝑖𝑛 𝑟𝑚𝑎𝑥 + 𝑟𝑚𝑖𝑛 13.2𝑓
𝐾= 𝑓𝜋 + 0.20 + 4.8𝑓 +
𝑝 𝑑 (𝑟𝑚𝑖𝑛 /𝑑)2

Parameters
Di [float] Inside diameter of pipe, [m]
rmax [float] Radius of spiral at extremity, [m]
rmin [float] Radius of spiral at end near center, [m]
pitch [float] Distance between two subsequent coil centers, [m]
fd [float] Darcy friction factor [-]
Returns
K [float] Loss coefficient [-]

Notes

Source not compared against others.

2.7. Fittings pressure drop (fluids.fittings) 157


Fluids Documentation, Release 0.1

References

[1]

Examples

>>> spiral(Di=0.01, rmax=.1, rmin=.02, pitch=.01, fd=0.0185)


7.950918552775473

fluids.fittings.Darby3K(NPS=None, Re=None, name=None, K1=None, Ki=None, Kd=None)


Returns loss coefficient for any various fittings, depending on the name input. Alternatively, the Darby constants
K1, Ki and Kd may be provided and used instead. Source of data is [1]. Reviews of this model are favorable.
(︂ )︂
𝐾1 𝐾𝑑
𝐾𝑓 = + 𝐾𝑖 1 + 0.3
𝑅𝑒 𝐷NPS

Note this model uses nominal pipe diameter in inches.


Parameters
NPS [float] Nominal diameter of the pipe, [in]
Re [float] Reynolds number, [-]
name [str] String from Darby dict representing a fitting
K1 [float] K1 parameter of Darby model, optional [-]
Ki [float] Ki parameter of Darby model, optional [-]
Kd [float] Kd parameter of Darby model, optional [in]
Returns
K [float] Loss coefficient [-]

Notes

Also described in Albright’s Handbook and Ludwig’s Applied Process Design. Relatively uncommon to see it
used.
The possibility of combining these methods with those above are attractive.

References

[1], [2]

Examples

>>> Darby3K(NPS=2., Re=10000., name='Valve, Angle valve, 45°, full line size, 𝛽 =
˓→1')

1.1572523963562353
>>> Darby3K(NPS=12., Re=10000., K1=950, Ki=0.25, Kd=4)
0.819510280626355

158 Chapter 2. API Reference


Fluids Documentation, Release 0.1

fluids.fittings.Hooper2K(Di, Re, name=None, K1=None, Kinfty=None)


Returns loss coefficient for any various fittings, depending on the name input. Alternatively, the Hooper con-
stants K1, Kinfty may be provided and used instead. Source of data is [1]. Reviews of this model are favorable
less favorable than the Darby method but superior to the constant-K method.
(︂ )︂
𝐾1 1 inch
𝐾= + 𝐾∞ 1 +
𝑅𝑒 𝐷𝑖𝑛

Note this model uses actual inside pipe diameter in inches.


Parameters
Di [float] Actual inside diameter of the pipe, [in]
Re [float] Reynolds number, [-]
name [str, optional] String from Hooper dict representing a fitting
K1 [float, optional] K1 parameter of Hooper model, optional [-]
Kinfty [float, optional] Kinfty parameter of Hooper model, optional [-]
Returns
K [float] Loss coefficient [-]

Notes

Also described in Ludwig’s Applied Process Design. Relatively uncommon to see it used. No actual example
found.

References

[1], [2], [3]

Examples

>>> Hooper2K(Di=2., Re=10000., name='Valve, Globe, Standard')


6.15
>>> Hooper2K(Di=2., Re=10000., K1=900, Kinfty=4)
6.09

fluids.fittings.Kv_to_Cv(Kv)
Convert valve flow coefficient from imperial to common metric units.

𝐶𝑣 = 1.156𝐾𝑣

Parameters
Kv [float] Metric Kv valve flow coefficient (flow rate of water at a pressure drop of 1 bar)
[m^3/hr]
Returns
Cv [float] Imperial Cv valve flow coefficient (flow rate of water at a pressure drop of 1 psi)
[gallons/minute]

2.7. Fittings pressure drop (fluids.fittings) 159


Fluids Documentation, Release 0.1

Notes

Kv = 0.865 Cv is in the IEC standard 60534-2-1. It has also been said that Cv = 1.17Kv; this is wrong by current
standards.
The conversion factor does not depend on the density of the fluid or the diameter of the valve. It is calculated
with the definition of a US gallon as 231 cubic inches, and a psi as a pound-force per square inch.
The exact conversion coefficient between Kv to Cv is 1.1560992283536566; it is rounded in the formula above.

References

[1]

Examples

>>> Kv_to_Cv(2)
2.3121984567073133

fluids.fittings.Cv_to_Kv(Cv)
Convert valve flow coefficient from imperial to common metric units.

𝐾𝑣 = 𝐶𝑣 /1.156

Parameters
Cv [float] Imperial Cv valve flow coefficient (flow rate of water at a pressure drop of 1 psi)
[gallons/minute]
Returns
Kv [float] Metric Kv valve flow coefficient (flow rate of water at a pressure drop of 1 bar)
[m^3/hr]

Notes

Kv = 0.865 Cv is in the IEC standard 60534-2-1. It has also been said that Cv = 1.17Kv; this is wrong by current
standards.
The conversion factor does not depend on the density of the fluid or the diameter of the valve. It is calculated
with the definition of a US gallon as 231 cubic inches, and a psi as a pound-force per square inch.
The exact conversion coefficient between Kv to Cv is 1.1560992283536566; it is rounded in the formula above.

References

[1]

Examples

>>> Cv_to_Kv(2.312)
1.9998283393826013

160 Chapter 2. API Reference


Fluids Documentation, Release 0.1

fluids.fittings.Kv_to_K(Kv, D)
Convert valve flow coefficient from common metric units to regular loss coefficients.
𝐷4
𝐾 = 1.6 × 109
𝐾𝑣2
Parameters
Kv [float] Metric Kv valve flow coefficient (flow rate of water at a pressure drop of 1 bar)
[m^3/hr]
D [float] Inside diameter of the valve [m]
Returns
K [float] Loss coefficient, [-]

Notes

Crane TP 410 M (2009) gives the coefficient of 0.04 (with diameter in mm).
It also suggests the density of water should be found between 5-40°C. Older versions specify the density should
be found at 60 °F, which is used here, and the pessure for the appropriate density is back calculated.
1 2
∆𝑃 = 1 bar = 𝜌𝑉 · 𝐾
2
𝐾𝑣 · hour
3600 second
𝑉 = 𝜋 2
4𝐷
𝜌 = 999.29744568 𝑘𝑔/𝑚3 at 𝑇 = 60𝐹, 𝑃 = 703572𝑃 𝑎
The value of density is calculated with IAPWS-95; it is chosen as it makes the coefficient a very convenient
round number. Others constants that have been used are 1.604E9, and 1.60045E9.

References

[1]

Examples

>>> Kv_to_K(2.312, .015)


15.153374600399898

fluids.fittings.K_to_Kv(K, D)
Convert regular loss coefficient to valve flow coefficient.
√︂
4 𝐷4
𝐾𝑣 = 4 × 10
𝐾
Parameters
K [float] Loss coefficient, [-]
D [float] Inside diameter of the valve [m]
Returns
Kv [float] Metric Kv valve flow coefficient (flow rate of water at a pressure drop of 1 bar)
[m^3/hr]

2.7. Fittings pressure drop (fluids.fittings) 161


Fluids Documentation, Release 0.1

Notes

Crane TP 410 M (2009) gives the coefficient of 0.04 (with diameter in mm).
It also suggests the density of water should be found between 5-40°C. Older versions specify the density should
be found at 60 °F, which is used here, and the pessure for the appropriate density is back calculated.
1 2
∆𝑃 = 1 bar = 𝜌𝑉 · 𝐾
2
𝐾𝑣 · hour
3600 second
𝑉 = 𝜋 2
4𝐷
𝜌 = 999.29744568 𝑘𝑔/𝑚3 at 𝑇 = 60𝐹, 𝑃 = 703572𝑃 𝑎

The value of density is calculated with IAPWS-95; it is chosen as it makes the coefficient a very convenient
round number. Others constants that have been used are 1.604E9, and 1.60045E9.

References

[1]

Examples

>>> K_to_Kv(15.15337460039990, .015)


2.312

fluids.fittings.Cv_to_K(Cv, D)
Convert imperial valve flow coefficient from imperial units to regular loss coefficients.

𝐷4
𝐾 = 1.6 × 109 (︀
𝐶𝑣 2
)︀
1.56

Parameters
Cv [float] Imperial Cv valve flow coefficient (flow rate of water at a pressure drop of 1 psi)
[gallons/minute]
D [float] Inside diameter of the valve [m]
Returns
K [float] Loss coefficient, [-]

Notes

The exact conversion coefficient between Kv to Cv is 1.1560992283536566; it is rounded in the formula above.

References

[1]

Examples

162 Chapter 2. API Reference


Fluids Documentation, Release 0.1

>>> Cv_to_K(2.712, .015)


14.719595348352552

fluids.fittings.K_to_Cv(K, D)
Convert regular loss coefficient to imperial valve flow coefficient.
√︂
𝐷4
𝐾𝑣 = 1.156 · 4 × 104
𝐾
Parameters
K [float] Loss coefficient, [-]
D [float] Inside diameter of the valve [m]
Returns
Cv [float] Imperial Cv valve flow coefficient (flow rate of water at a pressure drop of 1 psi)
[gallons/minute]

Notes

The conversion factor does not depend on the density of the fluid or the diameter of the valve. It is calculated
with the definition of a US gallon as 231 cubic inches, and a psi as a pound-force per square inch.
The exact conversion coefficient between Kv to Cv is 1.1560992283536566; it is rounded in the formula above.

References

[1]

Examples

>>> K_to_Cv(16, .015)


2.601223263795727

fluids.fittings.change_K_basis(K1, D1, D2)


Converts a loss coefficient K1 from the basis of one diameter D1 to another diameter, D2. This is necessary
when dealing with pipelines of changing diameter.

𝐷24 𝐴22
𝐾2 = 𝐾1 = 𝐾1
𝐷14 𝐴21

Parameters
K1 [float] Loss coefficient with respect to diameter D, [-]
D1 [float] Diameter of pipe for which K1 has been calculated, [m]
D2 [float] Diameter of pipe for which K2 will be calculated, [m]
Returns
K2 [float] Loss coefficient with respect to the second diameter, [-]

2.7. Fittings pressure drop (fluids.fittings) 163


Fluids Documentation, Release 0.1

Notes

This expression is shown in [1] and can easily be derived:

𝜌𝑉12 𝜌𝑉 2
· 𝐾1 = 2 · 𝐾2
2 2
Substitute velocities for flow rate divided by area:

8𝐾1 𝑄2 𝜌 8𝐾2 𝑄2 𝜌
4 =
2
𝜋 𝐷1 𝜋 2 𝐷24

From here, simplification and rearrangement is all that is required.

References

[1]

Examples

>>> change_K_basis(K1=32.68875692997804, D1=.01, D2=.02)


523.0201108796487

fluids.fittings.K_gate_valve_Crane(D1, D2, angle, fd=None)


Returns loss coefficient for a gate valve of types wedge disc, double disc, or plug type, as shown in [1].
If 𝛽 = 1 and 𝜃 = 0:

𝐾 = 𝐾1 = 𝐾2 = 8𝑓𝑑

If 𝛽 < 1 and 𝜃 <= 45°:

𝐾 + sin 𝜃2 0.8(1 − 𝛽 2 ) + 2.6(1 − 𝛽 2 )2


[︀ ]︀
𝐾2 =
𝛽4
If 𝛽 < 1 and 𝜃 > 45°:
√︁
𝐾 + 0.5 sin 𝜃2 (1 − 𝛽 2 ) + (1 − 𝛽 2 )2
𝐾2 =
𝛽4
Parameters
D1 [float] Diameter of the valve seat bore (must be smaller or equal to D2), [m]
D2 [float] Diameter of the pipe attached to the valve, [m]
angle [float] Angle formed by the reducer in the valve, [degrees]
fd [float, optional] Darcy friction factor calculated for the actual pipe flow in clean steel (rough-
ness = 0.0018 inch) in the fully developed turbulent region; do not specify this to use the
original Crane friction factor! [-]
Returns
K [float] Loss coefficient with respect to the pipe inside diameter [-]

164 Chapter 2. API Reference


Fluids Documentation, Release 0.1

Notes

This method is not valid in the laminar regime and the pressure drop will be underestimated in those conditions
[2].

References

[1], [2]

Examples

Example 7-4 in [1]; a 150 by 100 mm class 600 steel gate valve, conically tapered ports, length 550 mm, back
of sear ring ~150 mm. The valve is connected to 146 mm schedule 80 pipe. The angle can be calculated to be
13 degrees. The valve is specified to be operating in turbulent conditions.

>>> K_gate_valve_Crane(D1=.1, D2=.146, angle=13.115)


1.1466029421844073

The calculated result is lower than their value of 1.22; the difference is due to Crane’s generous intermediate
rounding. A later, Imperial edition of Crane rounds differently - and comes up with K=1.06.
fluids.fittings.K_angle_valve_Crane(D1, D2, fd=None, style=0)
Returns the loss coefficient for all types of angle valve, (reduced seat or throttled) as shown in [1].
If 𝛽 = 1:

𝐾 = 𝐾1 = 𝐾2 = 𝑁 · 𝑓𝑑

Otherwise:
[︀ ]︀
𝐾 + 0.5(1 − 𝛽 2 ) + (1 − 𝛽 2 )2
𝐾2 =
𝛽4
For style 0 and 2, N = 55; for style 1, N=150.
Parameters
D1 [float] Diameter of the valve seat bore (must be smaller or equal to D2), [m]
D2 [float] Diameter of the pipe attached to the valve, [m]
fd [float, optional] Darcy friction factor calculated for the actual pipe flow in clean steel (rough-
ness = 0.0018 inch) in the fully developed turbulent region; do not specify this to use the
original Crane friction factor!, [-]
style [int, optional] One of 0, 1, or 2; refers to three different types of angle valves as shown in
[1] [-]
Returns
K [float] Loss coefficient with respect to the pipe inside diameter [-]

Notes

This method is not valid in the laminar regime and the pressure drop will be underestimated in those conditions.

2.7. Fittings pressure drop (fluids.fittings) 165


Fluids Documentation, Release 0.1

References

[1]

Examples

>>> K_angle_valve_Crane(.01, .02)


26.597361811128465

fluids.fittings.K_globe_valve_Crane(D1, D2, fd=None)


Returns the loss coefficient for all types of globe valve, (reduced seat or throttled) as shown in [1].
If 𝛽 = 1:

𝐾 = 𝐾1 = 𝐾2 = 340𝑓𝑑

Otherwise:
[︀ ]︀
𝐾 + 0.5(1 − 𝛽 2 ) + (1 − 𝛽 2 )2
𝐾2 =
𝛽4
Parameters
D1 [float] Diameter of the valve seat bore (must be smaller or equal to D2), [m]
D2 [float] Diameter of the pipe attached to the valve, [m]
fd [float, optional] Darcy friction factor calculated for the actual pipe flow in clean steel (rough-
ness = 0.0018 inch) in the fully developed turbulent region; do not specify this to use the
original Crane friction factor!, [-]
Returns
K [float] Loss coefficient with respect to the pipe inside diameter [-]

Notes

This method is not valid in the laminar regime and the pressure drop will be underestimated in those conditions.

References

[1]

Examples

>>> K_globe_valve_Crane(.01, .02)


135.9200548324305

fluids.fittings.K_swing_check_valve_Crane(D=None, fd=None, angled=True)


Returns the loss coefficient for a swing check valve as shown in [1].

𝐾2 = 𝑁 · 𝑓𝑑

For angled swing check valves N = 100; for straight valves, N = 50.

166 Chapter 2. API Reference


Fluids Documentation, Release 0.1

Parameters
D [float, optional] Diameter of the pipe attached to the valve, [m]
fd [float, optional] Darcy friction factor calculated for the actual pipe flow in clean steel (rough-
ness = 0.0018 inch) in the fully developed turbulent region; do not specify this to use the
original Crane friction factor!, [-]
angled [bool, optional] If True, returns a value 2x the unangled value; the style of the valve [-]
Returns
K [float] Loss coefficient with respect to the pipe inside diameter [-]

Notes

This method is not valid in the laminar regime and the pressure drop will be underestimated in those conditions.

References

[1]

Examples

>>> K_swing_check_valve_Crane(D=.02)
2.3974274785373257

fluids.fittings.K_lift_check_valve_Crane(D1, D2, fd=None, angled=True)


Returns the loss coefficient for a lift check valve as shown in [1].
If 𝛽 = 1:

𝐾 = 𝐾1 = 𝐾2 = 𝑁 · 𝑓𝑑

Otherwise:
[︀ ]︀
𝐾 + 0.5(1 − 𝛽 2 ) + (1 − 𝛽 2 )2
𝐾2 =
𝛽4
For angled lift check valves N = 55; for straight valves, N = 600.
Parameters
D1 [float] Diameter of the valve seat bore (must be smaller or equal to D2), [m]
D2 [float] Diameter of the pipe attached to the valve, [m]
fd [float, optional] Darcy friction factor calculated for the actual pipe flow in clean steel (rough-
ness = 0.0018 inch) in the fully developed turbulent region; do not specify this to use the
original Crane friction factor!, [-]
angled [bool, optional] If True, returns a value 2x the unangled value; the style of the valve [-]
Returns
K [float] Loss coefficient with respect to the pipe inside diameter [-]

2.7. Fittings pressure drop (fluids.fittings) 167


Fluids Documentation, Release 0.1

Notes

This method is not valid in the laminar regime and the pressure drop will be underestimated in those conditions.

References

[1]

Examples

>>> K_lift_check_valve_Crane(.01, .02)


28.597361811128465

fluids.fittings.K_tilting_disk_check_valve_Crane(D, angle, fd=None)


Returns the loss coefficient for a tilting disk check valve as shown in [1]. Results are specified in [1] to be for
the disk’s resting position to be at 5 or 25 degrees to the flow direction. The model is implemented here so as to
switch to the higher loss 15 degree coefficients at 10 degrees, and use the lesser coefficients for any angle under
10 degrees.

𝐾 = 𝑁 · 𝑓𝑑

N is obtained from the following table:

angle = 5 ° angle = 15°


2-8” 40 120
10-14” 30 90
16-48” 20 60

The actual change of coefficients happen at <= 9” and <= 15”.


Parameters
D [float] Diameter of the pipe section the valve in mounted in; the same as the line size [m]
angle [float] Angle of the tilting disk to the flow direction; nominally 5 or 15 degrees [degrees]
fd [float, optional] Darcy friction factor calculated for the actual pipe flow in clean steel (rough-
ness = 0.0018 inch) in the fully developed turbulent region; do not specify this to use the
original Crane friction factor!, [-]
Returns
K [float] Loss coefficient with respect to the pipe inside diameter [-]

Notes

This method is not valid in the laminar regime and the pressure drop will be underestimated in those conditions.

References

[1]

168 Chapter 2. API Reference


Fluids Documentation, Release 0.1

Examples

>>> K_tilting_disk_check_valve_Crane(.01, 5)
1.1626516551826345

fluids.fittings.K_globe_stop_check_valve_Crane(D1, D2, fd=None, style=0)


Returns the loss coefficient for a globe stop check valve as shown in [1].
If 𝛽 = 1:

𝐾 = 𝐾1 = 𝐾2 = 𝑁 · 𝑓𝑑

Otherwise:
[︀ ]︀
𝐾 + 0.5(1 − 𝛽 2 ) + (1 − 𝛽 2 )2
𝐾2 =
𝛽4
Style 0 is the standard form; style 1 is angled, with a restrition to force the flow up through the valve; style 2 is
also angled but with a smaller restriction forcing the flow up. N is 400, 300, and 55 for those cases respectively.
Parameters
D1 [float] Diameter of the valve seat bore (must be smaller or equal to D2), [m]
D2 [float] Diameter of the pipe attached to the valve, [m]
fd [float, optional] Darcy friction factor calculated for the actual pipe flow in clean steel (rough-
ness = 0.0018 inch) in the fully developed turbulent region; do not specify this to use the
original Crane friction factor!, [-]
style [int, optional] One of 0, 1, or 2; refers to three different types of angle valves as shown in
[1] [-]
Returns
K [float] Loss coefficient with respect to the pipe inside diameter [-]

Notes

This method is not valid in the laminar regime and the pressure drop will be underestimated in those conditions.

References

[1]

Examples

>>> K_globe_stop_check_valve_Crane(.1, .02, style=1)


4.5235076518969795

fluids.fittings.K_angle_stop_check_valve_Crane(D1, D2, fd=None, style=0)


Returns the loss coefficient for a angle stop check valve as shown in [1].
If 𝛽 = 1:

𝐾 = 𝐾1 = 𝐾2 = 𝑁 · 𝑓𝑑

2.7. Fittings pressure drop (fluids.fittings) 169


Fluids Documentation, Release 0.1

Otherwise:
[︀ ]︀
𝐾 + 0.5(1 − 𝛽 2 ) + (1 − 𝛽 2 )2
𝐾2 =
𝛽4
Style 0 is the standard form; style 1 has a restrition to force the flow up through the valve; style 2 is has the
clearest flow area with no guides for the angle valve. N is 200, 350, and 55 for those cases respectively.
Parameters
D1 [float] Diameter of the valve seat bore (must be smaller or equal to D2), [m]
D2 [float] Diameter of the pipe attached to the valve, [m]
fd [float, optional] Darcy friction factor calculated for the actual pipe flow in clean steel (rough-
ness = 0.0018 inch) in the fully developed turbulent region; do not specify this to use the
original Crane friction factor!, [-]
style [int, optional] One of 0, 1, or 2; refers to three different types of angle valves as shown in
[1] [-]
Returns
K [float] Loss coefficient with respect to the pipe inside diameter [-]

Notes

This method is not valid in the laminar regime and the pressure drop will be underestimated in those conditions.

References

[1]

Examples

>>> K_angle_stop_check_valve_Crane(.1, .02, style=1)


4.525425593879809

fluids.fittings.K_ball_valve_Crane(D1, D2, angle, fd=None)


Returns the loss coefficient for a ball valve as shown in [1].
If 𝛽 = 1:

𝐾 = 𝐾1 = 𝐾2 = 3𝑓𝑑

If 𝛽 < 1 and 𝜃 <= 45°:

𝐾 + sin 𝜃2 0.8(1 − 𝛽 2 ) + 2.6(1 − 𝛽 2 )2


[︀ ]︀
𝐾2 =
𝛽4
If 𝛽 < 1 and 𝜃 > 45°:
√︁
𝐾 + 0.5 sin 𝜃2 (1 − 𝛽 2 ) + (1 − 𝛽 2 )2
𝐾2 =
𝛽4
Parameters
D1 [float] Diameter of the valve seat bore (must be equal to or smaller than D2), [m]

170 Chapter 2. API Reference


Fluids Documentation, Release 0.1

D2 [float] Diameter of the pipe attached to the valve, [m]


angle [float] Angle formed by the reducer in the valve, [degrees]
fd [float, optional] Darcy friction factor calculated for the actual pipe flow in clean steel (rough-
ness = 0.0018 inch) in the fully developed turbulent region; do not specify this to use the
original Crane friction factor!, [-]
Returns
K [float] Loss coefficient with respect to the pipe inside diameter [-]

Notes

This method is not valid in the laminar regime and the pressure drop will be underestimated in those conditions.

References

[1]

Examples

>>> K_ball_valve_Crane(.01, .02, 50)


14.051310974926592

fluids.fittings.K_diaphragm_valve_Crane(D=None, fd=None, style=0)


Returns the loss coefficient for a diaphragm valve of either weir (style = 0) or straight-through (style = 1) as
shown in [1].

𝐾 = 𝐾1 = 𝐾2 = 𝑁 · 𝑓𝑑

For style 0 (weir), N = 149; for style 1 (straight through), N = 39.


Parameters
D [float, optional] Diameter of the pipe section the valve in mounted in; the same as the line
size [m]
fd [float, optional] Darcy friction factor calculated for the actual pipe flow in clean steel (rough-
ness = 0.0018 inch) in the fully developed turbulent region; do not specify this to use the
original Crane friction factor!, [-]
style [int, optional] Either 0 (weir type valve) or 1 (straight through weir valve) [-]
Returns
K [float] Loss coefficient with respect to the pipe inside diameter [-]

Notes

This method is not valid in the laminar regime and the pressure drop will be underestimated in those conditions.

References

[1]

2.7. Fittings pressure drop (fluids.fittings) 171


Fluids Documentation, Release 0.1

Examples

>>> K_diaphragm_valve_Crane(D=.1, style=0)


2.4269804835982565

fluids.fittings.K_foot_valve_Crane(D=None, fd=None, style=0)


Returns the loss coefficient for a foot valve of either poppet disc (style = 0) or hinged-disk (style = 1) as shown
in [1]. Both valves are specified include the loss of the attached strainer.

𝐾 = 𝐾1 = 𝐾2 = 𝑁 · 𝑓𝑑

For style 0 (poppet disk), N = 420; for style 1 (hinged disk), N = 75.
Parameters
D [float, optional] Diameter of the pipe section the valve in mounted in; the same as the line
size [m]
fd [float, optional] Darcy friction factor calculated for the actual pipe flow in clean steel (rough-
ness = 0.0018 inch) in the fully developed turbulent region; do not specify this to use the
original Crane friction factor!, [-]
style [int, optional] Either 0 (poppet disk foot valve) or 1 (hinged disk foot valve) [-]
Returns
K [float] Loss coefficient with respect to the pipe inside diameter [-]

Notes

This method is not valid in the laminar regime and the pressure drop will be underestimated in those conditions.

References

[1]

Examples

>>> K_foot_valve_Crane(D=0.2, style=0)


5.912221498436275

fluids.fittings.K_butterfly_valve_Crane(D, fd=None, style=0)


Returns the loss coefficient for a butterfly valve as shown in [1]. Three different types are supported; Centric
(style = 0), double offset (style = 1), and triple offset (style = 2).

𝐾 = 𝑁 · 𝑓𝑑

N is obtained from the following table:

Size range Centric Double offset Triple offset


2” - 8” 45 74 218
10” - 14” 35 52 96
16” - 24” 25 43 55

The actual change of coefficients happen at <= 9” and <= 15”.

172 Chapter 2. API Reference


Fluids Documentation, Release 0.1

Parameters
D [float] Diameter of the pipe section the valve in mounted in; the same as the line size [m]
fd [float, optional] Darcy friction factor calculated for the actual pipe flow in clean steel (rough-
ness = 0.0018 inch) in the fully developed turbulent region; do not specify this to use the
original Crane friction factor!, [-]
style [int, optional] Either 0 (centric), 1 (double offset), or 2 (triple offset) [-]
Returns
K [float] Loss coefficient with respect to the pipe inside diameter [-]

Notes

This method is not valid in the laminar regime and the pressure drop will be underestimated in those conditions.

References

[1]

Examples

>>> K_butterfly_valve_Crane(D=.1, style=2)


3.5508841974793284

fluids.fittings.K_plug_valve_Crane(D1, D2, angle, fd=None, style=0)


Returns the loss coefficient for a plug valve or cock valve as shown in [1].
If 𝛽 = 1:

𝐾 = 𝐾1 = 𝐾2 = 𝑁 𝑓𝑑

Otherwise:
√︁
𝐾 + 0.5 sin 𝜃2 (1 − 𝛽 2 ) + (1 − 𝛽 2 )2
𝐾2 =
𝛽4
Three types of plug valves are supported. For straight-through plug valves (style = 0), N = 18. For 3-way, flow
straight through (style = 1) plug valves, N = 30. For 3-way, flow 90° valves (style = 2) N = 90.
Parameters
D1 [float] Diameter of the valve plug bore (must be equal to or smaller than D2), [m]
D2 [float] Diameter of the pipe attached to the valve, [m]
angle [float] Angle formed by the reducer in the valve, [degrees]
fd [float, optional] Darcy friction factor calculated for the actual pipe flow in clean steel (rough-
ness = 0.0018 inch) in the fully developed turbulent region; do not specify this to use the
original Crane friction factor!, [-]
style [int, optional] Either 0 (straight-through), 1 (3-way, flow straight-through), or 2 (3-way,
flow 90°) [-]
Returns
K [float] Loss coefficient with respect to the pipe inside diameter [-]

2.7. Fittings pressure drop (fluids.fittings) 173


Fluids Documentation, Release 0.1

Notes

This method is not valid in the laminar regime and the pressure drop will be underestimated in those conditions.

References

[1]

Examples

>>> K_plug_valve_Crane(D1=.01, D2=.02, angle=50)


19.80513692341617

fluids.fittings.K_branch_converging_Crane(D_run, D_branch, Q_run, Q_branch, an-


gle=90)
Returns the loss coefficient for the branch of a converging tee or wye according to the Crane method [1].
[︃ (︂ )︂2 (︂ )︂2 (︂ )︂2 ]︃
𝑄𝑏𝑟𝑎𝑛𝑐ℎ 𝑄𝑏𝑟𝑎𝑛𝑐ℎ 𝐹 𝑄𝑏𝑟𝑎𝑛𝑐ℎ
𝐾𝑏𝑟𝑎𝑛𝑐ℎ = 𝐶 1 + 𝐷 2 −𝐸 1− − 2
𝑄𝑐𝑜𝑚𝑏 · 𝛽𝑏𝑟𝑎𝑛𝑐ℎ 𝑄𝑐𝑜𝑚𝑏 𝛽𝑏𝑟𝑎𝑛𝑐ℎ 𝑄𝑐𝑜𝑚𝑏

𝐷𝑏𝑟𝑎𝑛𝑐ℎ
𝛽𝑏𝑟𝑎𝑛𝑐ℎ =
𝐷𝑐𝑜𝑚𝑏
In the above equation, D = 1, E = 2. See the notes for definitions of F and C.
Parameters
D_run [float] Diameter of the straight-through inlet portion of the tee or wye [m]
D_branch [float] Diameter of the pipe attached at an angle to the straight-through, [m]
Q_run [float] Volumetric flow rate in the straight-through inlet of the tee or wye, [m^3/s]
Q_branch [float] Volumetric flow rate in the pipe attached at an angle to the straight- through,
[m^3/s]
angle [float, optional] Angle the branch makes with the straight-through (tee=90, wye<90) [de-
grees]
Returns
K [float] Loss coefficient of branch with respect to the velocity and inside diameter of the com-
bined flow outlet [-]

Notes

F is linearly interpolated from the table of angles below. There is no cutoff to prevent angles from being larger
or smaller than 30 or 90 degrees.

Angle [°]
30 1.74
45 1.41
60 1
90 0

2
If 𝛽𝑏𝑟𝑎𝑛𝑐ℎ ≤ 0.35, C = 1

174 Chapter 2. API Reference


Fluids Documentation, Release 0.1

2
If 𝛽𝑏𝑟𝑎𝑛𝑐ℎ > 0.35 and 𝑄𝑏𝑟𝑎𝑛𝑐ℎ /𝑄𝑐𝑜𝑚𝑏 > 0.4, C = 0.55.
If neither of the above conditions are met:
(︂ )︂
𝑄𝑏𝑟𝑎𝑛𝑐ℎ
𝐶 = 0.9 1 −
𝑄𝑐𝑜𝑚𝑏

Note that there is an error in the text of [1]; the errata can be obtained here: http://www.flowoffluids.com/
publications/tp-410-errata.aspx

References

[1]

Examples

Example 7-35 of [1]. A DN100 schedule 40 tee has 1135 liters/minute of water passing through the straight
leg, and 380 liters/minute of water converging with it through a 90° branch. Calculate the loss coefficient in the
branch. The calculated value there is -0.04026.

>>> K_branch_converging_Crane(0.1023, 0.1023, 0.018917, 0.00633)


-0.04044108513625682

fluids.fittings.K_run_converging_Crane(D_run, D_branch, Q_run, Q_branch, angle=90)


Returns the loss coefficient for the run of a converging tee or wye according to the Crane method [1].
[︃ (︂ )︂2 (︂ )︂2 (︂ )︂2 ]︃
𝑄𝑏𝑟𝑎𝑛𝑐ℎ 𝑄𝑏𝑟𝑎𝑛𝑐ℎ 𝐹 𝑄𝑏𝑟𝑎𝑛𝑐ℎ
𝐾𝑏𝑟𝑎𝑛𝑐ℎ = 𝐶 1 + 𝐷 2 −𝐸 1− − 2
𝑄𝑐𝑜𝑚𝑏 · 𝛽𝑏𝑟𝑎𝑛𝑐ℎ 𝑄𝑐𝑜𝑚𝑏 𝛽𝑏𝑟𝑎𝑛𝑐ℎ 𝑄𝑐𝑜𝑚𝑏

𝐷𝑏𝑟𝑎𝑛𝑐ℎ
𝛽𝑏𝑟𝑎𝑛𝑐ℎ =
𝐷𝑐𝑜𝑚𝑏
In the above equation, C=1, D=0, E=1. See the notes for definitions of F and also the special case of 90°.
Parameters
D_run [float] Diameter of the straight-through inlet portion of the tee or wye [m]
D_branch [float] Diameter of the pipe attached at an angle to the straight-through, [m]
Q_run [float] Volumetric flow rate in the straight-through inlet of the tee or wye, [m^3/s]
Q_branch [float] Volumetric flow rate in the pipe attached at an angle to the straight- through,
[m^3/s]
angle [float, optional] Angle the branch makes with the straight-through (tee=90, wye<90) [de-
grees]
Returns
K [float] Loss coefficient of run with respect to the velocity and inside diameter of the combined
flow outlet [-]

Notes

F is linearly interpolated from the table of angles below. There is no cutoff to prevent angles from being larger
or smaller than 30 or 60 degrees. The switch to the special 90° happens at 75°.

2.7. Fittings pressure drop (fluids.fittings) 175


Fluids Documentation, Release 0.1

Angle [°]
30 1.74
45 1.41
60 1

For the special case of 90°, the formula used is as follows.


(︂ )︂ (︂ )︂2
𝑄𝑏𝑟𝑎𝑛𝑐ℎ 𝑄𝑏𝑟𝑎𝑛𝑐ℎ
𝐾𝑟𝑢𝑛 = 1.55 −
𝑄𝑐𝑜𝑚𝑏 𝑄𝑐𝑜𝑚𝑏

References

[1]

Examples

Example 7-35 of [1]. A DN100 schedule 40 tee has 1135 liters/minute of water passing through the straight leg,
and 380 liters/minute of water converging with it through a 90° branch. Calculate the loss coefficient in the run.
The calculated value there is 0.03258.

>>> K_run_converging_Crane(0.1023, 0.1023, 0.018917, 0.00633)


0.32575847854551254

fluids.fittings.K_branch_diverging_Crane(D_run, D_branch, Q_run, Q_branch, angle=90)


Returns the loss coefficient for the branch of a diverging tee or wye according to the Crane method [1].
[︃ (︂ )︂2 (︂ )︂ ]︃
𝑄𝑏𝑟𝑎𝑛𝑐ℎ 𝑄𝑏𝑟𝑎𝑛𝑐ℎ
𝐾𝑏𝑟𝑎𝑛𝑐ℎ = 𝐺 1 + 𝐻 2 −𝐽 2 cos 𝜃
𝑄𝑐𝑜𝑚𝑏 𝛽𝑏𝑟𝑎𝑛𝑐ℎ 𝑄𝑐𝑜𝑚𝑏 𝛽𝑏𝑟𝑎𝑛𝑐ℎ

𝐷𝑏𝑟𝑎𝑛𝑐ℎ
𝛽𝑏𝑟𝑎𝑛𝑐ℎ =
𝐷𝑐𝑜𝑚𝑏
See the notes for definitions of H, J, and G.
Parameters
D_run [float] Diameter of the straight-through inlet portion of the tee or wye [m]
D_branch [float] Diameter of the pipe attached at an angle to the straight-through, [m]
Q_run [float] Volumetric flow rate in the straight-through outlet of the tee or wye, [m^3/s]
Q_branch [float] Volumetric flow rate in the pipe attached at an angle to the straight- through,
[m^3/s]
angle [float, optional] Angle the branch makes with the straight-through (tee=90, wye<90) [de-
grees]
Returns
K [float] Loss coefficient of branch with respect to the velocity and inside diameter of the com-
bined flow inlet [-]

176 Chapter 2. API Reference


Fluids Documentation, Release 0.1

Notes

If 𝛽𝑏𝑟𝑎𝑛𝑐ℎ = 1, 𝜃 = 90∘ , H = 0.3 and J = 0. Otherwise H = 1 and J = 2.


G is determined according to the following pseudocode:

if angle < 75:


if beta2 <= 0.35:
if Q_ratio <= 0.4:
G = 1.1 - 0.7*Q_ratio
else:
G = 0.85
else:
if Q_ratio <= 0.6:
G = 1.0 - 0.6*Q_ratio
else:
G = 0.6
else:
if beta2 <= 2/3.:
G = 1
else:
G = 1 + 0.3*Q_ratio*Q_ratio

Note that there are several errors in the text of [1]; the errata can be obtained here: http://www.flowoffluids.com/
publications/tp-410-errata.aspx

References

[1]

Examples

Example 7-36 of [1]. A DN150 schedule 80 wye has 1515 liters/minute of water exiting the straight leg, and
950 liters/minute of water exiting it through a 45° branch. Calculate the loss coefficient in the branch. The
calculated value there is 0.4640.

>>> K_branch_diverging_Crane(0.146, 0.146, 0.02525, 0.01583, angle=45)


0.4639895627496694

fluids.fittings.K_run_diverging_Crane(D_run, D_branch, Q_run, Q_branch, angle=90)


Returns the loss coefficient for the run of a converging tee or wye according to the Crane method [1].
(︂ )︂2
𝑄𝑏𝑟𝑎𝑛𝑐ℎ
𝐾𝑟𝑢𝑛 = 𝑀
𝑄𝑐𝑜𝑚𝑏

𝐷𝑏𝑟𝑎𝑛𝑐ℎ
𝛽𝑏𝑟𝑎𝑛𝑐ℎ =
𝐷𝑐𝑜𝑚𝑏
See the notes for the definition of M.
Parameters
D_run [float] Diameter of the straight-through inlet portion of the tee or wye [m]
D_branch [float] Diameter of the pipe attached at an angle to the straight-through, [m]
Q_run [float] Volumetric flow rate in the straight-through outlet of the tee or wye, [m^3/s]

2.7. Fittings pressure drop (fluids.fittings) 177


Fluids Documentation, Release 0.1

Q_branch [float] Volumetric flow rate in the pipe attached at an angle to the straight- through,
[m^3/s]
angle [float, optional] Angle the branch makes with the straight-through (tee=90, wye<90) [de-
grees]
Returns
K [float] Loss coefficient of run with respect to the velocity and inside diameter of the combined
flow inlet [-]

Notes

M is calculated according to the following pseudocode:

if beta*beta <= 0.4:


M = 0.4
elif Q_branch/Q_comb <= 0.5:
M = 2*(2*Q_branch/Q_comb - 1)
else:
M = 0.3*(2*Q_branch/Q_comb - 1)

References

[1]

Examples

Example 7-36 of [1]. A DN150 schedule 80 wye has 1515 liters/minute of water exiting the straight leg, and
950 liters/minute of water exiting it through a 45° branch. Calculate the loss coefficient in the branch. The
calculated value there is -0.06809.

>>> K_run_diverging_Crane(0.146, 0.146, 0.02525, 0.01583, angle=45)


-0.06810067607153049

fluids.fittings.v_lift_valve_Crane(rho, D1=None, D2=None, style=’swing check angled’)


Calculates the approximate minimum velocity required to lift the disk or other controlling element of a check
valve to a fully open, stable, position according to the Crane method [1].
√︃
kg/m3
𝑣𝑚𝑖𝑛 = 𝑁 · m/s ·
𝜌
√︃
2 kg/m3
𝑣𝑚𝑖𝑛 = 𝑁 𝛽 · m/s ·
𝜌
See the notes for the definition of values of N and which check valves use which formulas.
Parameters
rho [float] Density of the fluid [kg/m^3]
D1 [float, optional] Diameter of the valve bore (must be equal to or smaller than D2), [m]
D2 [float, optional] Diameter of the pipe attached to the valve, [m]

178 Chapter 2. API Reference


Fluids Documentation, Release 0.1

style [str] The type of valve; one of [‘swing check angled’, ‘swing check straight’, ‘swing
check UL’, ‘lift check straight’, ‘lift check angled’, ‘tilting check 5°’, ‘tilting check 15°’,
‘stop check globe 1’, ‘stop check angle 1’, ‘stop check globe 2’, ‘stop check angle 2’, ‘stop
check globe 3’, ‘stop check angle 3’, ‘foot valve poppet disc’, ‘foot valve hinged disc’], [-]
Returns
v_min [float] Approximate minimum velocity required to keep the disc fully lifted, preventing
chattering and wear [m/s]

Notes

This equation is not dimensionless.

Name/string N Full
‘swing check angled’ 45 No
‘swing check straight’ 75 No
‘swing check UL’ 120 No
‘lift check straight’ 50 Yes
‘lift check angled’ 170 Yes
‘tilting check 5°’ 100 No
‘tilting check 15°’ 40 No
‘stop check globe 1’ 70 Yes
‘stop check angle 1’ 95 Yes
‘stop check globe 2’ 75 Yes
‘stop check angle 2’ 75 Yes
‘stop check globe 3’ 170 Yes
‘stop check angle 3’ 170 Yes
‘foot valve poppet disc’ 20 No
‘foot valve hinged disc’ 45 No

References

[1]

Examples

>>> v_lift_valve_Crane(rho=998.2, D1=0.0627, D2=0.0779, style='lift check straight


˓→')

1.0252301935349286

2.8 Orifice plates, flow nozzles, Venturi tubes, cone and wedge me-
ters (fluids.flow_meter)

fluids.flow_meter.C_Reader_Harris_Gallagher(D, Do, rho, mu, m, taps=’corner’)


Calculates the coefficient of discharge of the orifice based on the geometry of the plate, measured pressures of

2.8. Orifice plates, flow nozzles, Venturi tubes, cone and wedge meters (fluids.flow_meter) 179
Fluids Documentation, Release 0.1

the orifice, mass flow rate through the orifice, and the density and viscosity of the fluid.
)︂0.7
106 𝛽
(︂
𝐶 = 0.5961 + 0.0261𝛽 2 − 0.216𝛽 8 + 0.000521
𝑅𝑒𝐷
)︂0.3
106
(︂
+(0.0188 + 0.0063𝐴)𝛽 3.5
𝑅𝑒𝐷
𝛽4
+(0.043 + 0.080 exp(−10𝐿1 ) − 0.123 exp(−7𝐿1 ))(1 − 0.11𝐴)
1 − 𝛽4
′ ′1.1
−0.031(𝑀2 − 0.8𝑀2 )𝛽 1.3

2𝐿′2
𝑀2′ =
1−𝛽
(︂ )︂0.8
19000𝛽
𝐴=
𝑅𝑒𝐷
𝜌𝑣𝐷
𝑅𝑒𝐷 =
𝜇
If D < 71.12 mm (2.8 in.) (Note this is a continuous addition; there is no discontinuity):
(︂ )︂
𝐷
𝐶+ = 0.11(0.75 − 𝛽) 2.8 −
0.0254

If the orifice has corner taps:

𝐿1 = 𝐿′2 = 0

If the orifice has D and D/2 taps:

𝐿1 = 1

𝐿′2 = 0.47
If the orifice has Flange taps:
0.0254
𝐿1 = 𝐿′2 =
𝐷
Parameters
D [float] Upstream internal pipe diameter, [m]
Do [float] Diameter of orifice at flow conditions, [m]
rho [float] Density of fluid at P1, [kg/m^3]
mu [float] Viscosity of fluid at P1, [Pa*s]
m [float] Mass flow rate of fluid through the orifice, [kg/s]
taps [str] The orientation of the taps; one of ‘corner’, ‘flange’, ‘D’, or ‘D/2’, [-]
Returns
C [float] Coefficient of discharge of the orifice, [-]

180 Chapter 2. API Reference


Fluids Documentation, Release 0.1

Notes

The following limits apply to the orifice plate standard [1]:


The measured pressure difference for the orifice plate should be under 250 kPa.
There are roughness limits as well; the roughness should be under 6 micrometers, although there are many more
conditions to that given in [1].
For orifice plates with D and D/2 or corner pressure taps:
• Orifice bore diameter muse be larger than 12.5 mm (0.5 inches)
• Pipe diameter between 50 mm and 1 m (2 to 40 inches)
• Beta between 0.1 and 0.75 inclusive
• Reynolds number larger than 5000 (for 0.10 ≤ 𝛽 ≤ 0.56) or for 𝛽 ≥ 0.56, 𝑅𝑒𝐷 ≥ 16000𝛽 2
For orifice plates with flange pressure taps:
• Orifice bore diameter muse be larger than 12.5 mm (0.5 inches)
• Pipe diameter between 50 mm and 1 m (2 to 40 inches)
• Beta between 0.1 and 0.75 inclusive
• Reynolds number larger than 5000 and also larger than 170000𝛽 2 𝐷.
This is also presented in Crane’s TP410 (2009) publication, whereas the 1999 and 1982 editions showed only a
graph for discharge coefficients.

References

[1], [2], [3], [4]

Examples

>>> C_Reader_Harris_Gallagher(D=0.07391, Do=0.0222, rho=1.165, mu=1.85E-5,


... m=0.12, taps='flange')
0.5990326277163659

fluids.flow_meter.differential_pressure_meter_solver(D, rho, mu, k, D2=None,


P1=None, P2=None, m=None,
meter_type=’ISO 5167 orifice’,
taps=None)
Calculates either the mass flow rate, the upstream pressure, the second pressure value, or the orifice diameter for
a differential pressure flow meter based on the geometry of the meter, measured pressures of the meter, and the
density, viscosity, and isentropic exponent of the fluid. This solves an equation iteratively to obtain the correct
flow rate.
Parameters
D [float] Upstream internal pipe diameter, [m]
rho [float] Density of fluid at P1, [kg/m^3]
mu [float] Viscosity of fluid at P1, [Pa*s]
k [float] Isentropic exponent of fluid, [-]

2.8. Orifice plates, flow nozzles, Venturi tubes, cone and wedge meters (fluids.flow_meter) 181
Fluids Documentation, Release 0.1

D2 [float, optional] Diameter of orifice, or venturi meter orifice, or flow tube orifice, or cone
meter end diameter, or wedge meter fluid flow height, [m]
P1 [float, optional] Static pressure of fluid upstream of differential pressure meter at the cross-
section of the pressure tap, [Pa]
P2 [float, optional] Static pressure of fluid downstream of differential pressure meter or at the
prescribed location (varies by type of meter) [Pa]
m [float, optional] Mass flow rate of fluid through the flow meter, [kg/s]
meter_type [str, optional] One of (‘ISO 5167 orifice’, ‘long radius nozzle’, ‘ISA 1932 noz-
zle’, ‘venuri nozzle’, ‘as cast convergent venturi tube’, ‘machined convergent venturi tube’,
‘rough welded convergent venturi tube’, ‘cone meter’, ‘wedge meter’), [-]
taps [str, optional] The orientation of the taps; one of ‘corner’, ‘flange’, ‘D’, or ‘D/2’; applies
for orifice meters only, [-]
Returns
ans [float] One of m, the mass flow rate of the fluid; P1, the pressure upstream of the flow meter;
P2, the second pressure tap’s value; and D2, the diameter of the measuring device; units of
respectively, kg/s, Pa, Pa, or m

Notes

See the appropriate functions for the documentation for the formulas and references used in each method.
The solvers make some assumptions about the range of values answers may be in.
Note that the solver for the upstream pressure uses the provided values of density, viscosity and isentropic
exponent; whereas these values all depend on pressure (albeit to a small extent). An outer loop should be added
with pressure-dependent values calculated in it for maximum accuracy.
It would be possible to solve for the upstream pipe diameter, but there is no use for that functionality.

Examples

>>> differential_pressure_meter_solver(D=0.07366, D2=0.05, P1=200000.0,


... P2=183000.0, rho=999.1, mu=0.0011, k=1.33,
... meter_type='ISO 5167 orifice', taps='D')
7.702338035732167

>>> differential_pressure_meter_solver(D=0.07366, m=7.702338, P1=200000.0,


... P2=183000.0, rho=999.1, mu=0.0011, k=1.33,
... meter_type='ISO 5167 orifice', taps='D')
0.04999999990831885

fluids.flow_meter.differential_pressure_meter_dP(D, D2, P1, P2, C=None, me-


ter_type=’ISO 5167 orifice’)
Calculates either the non-recoverable pressure drop of a differential pressure flow meter based on the geometry
of the meter, measured pressures of the meter, and for most models the meter discharge coefficient.
Parameters
D [float] Upstream internal pipe diameter, [m]
D2 [float] Diameter of orifice, or venturi meter orifice, or flow tube orifice, or cone meter end
diameter, or wedge meter fluid flow height, [m]

182 Chapter 2. API Reference


Fluids Documentation, Release 0.1

P1 [float] Static pressure of fluid upstream of differential pressure meter at the cross-section of
the pressure tap, [Pa]
P2 [float] Static pressure of fluid downstream of differential pressure meter or at the prescribed
location (varies by type of meter) [Pa]
C [float, optional] Coefficient of discharge (used only in orifice plates, and venturi nozzles), [-]
meter_type [str, optional] One of (‘ISO 5167 orifice’, ‘long radius nozzle’, ‘ISA 1932 noz-
zle’, ‘as cast convergent venturi tube’, ‘machined convergent venturi tube’, ‘rough welded
convergent venturi tube’, ‘cone meter’, ‘cone meter’), [-]
Returns
dP [float] Non-recoverable pressure drop of the differential pressure flow meter, [Pa]

Notes

See the appropriate functions for the documentation for the formulas and references used in each method.
Wedge meters, and venturi nozzles do not have standard formulas available for pressure drop computation.

Examples

>>> differential_pressure_meter_dP(D=0.07366, D2=0.05, P1=200000.0,


... P2=183000.0, meter_type='as cast convergent venturi tube')
1788.5717754177406

fluids.flow_meter.flow_meter_discharge(D, Do, P1, P2, rho, C, expansibility=1.0)


Calculates the flow rate of an orifice plate based on the geometry of the plate, measured pressures of the orifice,
and the density of the fluid.
)︂ √
𝜋𝐷𝑜2
(︂
2∆𝑃 𝜌1
𝑚= 𝐶 √︀ ·𝜖
4 1 − 𝛽4

Parameters
D [float] Upstream internal pipe diameter, [m]
Do [float] Diameter of orifice at flow conditions, [m]
P1 [float] Static pressure of fluid upstream of orifice at the cross-section of the pressure tap,
[Pa]
P2 [float] Static pressure of fluid downstream of orifice at the cross-section of the pressure tap,
[Pa]
rho [float] Density of fluid at P1, [kg/m^3]
C [float] Coefficient of discharge of the orifice, [-]
expansibility [float, optional] Expansibility factor (1 for incompressible fluids, less than 1 for
real fluids), [-]
Returns
m [float] Mass flow rate of fluid, [kg/s]

2.8. Orifice plates, flow nozzles, Venturi tubes, cone and wedge meters (fluids.flow_meter) 183
Fluids Documentation, Release 0.1

Notes

This is formula 1-12 in [1] and also [2].

References

[1], [2]

Examples

>>> flow_meter_discharge(D=0.0739, Do=0.0222, P1=1E5, P2=9.9E4, rho=1.1646,


... C=0.5988, expansibility=0.9975)
0.01120390943807026

fluids.flow_meter.orifice_expansibility(D, Do, P1, P2, k)


Calculates the expansibility factor for orifice plate calculations based on the geometry of the plate, measured
pressures of the orifice, and the isentropic exponent of the fluid.
[︃ (︂ )︂1/𝜅 ]︃
4 8 𝑃2
𝜖 = 1 − (0.351 + 0.256𝛽 + 0.93𝛽 ) 1 −
𝑃1

Parameters
D [float] Upstream internal pipe diameter, [m]
Do [float] Diameter of orifice at flow conditions, [m]
P1 [float] Static pressure of fluid upstream of orifice at the cross-section of the pressure tap,
[Pa]
P2 [float] Static pressure of fluid downstream of orifice at the cross-section of the pressure tap,
[Pa]
k [float] Isentropic exponent of fluid, [-]
Returns
expansibility [float, optional] Expansibility factor (1 for incompressible fluids, less than 1 for
real fluids), [-]

Notes

This formula was determined for the range of P2/P1 >= 0.80, and for fluids of air, steam, and natural gas.
However, there is no objection to using it for other fluids.

References

[1], [2]

Examples

>>> orifice_expansibility(D=0.0739, Do=0.0222, P1=1E5, P2=9.9E4, k=1.4)


0.9974739057343425

184 Chapter 2. API Reference


Fluids Documentation, Release 0.1

fluids.flow_meter.discharge_coefficient_to_K(D, Do, C)
Converts a discharge coefficient to a standard loss coefficient, for use in computation of the actual pressure drop
of an orifice or other device.
[︃ √︀ ]︃2
1 − 𝛽 4 (1 − 𝐶 2 )
𝐾= −1
𝐶𝛽 2

Parameters
D [float] Upstream internal pipe diameter, [m]
Do [float] Diameter of orifice at flow conditions, [m]
C [float] Coefficient of discharge of the orifice, [-]
Returns
K [float] Loss coefficient with respect to the velocity and density of the fluid just upstream of
the orifice, [-]

Notes

If expansibility is used in the orifice calculation, the result will not match with the specified pressure drop
formula in [1]; it can almost be matched by dividing the calculated mass flow by the expansibility factor and
using that mass flow with the loss coefficient.

References

[1], [2]

Examples

>>> discharge_coefficient_to_K(D=0.07366, Do=0.05, C=0.61512)


5.2314291729754

fluids.flow_meter.K_to_discharge_coefficient(D, Do, K)
Converts a standard loss coefficient to a discharge coefficient.
√︃
1 𝛽4
𝐶= √ − √
4
2 𝐾𝛽 + 𝐾𝛽 4 2 𝐾𝛽 4 + 𝐾𝛽 4

Parameters
D [float] Upstream internal pipe diameter, [m]
Do [float] Diameter of orifice at flow conditions, [m]
K [float] Loss coefficient with respect to the velocity and density of the fluid just upstream of
the orifice, [-]
Returns
C [float] Coefficient of discharge of the orifice, [-]

2.8. Orifice plates, flow nozzles, Venturi tubes, cone and wedge meters (fluids.flow_meter) 185
Fluids Documentation, Release 0.1

Notes

If expansibility is used in the orifice calculation, the result will not match with the specified pressure drop
formula in [1]; it can almost be matched by dividing the calculated mass flow by the expansibility factor and
using that mass flow with the loss coefficient.
This expression was derived with SymPy, and checked numerically. There were three other, incorrect roots.

References

[1], [2]

Examples

>>> K_to_discharge_coefficient(D=0.07366, Do=0.05, K=5.2314291729754)


0.6151200000000001

fluids.flow_meter.dP_orifice(D, Do, P1, P2, C)


Calculates the non-recoverable pressure drop of an orifice plate based on the pressure drop and the geometry of
the plate and the discharge coefficient.
√︀
1 − 𝛽 4 (1 − 𝐶 2 ) − 𝐶𝛽 2
∆𝑤 ¯ = √︀ (𝑃1 − 𝑃2 )
1 − 𝛽 4 (1 − 𝐶 2 ) + 𝐶𝛽 2

Parameters
D [float] Upstream internal pipe diameter, [m]
Do [float] Diameter of orifice at flow conditions, [m]
P1 [float] Static pressure of fluid upstream of orifice at the cross-section of the pressure tap,
[Pa]
P2 [float] Static pressure of fluid downstream of orifice at the cross-section of the pressure tap,
[Pa]
C [float] Coefficient of discharge of the orifice, [-]
Returns
dP [float] Non-recoverable pressure drop of the orifice plate, [Pa]

Notes

This formula can be well approximated by:

¯ = 1 − 𝛽 1.9 (𝑃1 − 𝑃2 )
(︀ )︀
∆𝑤

The recoverable pressure drop should be recovered by 6 pipe diameters downstream of the orifice plate.

References

[1], [2]

186 Chapter 2. API Reference


Fluids Documentation, Release 0.1

Examples

>>> dP_orifice(D=0.07366, Do=0.05, P1=200000.0, P2=183000.0, C=0.61512)


9069.474705745388

fluids.flow_meter.velocity_of_approach_factor(D, Do)
Calculates a factor for orifice plate design called the velocity of approach.
1
Velocity of approach = √︀
1 − 𝛽4

Parameters
D [float] Upstream internal pipe diameter, [m]
Do [float] Diameter of orifice at flow conditions, [m]
Returns
velocity_of_approach [float] Coefficient of discharge of the orifice, [-]

References

[1]

Examples

>>> velocity_of_approach_factor(D=0.0739, Do=0.0222)


1.0040970074165514

fluids.flow_meter.flow_coefficient(D, Do, C)
Calculates a factor for differential pressure flow meter design called the flow coefficient. This should not be
confused with the flow coefficient often used when discussing valves.
𝐶
Flow coefficient = √︀
1 − 𝛽4

Parameters
D [float] Upstream internal pipe diameter, [m]
Do [float] Diameter of flow meter characteristic dimension at flow conditions, [m]
C [float] Coefficient of discharge of the flow meter, [-]
Returns
flow_coefficient [float] Differential pressure flow meter flow coefficient, [-]

Notes

This measure is used not just for orifices but for other differential pressure flow meters [2].
It is sometimes given the symbol K. It is also equal to the product of the diacharge coefficient and the velocity
of approach factor [2].

2.8. Orifice plates, flow nozzles, Venturi tubes, cone and wedge meters (fluids.flow_meter) 187
Fluids Documentation, Release 0.1

References

[1], [2]

Examples

>>> flow_coefficient(D=0.0739, Do=0.0222, C=0.6)


0.6024582044499308

fluids.flow_meter.nozzle_expansibility(D, Do, P1, P2, k, beta=None)


Calculates the expansibility factor for a nozzle or venturi nozzle, based on the geometry of the plate, measured
pressures of the orifice, and the isentropic exponent of the fluid.
{︂(︂ 2/𝜅 )︂ (︂ ]︂}︂0.5
1 − 𝛽4 1 − 𝜏 (𝜅−1)/𝜅
)︂ [︂
𝜅𝜏
𝜖=
𝜅−1 1 − 𝛽 4 𝜏 2/𝜅 1−𝜏
Parameters
D [float] Upstream internal pipe diameter, [m]
Do [float] Diameter of orifice of the venturi or nozzle, [m]
P1 [float] Static pressure of fluid upstream of orifice at the cross-section of the pressure tap,
[Pa]
P2 [float] Static pressure of fluid downstream of orifice at the cross-section of the pressure tap,
[Pa]
k [float] Isentropic exponent of fluid, [-]
beta [float, optional] Optional beta ratio, which is useful to specify for wedge meters or flow
meters which have a different beta ratio calculation, [-]
Returns
expansibility [float] Expansibility factor (1 for incompressible fluids, less than 1 for real fluids),
[-]

Notes

This formula was determined for the range of P2/P1 >= 0.75.

References

[1], [2]

Examples

>>> nozzle_expansibility(D=0.0739, Do=0.0222, P1=1E5, P2=9.9E4, k=1.4)


0.9945702344566746

fluids.flow_meter.C_long_radius_nozzle(D, Do, rho, mu, m)


Calculates the coefficient of discharge of a long radius nozzle used for measuring flow rate of fluid, based on
the geometry of the nozzle, mass flow rate through the nozzle, and the density and viscosity of the fluid.
(︂ 6 )︂0.5
10
𝐶 = 0.9965 − 0.00653𝛽 0.5
𝑅𝑒𝐷

188 Chapter 2. API Reference


Fluids Documentation, Release 0.1

Parameters
D [float] Upstream internal pipe diameter, [m]
Do [float] Diameter of long radius nozzle orifice at flow conditions, [m]
rho [float] Density of fluid at P1, [kg/m^3]
mu [float] Viscosity of fluid at P1, [Pa*s]
m [float] Mass flow rate of fluid through the nozzle, [kg/s]
Returns
C [float] Coefficient of discharge of the long radius nozzle orifice, [-]

References

[1], [2]

Examples

>>> C_long_radius_nozzle(D=0.07391, Do=0.0422, rho=1.2, mu=1.8E-5, m=0.1)


0.9805503704679863

fluids.flow_meter.C_ISA_1932_nozzle(D, Do, rho, mu, m)


Calculates the coefficient of discharge of an ISA 1932 style nozzle used for measuring flow rate of fluid, based
on the geometry of the nozzle, mass flow rate through the nozzle, and the density and viscosity of the fluid.
)︂1.15
106
(︂
𝐶 = 0.9900 − 0.2262𝛽 4.1 − (0.00175𝛽 2 − 0.0033𝛽 4.15 )
𝑅𝑒𝐷

Parameters
D [float] Upstream internal pipe diameter, [m]
Do [float] Diameter of nozzle orifice at flow conditions, [m]
rho [float] Density of fluid at P1, [kg/m^3]
mu [float] Viscosity of fluid at P1, [Pa*s]
m [float] Mass flow rate of fluid through the nozzle, [kg/s]
Returns
C [float] Coefficient of discharge of the nozzle orifice, [-]

References

[1], [2]

Examples

>>> C_ISA_1932_nozzle(D=0.07391, Do=0.0422, rho=1.2, mu=1.8E-5, m=0.1)


0.9635849973250495

2.8. Orifice plates, flow nozzles, Venturi tubes, cone and wedge meters (fluids.flow_meter) 189
Fluids Documentation, Release 0.1

fluids.flow_meter.C_venturi_nozzle(D, Do)
Calculates the coefficient of discharge of an Venturi style nozzle used for measuring flow rate of fluid, based on
the geometry of the nozzle.

𝐶 = 0.9858 − 0.196𝛽 4.5

Parameters
D [float] Upstream internal pipe diameter, [m]
Do [float] Diameter of nozzle orifice at flow conditions, [m]
Returns
C [float] Coefficient of discharge of the nozzle orifice, [-]

References

[1], [2]

Examples

>>> C_venturi_nozzle(D=0.07391, Do=0.0422)


0.9698996454169576

fluids.flow_meter.orifice_expansibility_1989(D, Do, P1, P2, k)


Calculates the expansibility factor for orifice plate calculations based on the geometry of the plate, measured
pressures of the orifice, and the isentropic exponent of the fluid.

𝜖 = 1 − (0.41 + 0.35𝛽 4 )∆𝑃/𝜅/𝑃1

Parameters
D [float] Upstream internal pipe diameter, [m]
Do [float] Diameter of orifice at flow conditions, [m]
P1 [float] Static pressure of fluid upstream of orifice at the cross-section of the pressure tap,
[Pa]
P2 [float] Static pressure of fluid downstream of orifice at the cross-section of the pressure tap,
[Pa]
k [float] Isentropic exponent of fluid, [-]
Returns
expansibility [float] Expansibility factor (1 for incompressible fluids, less than 1 for real fluids),
[-]

Notes

This formula was determined for the range of P2/P1 >= 0.75, and for fluids of air, steam, and natural gas.
However, there is no objection to using it for other fluids.
This is an older formula used to calculate expansibility factors for orifice plates.

190 Chapter 2. API Reference


Fluids Documentation, Release 0.1

In this standard, an expansibility factor formula transformation in terms of the pressure after the orifice is
presented as well. This is the more standard formulation in terms of the upstream conditions. The other formula
is below for reference only:
√︂
∆𝑃 ∆𝑃
𝜖2 = 1 + − (0.41 + 0.35𝛽 4 ) √︁
𝑃2 𝜅𝑃2 1 + Δ𝑃 𝑃2

[2] recommends this formulation for wedge meters as well.

References

[1], [2]

Examples

>>> orifice_expansibility_1989(D=0.0739, Do=0.0222, P1=1E5, P2=9.9E4, k=1.4)


0.9970510687411718

fluids.flow_meter.dP_venturi_tube(D, Do, P1, P2)


Calculates the non-recoverable pressure drop of a venturi tube differential pressure meter based on the pressure
drop and the geometry of the venturi meter.
∆𝑤
¯
𝜖=
∆𝑃
The 𝜖 value is looked up in a table of values as a function of beta ratio and upstream pipe diameter (roughness
impact).
Parameters
D [float] Upstream internal pipe diameter, [m]
Do [float] Diameter of venturi tube at flow conditions, [m]
P1 [float] Static pressure of fluid upstream of venturi tube at the cross-section of the pressure
tap, [Pa]
P2 [float]
Static pressure of fluid downstream of venturi tube at the cross-section of the pressure
tap, [Pa]
Returns
dP [float] Non-recoverable pressure drop of the venturi tube, [Pa]

Notes

The recoverable pressure drop should be recovered by 6 pipe diameters downstream of the venturi tube.
Note there is some information on the effect of Reynolds number as well in [1] and [2], with a curve showing
an increased pressure drop from 1E5-6E5 to with a decreasing multiplier from 1.75 to 1; the multiplier is 1 for
higher Reynolds numbers. This is not currently included in this implementation.

References

[1], [2]

2.8. Orifice plates, flow nozzles, Venturi tubes, cone and wedge meters (fluids.flow_meter) 191
Fluids Documentation, Release 0.1

Examples

>>> dP_venturi_tube(D=0.07366, Do=0.05, P1=200000.0, P2=183000.0)


1788.5717754177406

fluids.flow_meter.diameter_ratio_cone_meter(D, Dc)
Calculates the diameter ratio beta used to characterize a cone flow meter.
√︂
𝑑2
𝛽 = 1 − 𝑐2
𝐷
Parameters
D [float] Upstream internal pipe diameter, [m]
Dc [float] Diameter of the largest end of the cone meter, [m]
Returns
beta [float] Cone meter diameter ratio, [-]

References

[1]

Examples

>>> diameter_ratio_cone_meter(D=0.2575, Dc=0.184)


0.6995709873957624

fluids.flow_meter.diameter_ratio_wedge_meter(D, H)
Calculates the diameter ratio beta used to characterize a wedge flow meter as given in [1] and [2].

[︂ ]︂2 )︃0.5 ⎬ 0.5


⎛⎧ ⎫⎞
[︂ ]︂ [︂ ]︂ (︃
1 ⎨ 2𝐻 2𝐻 𝐻 𝐻
𝛽=⎝ arccos 1 − −2 1− − ⎠
𝜋⎩ 𝐷 𝐷 𝐷 𝐷 ⎭

Parameters
D [float] Upstream internal pipe diameter, [m]
H [float] Portion of the diameter of the clear segment of the pipe up to the wedge blocking flow;
the height of the pipe up to the wedge, [m]
Returns
beta [float] Wedge meter diameter ratio, [-]

References

[1], [2]

Examples

192 Chapter 2. API Reference


Fluids Documentation, Release 0.1

>>> diameter_ratio_wedge_meter(D=0.2027, H=0.0608)


0.5022531424646643

fluids.flow_meter.cone_meter_expansibility_Stewart(D, Dc, P1, P2, k)


Calculates the expansibility factor for a cone flow meter, based on the geometry of the cone meter, measured
pressures of the orifice, and the isentropic exponent of the fluid. Developed in [1], also shown in [2].
∆𝑃
𝜖 = 1 − (0.649 + 0.696𝛽 4 )
𝜅𝑃1
Parameters
D [float] Upstream internal pipe diameter, [m]
Dc [float] Diameter of the largest end of the cone meter, [m]
P1 [float] Static pressure of fluid upstream of cone meter at the cross-section of the pressure
tap, [Pa]
P2 [float] Static pressure of fluid at the end of the center of the cone pressure tap, [Pa]
k [float] Isentropic exponent of fluid, [-]
Returns
expansibility [float] Expansibility factor (1 for incompressible fluids, less than 1 for real fluids),
[-]

Notes

This formula was determined for the range of P2/P1 >= 0.75; the only gas used to determine the formula is air.

References

[1], [2]

Examples

>>> cone_meter_expansibility_Stewart(D=1, Dc=0.9, P1=1E6, P2=8.5E5, k=1.2)


0.9157343

fluids.flow_meter.dP_cone_meter(D, Dc, P1, P2)


Calculates the non-recoverable pressure drop of a cone meter based on the measured pressures before and at the
cone end, and the geometry of the cone meter according to [1].

𝜔 = (1.09 − 0.813𝛽)∆𝑃
∆¯

Parameters
D [float] Upstream internal pipe diameter, [m]
Dc [float] Diameter of the largest end of the cone meter, [m]
P1 [float] Static pressure of fluid upstream of cone meter at the cross-section of the pressure
tap, [Pa]
P2 [float] Static pressure of fluid at the end of the center of the cone pressure tap, [Pa]

2.8. Orifice plates, flow nozzles, Venturi tubes, cone and wedge meters (fluids.flow_meter) 193
Fluids Documentation, Release 0.1

Returns
dP [float] Non-recoverable pressure drop of the orifice plate, [Pa]

Notes

The recoverable pressure drop should be recovered by 6 pipe diameters downstream of the cone meter.

References

[1]

Examples

>>> dP_cone_meter(1, .7, 1E6, 9.5E5)


25470.093437973323

fluids.flow_meter.C_wedge_meter_Miller(D, H)
Calculates the coefficient of discharge of an wedge flow meter used for measuring flow rate of fluid, based on
the geometry of the differential pressure flow meter.
For half-inch lines:

𝐶 = 0.7883 + 0.107(1 − 𝛽 2 )

For 1 to 1.5 inch lines:

𝐶 = 0.6143 + 0.718(1 − 𝛽 2 )

For 1.5 to 24 inch lines:

𝐶 = 0.5433 + 0.2453(1 − 𝛽 2 )

Parameters
D [float] Upstream internal pipe diameter, [m]
H [float] Portion of the diameter of the clear segment of the pipe up to the wedge blocking flow;
the height of the pipe up to the wedge, [m]
Returns
C [float] Coefficient of discharge of the wedge flow meter, [-]

Notes

There is an ISO standard being developed to cover wedge meters as of 2018.


Wedge meters can have varying angles; 60 and 90 degree wedge meters have been reported. Tap locations 1 or
2 diameters (upstream and downstream), and 2D upstream/1D downstream have been used. Some wedges are
sharp; some are smooth. [2] gives some experimental values.

References

[1], [2]

194 Chapter 2. API Reference


Fluids Documentation, Release 0.1

Examples

>>> C_wedge_meter_Miller(D=0.1524, H=0.3*0.1524)


0.7267069372687651

fluids.flow_meter.C_wedge_meter_ISO_5167_6_2017(D, H)
Calculates the coefficient of discharge of an wedge flow meter used for measuring flow rate of fluid, based on
the geometry of the differential pressure flow meter according to the ISO 5167-6 standard (draft 2017).

𝐶 = 0.77 − 0.09𝛽

Parameters
D [float] Upstream internal pipe diameter, [m]
H [float] Portion of the diameter of the clear segment of the pipe up to the wedge blocking flow;
the height of the pipe up to the wedge, [m]
Returns
C [float] Coefficient of discharge of the wedge flow meter, [-]

Notes

This standard applies for wedge meters in line sizes between 50 and 600 mm; and height ratios between 0.2
and 0.6. The range of allowable Reynolds numbers is large; between 1E4 and 9E6. The uncertainty of the flow
coefficient is approximately 4%. Usually a 10:1 span of flow can be measured accurately. The discharge and
entry length of the meters must be at least half a pipe diameter. The wedge angle must be 90 degrees, plus or
minus two degrees.
The orientation of the wedge meter does not change the accuracy of this model.
There should be a straight run of 10 pipe diameters before the wedge meter inlet, and two of the same pipe
diameters after it.

References

[1]

Examples

>>> C_wedge_meter_ISO_5167_6_2017(D=0.1524, H=0.3*0.1524)


0.724792059539853

fluids.flow_meter.dP_wedge_meter(D, H, P1, P2)


Calculates the non-recoverable pressure drop of a wedge meter based on the measured pressures before and at
the wedge meter, and the geometry of the wedge meter according to [1].

𝜔 = (1.09 − 0.79𝛽)∆𝑃
∆¯

Parameters
D [float] Upstream internal pipe diameter, [m]
H [float] Portion of the diameter of the clear segment of the pipe up to the wedge blocking flow;
the height of the pipe up to the wedge, [m]

2.8. Orifice plates, flow nozzles, Venturi tubes, cone and wedge meters (fluids.flow_meter) 195
Fluids Documentation, Release 0.1

P1 [float] Static pressure of fluid upstream of wedge meter at the cross-section of the pressure
tap, [Pa]
P2 [float] Static pressure of fluid at the end of the wedge meter pressure tap, [ Pa]
Returns
dP [float] Non-recoverable pressure drop of the wedge meter, [Pa]

Notes

The recoverable pressure drop should be recovered by 5 pipe diameters downstream of the wedge meter.

References

[1]

Examples

>>> dP_wedge_meter(1, .7, 1E6, 9.5E5)


20344.849697483587

fluids.flow_meter.C_Reader_Harris_Gallagher_wet_venturi_tube(mg, ml, rhog, rhol,


D, Do, H=1)
Calculates the coefficient of discharge of the wet gas venturi tube based on the geometry of the tube, mass flow
rates of liquid and vapor through the tube, the density of the liquid and gas phases, and an adjustable coefficient
H.
(︃ √︂ )︃
𝑋
𝐶 = 1 − 0.0463 exp(−0.05𝐹 𝑟𝑔𝑎𝑠,𝑡ℎ ) · min 1,
0.016

𝐹 𝑟gas, densionetric
𝐹 𝑟𝑔𝑎𝑠,𝑡ℎ =
𝛽 2.5
√︀
𝜑= 1 + 𝐶𝐶ℎ 𝑋 + 𝑋 2
(︂ )︂𝑛 (︂ )︂𝑛
𝜌𝑙 𝜌1,𝑔
𝐶𝐶ℎ = +
𝜌1,𝑔 𝜌𝑙
[︂ (︂ )︂ ]︂
2 −0.8𝐹 𝑟gas, densiometric 2
𝑛 = max 0.583 − 0.18𝛽 − 0.578 exp , 0.392 − 0.18𝛽
𝐻
(︂ )︂ √︂
𝑚𝑙 𝜌1,𝑔
𝑋=
𝑚𝑔 𝜌𝑙
𝑣𝑔𝑎𝑠 𝜌1,𝑔 4𝑚𝑔 𝜌1,𝑔
√︂ √︂
𝐹 𝑟gas, densiometric = √ = √
𝑔𝐷 𝜌𝑙 − 𝜌1,𝑔 𝜌1,𝑔 𝜋𝐷 𝑔𝐷 𝜌𝑙 − 𝜌1,𝑔
2

Parameters
mg [float] Mass flow rate of gas through the venturi tube, [kg/s]
ml [float] Mass flow rate of liquid through the venturi tube, [kg/s]
rhog [float] Density of gas at P1, [kg/m^3]
rhol [float] Density of liquid at P1, [kg/m^3]
D [float] Upstream internal pipe diameter, [m]

196 Chapter 2. API Reference


Fluids Documentation, Release 0.1

Do [float] Diameter of venturi tube at flow conditions, [m]


H [float, optional] A surface-tension effect coefficient used to adjust for different fluids, (1 for
a hydrocarbon liquid, 1.35 for water, 0.79 for water in steam) [-]
Returns
C [float] Coefficient of discharge of the wet gas venturi tube flow meter (includes flow rate of
gas ONLY), [-]

Notes

This model has more error than single phase differential pressure meters. The model was first published in [1],
and became ISO 11583 later.
The limits of this correlation according to [2] are as follows:

0.4 ≤ 𝛽 ≤ 0.75

0 < 𝑋 ≤ 0.3
𝐹 𝑟𝑔𝑎𝑠,𝑡ℎ > 3
𝜌𝑔
> 0.02
𝜌𝑙
𝐷 ≥ 50 mm

References

[1], [2]

Examples

>>> C_Reader_Harris_Gallagher_wet_venturi_tube(mg=5.31926, ml=5.31926/2,


... rhog=50.0, rhol=800., D=.1, Do=.06, H=1)
0.9754210845876333

fluids.flow_meter.dP_Reader_Harris_Gallagher_wet_venturi_tube(D, Do, P1, P2, ml,


mg, rhol, rhog,
H=1)
Calculates the non-recoverable pressure drop of a wet gas venturi nozzle based on the pressure drop and the
geometry of the venturi nozzle, the mass flow rates of liquid and gas through it, the densities of the vapor and
liquid phase, and an adjustable coefficient H.
∆¯ 𝜔
𝑌 = − 0.0896 − 0.48𝛽 9
∆𝑃
[︂ ]︂
𝜌1,𝑔 𝐹 𝑟𝑔𝑎𝑠
𝑌𝑚𝑎𝑥 = 0.61 exp −11 − 0.045
𝜌𝑙 𝐻
[︂ (︂ )︂]︂
𝑌 −0.28𝐹 𝑟𝑔𝑎𝑠
= 1 − exp −35𝑋 0.75 exp
𝑌𝑚𝑎𝑥 𝐻
(︂ )︂ √︂
𝑚𝑙 𝜌1,𝑔
𝑋=
𝑚𝑔 𝜌𝑙
𝑣𝑔𝑎𝑠 𝜌1,𝑔 4𝑚𝑔 𝜌1,𝑔
√︂ √︂
𝐹 𝑟gas, densiometric = √ = √
𝑔𝐷 𝜌𝑙 − 𝜌1,𝑔 𝜌1,𝑔 𝜋𝐷 𝑔𝐷 𝜌𝑙 − 𝜌1,𝑔
2

2.8. Orifice plates, flow nozzles, Venturi tubes, cone and wedge meters (fluids.flow_meter) 197
Fluids Documentation, Release 0.1

Parameters
D [float] Upstream internal pipe diameter, [m]
Do [float] Diameter of venturi tube at flow conditions, [m]
P1 [float] Static pressure of fluid upstream of venturi tube at the cross-section of the pressure
tap, [Pa]
P2 [float] Static pressure of fluid downstream of venturi tube at the cross- section of the pressure
tap, [Pa]
ml [float] Mass flow rate of liquid through the venturi tube, [kg/s]
mg [float] Mass flow rate of gas through the venturi tube, [kg/s]
rhol [float] Density of liquid at P1, [kg/m^3]
rhog [float] Density of gas at P1, [kg/m^3]
H [float, optional] A surface-tension effect coefficient used to adjust for different fluids, (1 for
a hydrocarbon liquid, 1.35 for water, 0.79 for water in steam) [-]
Returns
C [float] Coefficient of discharge of the wet gas venturi tube flow meter (includes flow rate of
gas ONLY), [-]

Notes

The model was first published in [1], and became ISO 11583 later.

References

[1], [2]

Examples

>>> dP_Reader_Harris_Gallagher_wet_venturi_tube(D=.1, Do=.06, H=1,


... P1=6E6, P2=6E6-5E4, ml=5.31926/2, mg=5.31926, rhog=50.0, rhol=800.,)
16957.43843129572

fluids.flow_meter.differential_pressure_meter_C_epsilon(D, D2, m, P1, P2, rho, mu,


k, meter_type, taps=None)
Calculates the discharge coefficient and expansibility of a flow meter given the mass flow rate, the upstream
pressure, the second pressure value, and the orifice diameter for a differential pressure flow meter based on the
geometry of the meter, measured pressures of the meter, and the density, viscosity, and isentropic exponent of
the fluid.
Parameters
D [float] Upstream internal pipe diameter, [m]
D2 [float] Diameter of orifice, or venturi meter orifice, or flow tube orifice, or cone meter end
diameter, or wedge meter fluid flow height, [m]
m [float] Mass flow rate of fluid through the flow meter, [kg/s]
P1 [float] Static pressure of fluid upstream of differential pressure meter at the cross-section of
the pressure tap, [Pa]

198 Chapter 2. API Reference


Fluids Documentation, Release 0.1

P2 [float] Static pressure of fluid downstream of differential pressure meter or at the prescribed
location (varies by type of meter) [Pa]
rho [float] Density of fluid at P1, [kg/m^3]
mu [float] Viscosity of fluid at P1, [Pa*s]
k [float] Isentropic exponent of fluid, [-]
meter_type [str] One of (‘ISO 5167 orifice’, ‘long radius nozzle’, ‘ISA 1932 nozzle’, ‘venuri
nozzle’, ‘as cast convergent venturi tube’, ‘machined convergent venturi tube’, ‘rough
welded convergent venturi tube’, ‘cone meter’, ‘wedge meter’), [-]
taps [str, optional] The orientation of the taps; one of ‘corner’, ‘flange’, ‘D’, or ‘D/2’; applies
for orifice meters only, [-]
Returns
C [float] Coefficient of discharge of the specified flow meter type at the specified conditions, [-]
expansibility [float] Expansibility factor (1 for incompressible fluids, less than 1 for real fluids),
[-]

Notes

This function should be called by an outer loop when solving for a variable.

Examples

>>> differential_pressure_meter_C_epsilon(D=0.07366, D2=0.05, P1=200000.0,


... P2=183000.0, rho=999.1, mu=0.0011, k=1.33, m=7.702338035732168,
... meter_type='ISO 5167 orifice', taps='D')
(0.6151252900244296, 0.9711026966676307)

fluids.flow_meter.differential_pressure_meter_beta(D, D2, meter_type)


Calculates the beta ratio of a differential pressure meter.
Parameters
D [float] Upstream internal pipe diameter, [m]
D2 [float] Diameter of orifice, or venturi meter orifice, or flow tube orifice, or cone meter end
diameter, or wedge meter fluid flow height, [m]
meter_type [str] One of (‘ISO 5167 orifice’, ‘long radius nozzle’, ‘ISA 1932 nozzle’, ‘venuri
nozzle’, ‘as cast convergent venturi tube’, ‘machined convergent venturi tube’, ‘rough
welded convergent venturi tube’, ‘cone meter’, ‘wedge meter’), [-]
Returns
beta [float] Differential pressure meter diameter ratio, [-]

Examples

>>> differential_pressure_meter_beta(D=0.2575, D2=0.184,


... meter_type='cone meter')
0.6995709873957624

2.8. Orifice plates, flow nozzles, Venturi tubes, cone and wedge meters (fluids.flow_meter) 199
Fluids Documentation, Release 0.1

2.9 Friction factor and pipe roughness (fluids.friction)

fluids.friction.friction_factor(Re, eD=0, Method=’Clamond’, Darcy=True, AvailableMeth-


ods=False)
Calculates friction factor. Uses a specified method, or automatically picks one from the dictionary of available
methods. 29 approximations are available as well as the direct solution, described in the table below. The default
is to use the exact solution. Can also be accessed under the name fd.
For Re < 2040, [1] the laminar solution is always returned, regardless of selected method.
Parameters
Re [float] Reynolds number, [-]
eD [float, optional] Relative roughness of the wall, [-]
Returns
f [float] Friction factor, [-]
methods [list, only returned if AvailableMethods == True] List of methods which claim to be
valid for the range of Re and eD given
Other Parameters
Method [string, optional] A string of the function name to use
Darcy [bool, optional] If False, will return fanning friction factor, 1/4 of the Darcy value
AvailableMethods [bool, optional] If True, function will consider which methods claim to be
valid for the range of Re and eD given
See also:

Colebrook
Clamond

200 Chapter 2. API Reference


Fluids Documentation, Release 0.1

Notes

Nice name Re min Re max Re Default 𝜖/𝐷 Min 𝜖/𝐷 Max 𝜖/𝐷 Default
Clamond 0 None None 0 None None
Rao Kumar 2007 None None None None None None
Eck 1973 None None None None None None
Jain 1976 5000 1.0E+7 None 4.0E-5 0.05 None
Avci Karagoz 2009 None None None None None None
Swamee Jain 1976 5000 1.0E+8 None 1.0E-6 0.05 None
Churchill 1977 None None None None None None
Brkic 2011 1 None None None None None None
Chen 1979 4000 4.0E+8 None 1.0E-7 0.05 None
Round 1980 4000 4.0E+8 None 0 0.05 None
Papaevangelo 2010 10000 1.0E+7 None 1.0E-5 0.001 None
Fang 2011 3000 1.0E+8 None 0 0.05 None
Shacham 1980 4000 4.0E+8 None None None None
Barr 1981 None None None None None None
Churchill 1973 None None None None None None
Moody 4000 1.0E+8 None 0 1 None
Zigrang Sylvester 1 4000 1.0E+8 None 4.0E-5 0.05 None
Zigrang Sylvester 2 4000 1.0E+8 None 4.0E-5 0.05 None
Buzzelli 2008 None None None None None None
Haaland 4000 1.0E+8 None 1.0E-6 0.05 None
Serghides 1 None None None None None None
Serghides 2 None None None None None None
Tsal 1989 4000 1.0E+8 None 0 0.05 None
Alshul 1952 None None None None None None
Wood 1966 4000 5.0E+7 None 1.0E-5 0.04 None
Manadilli 1997 5245 1.0E+8 None 0 0.05 None
Brkic 2011 2 None None None None None None
Romeo 2002 3000 1.5E+8 None 0 0.05 None
Sonnad Goudar 2006 4000 1.0E+8 None 1.0E-6 0.05 None

References

[1]

Examples

>>> friction_factor(Re=1E5, eD=1E-4)


0.01851386607747165

fluids.friction.friction_factor_curved(Re, Di, Dc, roughness=0.0, Method=None,


Rec_method=’Schmidt’, laminar_method=’Schmidt
laminar’, turbulent_method=’Schmidt turbulent’,
Darcy=True, AvailableMethods=False)
Calculates friction factor fluid flowing in a curved pipe or helical coil, supporting both laminar and turbulent
regimes. Selects the appropriate regime by default, and has default correlation choices. Optionally, a specific
correlation can be specified with the Method keyword.
The default correlations are those recommended in [1], and are believed to be the best publicly available.

2.9. Friction factor and pipe roughness (fluids.friction) 201


Fluids Documentation, Release 0.1

Parameters
Re [float] Reynolds number with D=Di, [-]
Di [float] Inner diameter of the tube making up the coil, [m]
Dc [float] Diameter of the helix/coil measured from the center of the tube on one side to the
center of the tube on the other side, [m]
roughness [float, optional] Roughness of pipe wall [m]
Returns
f [float] Friction factor, [-]
methods [list, only returned if AvailableMethods == True] List of methods in the regime the
specified Re is in at the given Di and Dc.
Other Parameters
Method [string, optional] A string of the function name to use, overriding the default turbulent/
laminar selection.
Rec_method [str, optional] Critical Reynolds number transition criteria; one of [‘Seth Stahel’,
‘Ito’, ‘Kubair Kuloor’, ‘Kutateladze Borishanskii’, ‘Schmidt’, ‘Srinivasan’]; the default is
‘Schmidt’.
laminar_method [str, optional] Friction factor correlation for the laminar regime; one of
[‘White’, ‘Mori Nakayama laminar’, ‘Schmidt laminar’]; the default is ‘Schmidt laminar’.
turbulent_method [str, optional] Friction factor correlation for the turbulent regime; one of
[‘Guo’, ‘Ju’, ‘Schmidt turbulent’, ‘Prasad’, ‘Mandel Nigam’, ‘Mori Nakayama turbulent’,
‘Czop’]; the default is ‘Schmidt turbulent’.
Darcy [bool, optional] If False, will return fanning friction factor, 1/4 of the Darcy value
AvailableMethods [bool, optional] If True, function will consider which methods claim to be
valid for the range of Re and eD given
See also:

fluids.geometry.HelicalCoil
helical_turbulent_fd_Schmidt
helical_turbulent_fd_Srinivasan
helical_turbulent_fd_Mandal_Nigam
helical_turbulent_fd_Ju
helical_turbulent_fd_Guo
helical_turbulent_fd_Czop
helical_turbulent_fd_Prasad
helical_turbulent_fd_Mori_Nakayama
helical_laminar_fd_Schmidt
helical_laminar_fd_Mori_Nakayama
helical_laminar_fd_White
helical_transition_Re_Schmidt
helical_transition_Re_Srinivasan

202 Chapter 2. API Reference


Fluids Documentation, Release 0.1

helical_transition_Re_Kutateladze_Borishanskii
helical_transition_Re_Kubair_Kuloor
helical_transition_Re_Ito
helical_transition_Re_Seth_Stahel

Notes

The range of acccuracy of these correlations is much than that in a straight pipe.

References

[1]

Examples

>>> friction_factor_curved(Re=1E5, Di=0.02, Dc=0.5)


0.022961996738387523

fluids.friction.Colebrook(Re, eD, tol=None)


Calculates Darcy friction factor using the Colebrook equation originally published in [1]. Normally, this function
uses an exact solution to the Colebrook equation, derived with a CAS. A numerical can also be used.
(︂ )︂
1 𝜖/𝐷 2.51
√ = −2 log10 + √
𝑓 3.7 Re 𝑓
Parameters
Re [float] Reynolds number, [-]
eD [float] Relative roughness, [-]
tol [float, optional] None for analytical solution (default); user specified value to use the nu-
merical solution; 0 to use mpmath and provide a bit-correct exact solution to the maximum
fidelity of the system’s float; -1 to apply the Clamond solution where appropriate for greater
speed (Re > 10), [-]
Returns
fd [float] Darcy friction factor [-]

Notes

The solution is as follows:


ln(10)2 · 3.72 · 2.512
𝑓𝑑 = (︂

[︂ √︁ ]︂)︂
log(10)𝜖/𝐷 · Re − 2 · 2.51 · 3.7 · lambertW log( 10) 10 ( 𝜖Re
2.51·3.7𝐷 ) 2
· Re /2.512

Some effort to optimize this function has been made. The lambertw function from scipy is used, and is defined
to solve the specific function:

𝑦 = 𝑥 exp(𝑥)
lambertW(𝑦) = 𝑥

2.9. Friction factor and pipe roughness (fluids.friction) 203


Fluids Documentation, Release 0.1

This is relatively slow despite its explicit form as it uses the mathematical function lambertw which is expensive
to compute.
For high relative roughness and Reynolds numbers, an OverflowError can be encountered in the solution of this
equation. The numerical solution is then used.
The numerical solution provides values which are generally within an rtol of 1E-12 to the analytical solution;
however, due to the different rounding order, it is possible for them to be as different as rtol 1E-5 or higher. The
1E-5 accuracy regime has been tested and confirmed numerically for hundreds of thousand of points within the
region 1E-12 < Re < 1E12 and 0 < eD < 0.1.
The numerical solution attempts the secant method using scipy’s newton solver, and in the event of nonconver-
gence, attempts the fsolve solver as well. An initial guess is provided via the Clamond function.
The numerical and analytical solution take similar amounts of time; the mpmath solution used when tol=0 is
approximately 45 times slower. This function takes approximately 8 us normally.

References

[1]

Examples

>>> Colebrook(1E5, 1E-4)


0.018513866077471648

fluids.friction.Clamond(Re, eD, fast=False)


Calculates Darcy friction factor using a solution accurate to almost machine precision. Recommended very
strongly. For details of the algorithm, see [1].
Parameters
Re [float] Reynolds number, [-]
eD [float] Relative roughness, [-]
fast [bool, optional] If true, performs only one iteration, which gives roughly half the number
of decimals of accuracy, [-]
Returns
fd [float] Darcy friction factor [-]

Notes

This is a highly optimized function, 4 times faster than the solution using the LambertW function, and faster
than many other approximations which are much less accurate.
The code used here is only slightly modified than that in [1], for further performance improvements.
For 10 < Re < 1E12, and 0 < eD < 0.01, this equation has been confirmed numerically to provide a solution
to the Colebrook equation accurate to an rtol of 1E-9 or better - the same level of accuracy as the analytical
solution to the Colebrook equation due to floating point precision.
Comparing this to the numerical solution of the Colebrook equation, identical values are given accurate to an
rtol of 1E-9 for 10 < Re < 1E100, and 0 < eD < 1 and beyond.
However, for values of Re under 10, different answers from the Colebrook equation appear and then quickly a
ValueError is raised.

204 Chapter 2. API Reference


Fluids Documentation, Release 0.1

References

[1]

Examples

>>> Clamond(1E5, 1E-4)


0.01851386607747165

fluids.friction.friction_laminar(Re)
Calculates Darcy friction factor for laminar flow, as shown in [1] or anywhere else.
64
𝑓𝑑 =
𝑅𝑒
Parameters
Re [float] Reynolds number, [-]
Returns
fd [float] Darcy friction factor [-]

Notes

For round pipes, this valid for 𝑅𝑒 ≈< 2040.


Results in [2] show that this theoretical solution calculates too low of friction factors from Re = 10 and up, with
an average deviation of 4%.

References

[1], [2]

Examples

>>> friction_laminar(128)
0.5

fluids.friction.one_phase_dP(m, rho, mu, D, roughness=0, L=1, Method=None)


Calculates single-phase pressure drop. This is a wrapper around other methods.
Parameters
m [float] Mass flow rate of fluid, [kg/s]
rho [float] Density of fluid, [kg/m^3]
mu [float] Viscosity of fluid, [Pa*s]
D [float] Diameter of pipe, [m]
roughness [float, optional] Roughness of pipe for use in calculating friction factor, [m]
L [float, optional] Length of pipe, [m]
Method [string, optional] A string of the function name to use

2.9. Friction factor and pipe roughness (fluids.friction) 205


Fluids Documentation, Release 0.1

Returns
dP [float] Pressure drop of the single-phase flow, [Pa]

References

[1]

Examples

>>> one_phase_dP(10.0, 1000, 1E-5, .1, L=1)


63.43447321097365

fluids.friction.one_phase_dP_gravitational(angle, rho, L=1.0, g=9.80665)


This function handles calculation of one-phase liquid-gas pressure drop due to gravitation for flow inside chan-
nels. This is either a differential calculation for a segment with an infinitesimal difference in elevation (if ‘L‘=1
or a discrete calculation.
(︂ )︂
𝑑𝑃
− = 𝜌𝑔 sin 𝜃
𝑑𝑧 𝑔𝑟𝑎𝑣

− (∆𝑃 )𝑔𝑟𝑎𝑣 = 𝐿𝜌𝑔 sin 𝜃


Parameters
angle [float] The angle of the pipe with respect to the horizontal, [degrees]
rho [float] Fluid density, [kg/m^3]
L [float, optional] Length of pipe, [m]
g [float, optional] Acceleration due to gravity, [m/s^2]
Returns
dP [float] Gravitational component of pressure drop for one-phase flow, [Pa/m] or [Pa]

Examples

>>> one_phase_dP_gravitational(angle=90, rho=2.6)


25.49729
>>> one_phase_dP_gravitational(angle=90, rho=2.6, L=4)
101.98916

fluids.friction.one_phase_dP_dz_acceleration(m, D, rho, dv_dP, dP_dL, dA_dL)


This function handles calculation of one-phase fluid pressure drop due to acceleration for flow inside channels.
This is a continuous calculation, providing the differential in pressure per unit length and should be called as
part of an integration routine ([1], [2]_).

𝐺2 1 𝜕𝐴
(︂ )︂ [︂ ]︂
𝜕𝑃 2 𝜕𝑃 𝜕(1/𝜌)
− =𝐺 −
𝜕𝐿 𝐴 𝜕𝐿 𝜕𝑃 𝜌 𝐴 𝜕𝐿

Parameters
m [float] Mass flow rate of fluid, [kg/s]
D [float] Diameter of pipe, [m]

206 Chapter 2. API Reference


Fluids Documentation, Release 0.1

rho [float] Fluid density, [kg/m^3]


dv_dP [float] Derivative of mass specific volume of the fluid with respect to pressure,
[m^3/(kg*Pa)]
dP_dL [float] Pressure drop per unit length of pipe, [Pa/m]
dA_dL [float] Change in area of pipe per unit length of pipe, [m^2/m]
Returns
dP_dz [float] Acceleration component of pressure drop for one-phase flow, [Pa/m]

Notes

The value returned here is positive for pressure loss and negative for pressure increase.
As dP_dL is not known, this equation is normally used in a more complicated way than this function provides;
this method can be used to check the consistency of that routine.

References

[1]

Examples

>>> one_phase_dP_dz_acceleration(m=1, D=0.1, rho=827.1, dv_dP=-1.1E-5,


... dP_dL=5E5, dA_dL=0.0001)
89162.89116373913

fluids.friction.one_phase_dP_acceleration(m, D, rho_o, rho_i)


This function handles calculation of one-phase fluid pressure drop due to acceleration for flow inside channels.
This is a discrete calculation, providing the total differential in pressure for a given length and should be called
as part of a segment solver routine.
(︂ )︂ [︂ ]︂
𝑑𝑃 𝑑 1 1
− = 𝐺2 −
𝑑𝑧 𝑎𝑐𝑐 𝑑𝑧 𝜌𝑜 𝜌𝑖

Parameters
m [float] Mass flow rate of fluid, [kg/s]
D [float] Diameter of pipe, [m]
rho_o [float] Fluid density out, [kg/m^3]
rho_i [float] Fluid density int, [kg/m^3]
Returns
dP [float] Acceleration component of pressure drop for one-phase flow, [Pa]

Examples

>>> one_phase_dP_acceleration(m=1, D=0.1, rho_o=827.1, rho_i=830)


0.06848289670840459

2.9. Friction factor and pipe roughness (fluids.friction) 207


Fluids Documentation, Release 0.1

fluids.friction.transmission_factor(fd=None, F=None)
Calculates either transmission factor from Darcy friction factor, or Darcy friction factor from the transmission
factor. Raises an exception if neither input is given.
Transmission factor is a term used in compressible gas flow in pipelines.
2
𝐹 =√
𝑓𝑑
4
𝑓𝑑 =
𝐹2
Parameters
fd [float, optional] Darcy friction factor, [-]
F [float, optional] Transmission factor, [-]
Returns
fd or F [float] Darcy friction factor or transmission factor [-]

References

[1]

Examples

>>> transmission_factor(fd=0.0185)
14.704292441876154

>>> transmission_factor(F=20)
0.01

fluids.friction.material_roughness(ID, D=None, optimism=None)


Searches through either a dict of clean pipe materials or used pipe materials and conditions and returns the ID
of the nearest material. Search is performed with either the standard library’s difflib or with the fuzzywuzzy
module if available.
Parameters
ID [str] Search terms for matching pipe materials, [-]
D [float, optional] Diameter of desired pipe; used only if ID is in [2], [m]
optimism [bool, optional] For values in [1], a minimum, maximum, and average value is nor-
mally given; if True, returns the minimum roughness; if False, the maximum roughness; and
if None, returns the average roughness. Most entries do not have all three values, so fallback
logic to return the closest entry is used, [-]
Returns
roughness [float] Retrieved or calculated roughness, [m]

References

[1], [2]

208 Chapter 2. API Reference


Fluids Documentation, Release 0.1

Examples

>>> material_roughness('condensate pipes')


0.0005

fluids.friction.nearest_material_roughness(name, clean=None)
Searches through either a dict of clean pipe materials or used pipe materials and conditions and returns the ID
of the nearest material. Search is performed with either the standard library’s difflib or with the fuzzywuzzy
module if available.
Parameters
name [str] Search term for matching pipe materials
clean [bool, optional] If True, search only clean pipe database; if False, search only the dirty
database; if None, search both
Returns
ID [str] String for lookup of roughness of a pipe, in either roughness_clean_dict or
HHR_roughness depending on if clean is True, [-]

References

[1]

Examples

>>> nearest_material_roughness('condensate pipes', clean=False)


'Seamless steel tubes, Condensate pipes in open systems or periodically operated
˓→steam pipelines'

fluids.friction.roughness_Farshad(ID=None, D=None, coeffs=None)


Calculates of retrieves the roughness of a pipe based on the work of [1]. This function will return an average
value for pipes of a given material, or if diameter is provided, will calculate one specifically for the pipe inner
diameter according to the following expression with constants A and B:

𝜖 = 𝐴 · 𝐷𝐵+1

Please not that A has units of inches, and B requires D to be in inches as well.
The list of supported materials is as follows:
• ‘Plastic coated’
• ‘Carbon steel, honed bare’
• ‘Cr13, electropolished bare’
• ‘Cement lining’
• ‘Carbon steel, bare’
• ‘Fiberglass lining’
• ‘Cr13, bare’
If coeffs and D are given, the custom coefficients for the equation as given by the user will be used and ID is not
required.

2.9. Friction factor and pipe roughness (fluids.friction) 209


Fluids Documentation, Release 0.1

Parameters
ID [str, optional] Name of pipe material from above list
D [float, optional] Actual inner diameter of pipe, [m]
coeffs [tuple, optional] (A, B) Coefficients to use directly, instead of looking them up; they are
actually dimensional, in the forms (inch^-B, -) but only coefficients with those dimensions
are available [-]
Returns
epsilon [float] Roughness of pipe [m]

Notes

The diameter-dependent form provides lower roughness values for larger diameters.
The measurements were based on DIN 4768/1 (1987), using both a “Dektak ST Surface Profiler” and a “Hommel
Tester T1000”. Both instruments were found to be in agreement. A series of flow tests, in which pressure drop
directly measured, were performed as well, with nitrogen gas as an operating fluid. The accuracy of the data
from these tests is claimed to be within 1%.
Using those results, the authors back-calculated what relative roughness values would be necessary to produce
the observed pressure drops. The average difference between this back-calculated roughness and the measured
roughness was 6.75%.
For microchannels, this model will predict roughness much larger than the actual channel diameter.

References

[1]

Examples

>>> roughness_Farshad('Cr13, bare', 0.05)


5.3141677781137006e-05

fluids.friction.Moody(Re, eD)
Calculates Darcy friction factor using the method in Moody (1947) as shown in [1] and originally in [2].
[︃ )︂1/3 ]︃
106
(︂
−3 4 𝜖
𝑓𝑓 = 1.375 × 10 1 + 2 × 10 +
𝐷 𝑅𝑒

Parameters
Re [float] Reynolds number, [-]
eD [float] Relative roughness, [-]
Returns
fd [float] Darcy friction factor [-]

Notes

Range is Re >= 4E3 and Re <= 1E8; eD >= 0 < 0.01.

210 Chapter 2. API Reference


Fluids Documentation, Release 0.1

References

[1], [2]

Examples

>>> Moody(1E5, 1E-4)


0.01809185666808665

fluids.friction.Alshul_1952(Re, eD)
Calculates Darcy friction factor using the method in Alshul (1952) as shown in [1].
(︂ )︂0.25
68 𝜖
𝑓𝑑 = 0.11 +
𝑅𝑒 𝐷

Parameters
Re [float] Reynolds number, [-]
eD [float] Relative roughness, [-]
Returns
fd [float] Darcy friction factor [-]

Notes

No range of validity specified for this equation.

References

[1]

Examples

>>> Alshul_1952(1E5, 1E-4)


0.018382997825686878

fluids.friction.Wood_1966(Re, eD)
Calculates Darcy friction factor using the method in Wood (1966) [2] as shown in [1].
𝜖 0.225 𝜖 𝜖
𝑓𝑑 = 0.094( ) + 0.53( ) + 88( )0.4 𝑅𝑒−𝐴1
𝐷 𝐷 𝐷
𝜖 0.134
𝐴1 = 1.62( )
𝐷
Parameters
Re [float] Reynolds number, [-]
eD [float] Relative roughness, [-]
Returns
fd [float] Darcy friction factor [-]

2.9. Friction factor and pipe roughness (fluids.friction) 211


Fluids Documentation, Release 0.1

Notes

Range is 4E3 <= Re <= 5E7; 1E-5 <= eD <= 4E-2.

References

[1], [2]

Examples

>>> Wood_1966(1E5, 1E-4)


0.021587570560090762

fluids.friction.Churchill_1973(Re, eD)
Calculates Darcy friction factor using the method in Churchill (1973) [2] as shown in [1]
[︂ ]︂
1 𝜖 7 0.9
√ = −2 log +( )
𝑓𝑑 3.7𝐷 𝑅𝑒
Parameters
Re [float] Reynolds number, [-]
eD [float] Relative roughness, [-]
Returns
fd [float] Darcy friction factor [-]

Notes

No range of validity specified for this equation.

References

[1], [2]

Examples

>>> Churchill_1973(1E5, 1E-4)


0.01846708694482294

fluids.friction.Eck_1973(Re, eD)
Calculates Darcy friction factor using the method in Eck (1973) [2] as shown in [1].
[︂ ]︂
1 𝜖 15
√ = −2 log +
𝑓𝑑 3.715𝐷 𝑅𝑒
Parameters
Re [float] Reynolds number, [-]
eD [float] Relative roughness, [-]
Returns
fd [float] Darcy friction factor [-]

212 Chapter 2. API Reference


Fluids Documentation, Release 0.1

Notes

No range of validity specified for this equation.

References

[1], [2]

Examples

>>> Eck_1973(1E5, 1E-4)


0.01775666973488564

fluids.friction.Jain_1976(Re, eD)
Calculates Darcy friction factor using the method in Jain (1976) [2] as shown in [1].
[︃ (︂ )︂0.9 ]︃
1 𝜖 29.843
√︀ = 2.28 − 4 log +
𝑓𝑓 𝐷 𝑅𝑒

Parameters
Re [float] Reynolds number, [-]
eD [float] Relative roughness, [-]
Returns
fd [float] Darcy friction factor [-]

Notes

Range is 5E3 <= Re <= 1E7; 4E-5 <= eD <= 5E-2.

References

[1], [2]

Examples

>>> Jain_1976(1E5, 1E-4)


0.018436560312693327

fluids.friction.Swamee_Jain_1976(Re, eD)
Calculates Darcy friction factor using the method in Swamee and Jain (1976) [2] as shown in [1].
[︃(︂ )︂0.9 ]︃
1 6.97 𝜖
√︀ = −4 log +( )
𝑓𝑓 𝑅𝑒 3.7𝐷

Parameters
Re [float] Reynolds number, [-]
eD [float] Relative roughness, [-]

2.9. Friction factor and pipe roughness (fluids.friction) 213


Fluids Documentation, Release 0.1

Returns
fd [float] Darcy friction factor [-]

Notes

Range is 5E3 <= Re <= 1E8; 1E-6 <= eD <= 5E-2.

References

[1], [2]

Examples

>>> Swamee_Jain_1976(1E5, 1E-4)


0.018452424431901808

fluids.friction.Churchill_1977(Re, eD)
Calculates Darcy friction factor using the method in Churchill and (1977) [2] as shown in [1].
[︂ ]︂1/12
8 12 −1.5
𝑓𝑓 = 2 ( ) + (𝐴2 + 𝐴3 )
𝑅𝑒
{︂ [︂ ]︂}︂16
7 0.9 𝜖
𝐴2 = 2.457 ln ( ) + 0.27
𝑅𝑒 𝐷
(︂ )︂16
37530
𝐴3 =
𝑅𝑒
Parameters
Re [float] Reynolds number, [-]
eD [float] Relative roughness, [-]
Returns
fd [float] Darcy friction factor [-]

Notes

No range of validity specified for this equation.

References

[1], [2]

214 Chapter 2. API Reference


Fluids Documentation, Release 0.1

Examples

>>> Churchill_1977(1E5, 1E-4)


0.018462624566280075

fluids.friction.Chen_1979(Re, eD)
Calculates Darcy friction factor using the method in Chen (1979) [2] as shown in [1].
[︂ ]︂
1 𝜖 5.0452
√︀ = −4 log − log 𝐴4
𝑓𝑓 3.7065𝐷 𝑅𝑒
)︂0.8981
(𝜖/𝐷)1.1098
(︂
7.149
𝐴4 = +
2.8257 𝑅𝑒
Parameters
Re [float] Reynolds number, [-]
eD [float] Relative roughness, [-]
Returns
fd [float] Darcy friction factor [-]

Notes

Range is 4E3 <= Re <= 4E8; 1E-7 <= eD <= 5E-2.

References

[1], [2]

Examples

>>> Chen_1979(1E5, 1E-4)


0.018552817507472126

fluids.friction.Round_1980(Re, eD)
Calculates Darcy friction factor using the method in Round (1980) [2] as shown in [1].
[︂ ]︂
1 𝑅𝑒
√︀ = −3.6 log
𝑓𝑓 0.135𝑅𝑒 𝐷𝜖 + 6.5

Parameters
Re [float] Reynolds number, [-]
eD [float] Relative roughness, [-]
Returns
fd [float] Darcy friction factor [-]

Notes

Range is 4E3 <= Re <= 4E8; 0 <= eD <= 5E-2.

2.9. Friction factor and pipe roughness (fluids.friction) 215


Fluids Documentation, Release 0.1

References

[1], [2]

Examples

>>> Round_1980(1E5, 1E-4)


0.01831475391244354

fluids.friction.Shacham_1980(Re, eD)
Calculates Darcy friction factor using the method in Shacham (1980) [2] as shown in [1].
[︂ (︂ )︂]︂
1 𝜖 5.02 𝜖 14.5
√︀ = −4 log − log +
𝑓𝑓 3.7𝐷 𝑅𝑒 3.7𝐷 𝑅𝑒

Parameters
Re [float] Reynolds number, [-]
eD [float] Relative roughness, [-]
Returns
fd [float] Darcy friction factor [-]

Notes

Range is 4E3 <= Re <= 4E8

References

[1], [2]

Examples

>>> Shacham_1980(1E5, 1E-4)


0.01860641215097828

fluids.friction.Barr_1981(Re, eD)
Calculates Darcy friction factor using the method in Barr (1981) [2] as shown in [1].
⎧ ⎫
𝑅𝑒
1 ⎨ 𝜖 4.518 log( 7 ) ⎬
√ = −2 log + [︁ ]︁
𝑓𝑑 ⎩ 3.7𝐷 𝑅𝑒 1 + 𝑅𝑒0.52 𝜖 0.7 ⎭ (︀ )︀
29 𝐷

Parameters
Re [float] Reynolds number, [-]
eD [float] Relative roughness, [-]
Returns
fd [float] Darcy friction factor [-]

216 Chapter 2. API Reference


Fluids Documentation, Release 0.1

Notes

No range of validity specified for this equation.

References

[1], [2]

Examples

>>> Barr_1981(1E5, 1E-4)


0.01849836032779929

fluids.friction.Zigrang_Sylvester_1(Re, eD)
Calculates Darcy friction factor using the method in Zigrang and Sylvester (1982) [2] as shown in [1].
[︂ ]︂
1 𝜖 5.02
√︀ = −4 log − log 𝐴5
𝑓𝑓 3.7𝐷 𝑅𝑒
𝜖 13
𝐴5 = +
3.7𝐷 𝑅𝑒
Parameters
Re [float] Reynolds number, [-]
eD [float] Relative roughness, [-]
Returns
fd [float] Darcy friction factor [-]

Notes

Range is 4E3 <= Re <= 1E8; 4E-5 <= eD <= 5E-2.

References

[1], [2]

Examples

>>> Zigrang_Sylvester_1(1E5, 1E-4)


0.018646892425980794

fluids.friction.Zigrang_Sylvester_2(Re, eD)
Calculates Darcy friction factor using the second method in Zigrang and Sylvester (1982) [2] as shown in
[1].

2.9. Friction factor and pipe roughness (fluids.friction) 217


Fluids Documentation, Release 0.1

[︂ ]︂
1 𝜖 5.02
√︀ = −4 log − log 𝐴6
𝑓𝑓 3.7𝐷 𝑅𝑒
𝜖 5.02
𝐴6 = − log 𝐴5
3.7𝐷 𝑅𝑒
𝜖 13
𝐴5 = +
3.7𝐷 𝑅𝑒
Parameters
Re [float] Reynolds number, [-]
eD [float] Relative roughness, [-]
Returns
fd [float] Darcy friction factor [-]

Notes

Range is 4E3 <= Re <= 1E8; 4E-5 <= eD <= 5E-2

References

[1], [2]

Examples

>>> Zigrang_Sylvester_2(1E5, 1E-4)


0.01850021312358548

fluids.friction.Haaland(Re, eD)
Calculates Darcy friction factor using the method in Haaland (1983) [2] as shown in [1].
(︃ [︃(︂ )︂1.11 ]︃)︃−2
𝜖/𝐷 6.9
𝑓𝑓 = −1.8 log10 +
3.7 𝑅𝑒
Parameters
Re [float] Reynolds number, [-]
eD [float] Relative roughness, [-]
Returns
fd [float] Darcy friction factor [-]

Notes

Range is 4E3 <= Re <= 1E8; 1E-6 <= eD <= 5E-2

References

[1], [2]

218 Chapter 2. API Reference


Fluids Documentation, Release 0.1

Examples

>>> Haaland(1E5, 1E-4)


0.018265053014793857

fluids.friction.Serghides_1(Re, eD)
Calculates Darcy friction factor using the method in Serghides (1984) [2] as shown in [1].
]︂−2
(𝐵 − 𝐴)2
[︂
𝑓 = 𝐴−
𝐶 − 2𝐵 + 𝐴
[︂ ]︂
𝜖/𝐷 12
𝐴 = −2 log10 +
3.7 𝑅𝑒
[︂ ]︂
𝜖/𝐷 2.51𝐴
𝐵 = −2 log10 +
3.7 𝑅𝑒
[︂ ]︂
𝜖/𝐷 2.51𝐵
𝐶 = −2 log10 +
3.7 𝑅𝑒
Parameters
Re [float] Reynolds number, [-]
eD [float] Relative roughness, [-]
Returns
fd [float] Darcy friction factor [-]

Notes

No range of validity specified for this equation.

References

[1], [2]

Examples

>>> Serghides_1(1E5, 1E-4)


0.01851358983180063

fluids.friction.Serghides_2(Re, eD)
Calculates Darcy friction factor using the method in Serghides (1984) [2] as shown in [1].
]︂−2
(𝐴 − 4.781)2
[︂
𝑓𝑑 = 4.781 −
𝐵 − 2𝐴 + 4.781
[︂ ]︂
𝜖/𝐷 12
𝐴 = −2 log10 +
3.7 𝑅𝑒
[︂ ]︂
𝜖/𝐷 2.51𝐴
𝐵 = −2 log10 +
3.7 𝑅𝑒
Parameters

2.9. Friction factor and pipe roughness (fluids.friction) 219


Fluids Documentation, Release 0.1

Re [float] Reynolds number, [-]


eD [float] Relative roughness, [-]
Returns
fd [float] Darcy friction factor [-]

Notes

No range of validity specified for this equation.

References

[1], [2]

Examples

>>> Serghides_2(1E5, 1E-4)


0.018486377560664482

fluids.friction.Tsal_1989(Re, eD)
Calculates Darcy friction factor using the method in Tsal (1989) [2] as shown in [1].
68 𝜖
𝐴 = 0.11( + )0.25
𝑅𝑒 𝐷
if 𝐴 >= 0.018 then fd = A;
if 𝐴 < 0.018 then 𝑓 𝑑 = 0.0028 + 0.85𝐴.
Parameters
Re [float] Reynolds number, [-]
eD [float] Relative roughness, [-]
Returns
fd [float] Darcy friction factor [-]

Notes

Range is 4E3 <= Re <= 1E8; 0 <= eD <= 5E-2

References

[1], [2]

Examples

>>> Tsal_1989(1E5, 1E-4)


0.018382997825686878

220 Chapter 2. API Reference


Fluids Documentation, Release 0.1

fluids.friction.Manadilli_1997(Re, eD)
Calculates Darcy friction factor using the method in Manadilli (1997) [2] as shown in [1].
[︂ ]︂
1 𝜖 95 96.82
√ = −2 log + −
𝑓𝑑 3.7𝐷 𝑅𝑒0.983 𝑅𝑒

Parameters
Re [float] Reynolds number, [-]
eD [float] Relative roughness, [-]
Returns
fd [float] Darcy friction factor [-]

Notes

Range is 5.245E3 <= Re <= 1E8; 0 <= eD <= 5E-2

References

[1], [2]

Examples

>>> Manadilli_1997(1E5, 1E-4)


0.01856964649724108

fluids.friction.Romeo_2002(Re, eD)
Calculates Darcy friction factor using the method in Romeo (2002) [2] as shown in [1].
{︃ [︃ (︃ (︂ )︂0.9345 )︃]︃}︃
1 𝜖 5.0272 𝜖 4.567 𝜖 0.9924 5.3326
√ = −2 log × × log − × log +
𝑓𝑑 3.7065𝐷 𝑅𝑒 3.827𝐷 𝑅𝑒 7.7918𝐷 208.815 + 𝑅𝑒

Parameters
Re [float] Reynolds number, [-]
eD [float] Relative roughness, [-]
Returns
fd [float] Darcy friction factor [-]

Notes

Range is 3E3 <= Re <= 1.5E8; 0 <= eD <= 5E-2

References

[1], [2]

2.9. Friction factor and pipe roughness (fluids.friction) 221


Fluids Documentation, Release 0.1

Examples

>>> Romeo_2002(1E5, 1E-4)


0.018530291219676177

fluids.friction.Sonnad_Goudar_2006(Re, eD)
Calculates Darcy friction factor using the method in Sonnad and Goudar (2006) [2] as shown in [1].
(︂ )︂
1 0.4587𝑅𝑒
√ = 0.8686 ln
𝑓𝑑 𝑆 𝑆/(𝑆+1)
𝜖
𝑆 = 0.1240 × × 𝑅𝑒 + ln(0.4587𝑅𝑒)
𝐷
Parameters
Re [float] Reynolds number, [-]
eD [float] Relative roughness, [-]
Returns
fd [float] Darcy friction factor [-]

Notes

Range is 4E3 <= Re <= 1E8; 1E-6 <= eD <= 5E-2

References

[1], [2]

Examples

>>> Sonnad_Goudar_2006(1E5, 1E-4)


0.0185971269898162

fluids.friction.Rao_Kumar_2007(Re, eD)
Calculates Darcy friction factor using the method in Rao and Kumar (2007) [2] as shown in [1].
(︃ )︃
1 (2 𝐷𝜖 )−1
√ = 2 log (︀ 0.444+0.135𝑅𝑒 )︀
𝑓𝑑 𝑅𝑒 𝛽
[︂ ]︂2
𝑅𝑒
𝛽 = 1 − 0.55 exp(−0.33 ln )
6.5
Parameters
Re [float] Reynolds number, [-]
eD [float] Relative roughness, [-]
Returns
fd [float] Darcy friction factor [-]

222 Chapter 2. API Reference


Fluids Documentation, Release 0.1

Notes

No range of validity specified for this equation. This equation is fit to original experimental friction factor data.
Accordingly, this equation should not be used unless appropriate consideration is given.

References

[1], [2]

Examples

>>> Rao_Kumar_2007(1E5, 1E-4)


0.01197759334600925

fluids.friction.Buzzelli_2008(Re, eD)
Calculates Darcy friction factor using the method in Buzzelli (2008) [2] as shown in [1].
[︃ ]︃
1 𝐵1 + 2 log( 𝐵
𝑅𝑒 )
2

√ = 𝐵1 −
𝑓𝑑 1 + 2.18
𝐵2

0.774 ln(𝑅𝑒) − 1.41


𝐵1 =
1 + 1.32 𝐷𝜖
√︀

𝜖
𝐵2 = 𝑅𝑒 + 2.51 × 𝐵1
3.7𝐷
Parameters
Re [float] Reynolds number, [-]
eD [float] Relative roughness, [-]
Returns
fd [float] Darcy friction factor [-]

Notes

No range of validity specified for this equation.

References

[1], [2]

Examples

>>> Buzzelli_2008(1E5, 1E-4)


0.018513948401365277

fluids.friction.Avci_Karagoz_2009(Re, eD)
Calculates Darcy friction factor using the method in Avci and Karagoz (2009) [2] as shown in [1].
6.4
𝑓𝐷 = {︀ )︀]︀}︀2.4
ln(𝑅𝑒) − ln 1 + 0.01𝑅𝑒 𝐷𝜖 1 + 10( 𝐷𝜖 )0.5
[︀ (︀

2.9. Friction factor and pipe roughness (fluids.friction) 223


Fluids Documentation, Release 0.1

Parameters
Re [float] Reynolds number, [-]
eD [float] Relative roughness, [-]
Returns
fd [float] Darcy friction factor [-]

Notes

No range of validity specified for this equation.

References

[1], [2]

Examples

>>> Avci_Karagoz_2009(1E5, 1E-4)


0.01857058061066499

fluids.friction.Papaevangelo_2010(Re, eD)
Calculates Darcy friction factor using the method in Papaevangelo (2010) [2] as shown in [1].

0.2479 − 0.0000947(7 − log 𝑅𝑒)4


𝑓𝐷 = [︀ (︀ 𝜖 )︀]︀2
log 3.615𝐷 + 𝑅𝑒7.366
0.9142

Parameters
Re [float] Reynolds number, [-]
eD [float] Relative roughness, [-]
Returns
fd [float] Darcy friction factor [-]

Notes

Range is 1E4 <= Re <= 1E7; 1E-5 <= eD <= 1E-3

References

[1], [2]

Examples

>>> Papaevangelo_2010(1E5, 1E-4)


0.015685600818488177

224 Chapter 2. API Reference


Fluids Documentation, Release 0.1

fluids.friction.Brkic_2011_1(Re, eD)
Calculates Darcy friction factor using the method in Brkic (2011) [2] as shown in [1].
𝜖
𝑓𝑑 = [−2 log(10−0.4343𝛽 + )]−2
3.71𝐷
𝑅𝑒
𝛽 = ln (︁ )︁
1.1𝑅𝑒
1.816 ln ln(1+1.1𝑅𝑒)

Parameters
Re [float] Reynolds number, [-]
eD [float] Relative roughness, [-]
Returns
fd [float] Darcy friction factor [-]

Notes

No range of validity specified for this equation.

References

[1], [2]

Examples

>>> Brkic_2011_1(1E5, 1E-4)


0.01812455874141297

fluids.friction.Brkic_2011_2(Re, eD)
Calculates Darcy friction factor using the method in Brkic (2011) [2] as shown in [1].

2.18𝛽 𝜖
𝑓𝑑 = [−2 log( + )]−2
𝑅𝑒 3.71𝐷
𝑅𝑒
𝛽 = ln (︁ )︁
1.1𝑅𝑒
1.816 ln ln(1+1.1𝑅𝑒)

Parameters
Re [float] Reynolds number, [-]
eD [float] Relative roughness, [-]
Returns
fd [float] Darcy friction factor [-]

Notes

No range of validity specified for this equation.

2.9. Friction factor and pipe roughness (fluids.friction) 225


Fluids Documentation, Release 0.1

References

[1], [2]

Examples

>>> Brkic_2011_2(1E5, 1E-4)


0.018619745410688716

fluids.friction.Fang_2011(Re, eD)
Calculates Darcy friction factor using the method in Fang (2011) [2] as shown in [1].
{︂ [︂ ]︂}︂−2
𝜖 1.1007 60.525 56.291
𝑓𝐷 = 1.613 ln 0.234 − +
𝐷 𝑅𝑒1.1105 𝑅𝑒1.0712
Parameters
Re [float] Reynolds number, [-]
eD [float] Relative roughness, [-]
Returns
fd [float] Darcy friction factor [-]

Notes

Range is 3E3 <= Re <= 1E8; 0 <= eD <= 5E-2

References

[1], [2]

Examples

>>> Fang_2011(1E5, 1E-4)


0.018481390682985432

fluids.friction.Blasius(Re)
Calculates Darcy friction factor according to the Blasius formulation, originally presented in [1] and described
more recently in [2].
0.3164
𝑓𝑑 =
𝑅𝑒0.25
Parameters
Re [float] Reynolds number, [-]
Returns
fd [float] Darcy friction factor [-]

Notes

Developed for 3000 < Re < 200000.

226 Chapter 2. API Reference


Fluids Documentation, Release 0.1

References

[1], [2]

Examples

>>> Blasius(10000)
0.03164

fluids.friction.von_Karman(eD)
Calculates Darcy friction factor for rough pipes at infinite Reynolds number from the von Karman equation (as
given in [1] and [2]:
(︂ )︂
1 𝜖/𝐷
√ = −2 log10
𝑓𝑑 3.7

Parameters
eD [float] Relative roughness, [-]
Returns
fd [float] Darcy friction factor [-]

Notes

This case does not actually occur; Reynolds number is always finite. It is normally applied as a “limiting” value
when a pipe’s roughness is so high it has a friction factor curve effectively independent of Reynods number.

References

[1], [2]

Examples

>>> von_Karman(1E-4)
0.01197365149564789

fluids.friction.Prandtl_von_Karman_Nikuradse(Re)
Calculates Darcy friction factor for smooth pipes as a function of Reynolds number from the Prandtl-von Karman
Nikuradse equation as given in [1] and [2]:
(︂ )︂
1 2.51
√ = −2 log10 √
𝑓 𝑅𝑒 𝑓

Parameters
Re [float] Reynolds number, [-]
Returns
fd [float] Darcy friction factor [-]

2.9. Friction factor and pipe roughness (fluids.friction) 227


Fluids Documentation, Release 0.1

Notes

This equation is often stated as follows; the correct constant is not 0.8, but 2log10(2.51) or approximately
0.7993474:
1 √︀
√ ≈ 2 log10 (Re 𝑓 ) − 0.8
𝑓
This function is calculable for all Reynolds numbers between 1E151 and 1E-151. It is solved with the LambertW
function from SciPy. The solution is:
1
4 log210
𝑓𝑑 = (︁ (︁ )︁)︁2
log(10)𝑅𝑒
lambertW 2(2.51)

References

[1], [2]

Examples

>>> Prandtl_von_Karman_Nikuradse(1E7)
0.008102669430874914

fluids.friction.ft_Crane(D)
Calculates the Crane fully turbulent Darcy friction factor for flow in commercial pipe, as used in the Crane
formulas for loss coefficients in various fittings. Note that this is not generally applicable to loss due to
friction in pipes, as it does not take into account the roughness of various pipe materials. But for fittings in any
type of pipe, this is the friction factor to use in the Crane [1] method to get their loss coefficients.
Parameters
D [float] Pipe inner diameter, [m]
Returns
fd [float] Darcy Crane friction factor for fully turbulent flow, [-]

Notes

There is confusion and uncertainty regarding the friction factor table given in Crane TP 410M [1]. This function
does not help: it implements a new way to obtain Crane friction factors, so that it can better be based in theory
and give more precision (not accuracy) and trend better with diameters not tabulated in [1].
The data in [1] was digitized, and nominal pipe diameters were converted to actual pipe diameters. An objective
function was sought which would produce the exact same values as in [1] when rounded to the same decimal
place. One was found fairly easily by using the standard Colebrook friction factor formula, and using the
diameter-dependent roughness values calculated with the roughness_Farshad method for bare Carbon steel. A
diameter-dependent Reynolds number was required to match the values; the 𝜌𝑉 /𝜇 term is set to 7.5E6.
The formula given in [1] is:
0.25
𝑓𝑇 = [︁ (︁ )︁]︁2
𝜖/𝐷
log10 3.7

228 Chapter 2. API Reference


Fluids Documentation, Release 0.1

However, this function does not match the rounded values in [1] well and it is not very clear which rough-
ness to use. Using both the value for new commercial steel (.05 mm) or a diameter-dependent value (rough-
ness_Farshad), values were found to be too high and too low respectively. That function is based in theory - the
limit of the Colebrook equation when Re goes to infinity - but in the end real pipe flow is not infinity, and so a
large error occurs from that use.
The following plot shows all these options, and that the method implemented here matches perfectly the rounded
values in [1].

Comparison of implementation options


Crane data
0.026 Cubic spline
Crane formula
0.024 Crane formula (rounded)
Colebrook
Darcy friction factor, [-]

0.022 Colebrook (rounded)


0.020
0.018
0.016
0.014
0.012
0.010
0.0 0.2 0.4 0.6 0.8
Pipe actual diameter, [m]

References

[1]

Examples

>>> ft_Crane(.1)
0.01628845962146481

Explicitly spelling out the function (note the exact same answer is not returned; it is accurate to 5-8 decimals
however, for increased speed):

2.9. Friction factor and pipe roughness (fluids.friction) 229


Fluids Documentation, Release 0.1

>>> Di = 0.1
>>> Colebrook(7.5E6*Di, eD=roughness_Farshad(ID='Carbon steel, bare', D=Di)/Di)
0.01628842543122547

fluids.friction.helical_laminar_fd_White(Re, Di, Dc)


Calculates Darcy friction factor for a fluid flowing inside a curved pipe such as a helical coil under laminar
conditions, using the method of White [1] as shown in [2].
⎡ (︃ 1 ⎤−1
(︂ )︂0.45 )︃ 0.45
11.6
𝑓𝑐𝑢𝑟𝑣𝑒𝑑 = 𝑓straight,laminar ⎣1 − 1− ⎦
𝐷𝑒

Parameters
Re [float] Reynolds number with D=Di, [-]
Di [float] Inner diameter of the coil, [m]
Dc [float] Diameter of the helix/coil measured from the center of the tube on one side to the
center of the tube on the other side, [m]
Returns
fd [float] Darcy friction factor for a curved pipe [-]

Notes

The range of validity of this equation is 11.6 < 𝐷𝑒 < 2000, 3.878 × 10−4 < 𝐷𝑖 /𝐷𝑐 < 0.066.
The form of the equation means it yields nonsense results for De < 11.6; at De < 11.6, the equation is modified
to return the straight pipe value.
This model is recommended in [3], with a slight modification for Dean numbers larger than 2000.

References

[1], [2], [3]

Examples

>>> helical_laminar_fd_White(250, .02, .1)


0.4063281817830202

fluids.friction.helical_laminar_fd_Mori_Nakayama(Re, Di, Dc)


Calculates Darcy friction factor for a fluid flowing inside a curved pipe such as a helical coil under laminar
conditions, using the method of Mori and Nakayama [1] as shown in [2] and [3].
(︃ √ )︃
0.108 𝐷𝑒
𝑓𝑐𝑢𝑟𝑣𝑒𝑑 = 𝑓straight,laminar
1 − 3.253𝐷𝑒−0.5

Parameters
Re [float] Reynolds number with D=Di, [-]
Di [float] Inner diameter of the coil, [m]

230 Chapter 2. API Reference


Fluids Documentation, Release 0.1

Dc [float] Diameter of the helix/coil measured from the center of the tube on one side to the
center of the tube on the other side, [m]
Returns
fd [float] Darcy friction factor for a curved pipe [-]

Notes

The range of validity of this equation is 100 < 𝐷𝑒 < 2000.


The form of the equation means it yields nonsense results for De < 42.328; under that, the equation is modified
to return the value at De=42.328, which is a multiplier of 1.405296 on the straight pipe friction factor.

References

[1], [2], [3]

Examples

>>> helical_laminar_fd_Mori_Nakayama(250, .02, .1)


0.4222458285779544

fluids.friction.helical_laminar_fd_Schmidt(Re, Di, Dc)


Calculates Darcy friction factor for a fluid flowing inside a curved pipe such as a helical coil under laminar
conditions, using the method of Schmidt [1] as shown in [2] and [3].
[︃ (︂ )︂0.97 [︁ ]︃
0.312
𝐷𝑖
]︁
𝐷
1−0.644( 𝐷𝑐𝑖 )
𝑓𝑐𝑢𝑟𝑣𝑒𝑑 = 𝑓straight,laminar 1 + 0.14 𝑅𝑒
𝐷𝑐

Parameters
Re [float] Reynolds number with D=Di, [-]
Di [float] Inner diameter of the coil, [m]
Dc [float] Diameter of the helix/coil measured from the center of the tube on one side to the
center of the tube on the other side, [m]
Returns
fd [float] Darcy friction factor for a curved pipe [-]

Notes

The range of validity of this equation is specified only for Re, 100 < 𝑅𝑒 < 𝑅𝑒𝑐𝑟𝑖𝑡𝑖𝑐𝑎𝑙 .
The form of the equation is such that as the curvature becomes negligible, straight tube result is obtained.

References

[1], [2], [3]

2.9. Friction factor and pipe roughness (fluids.friction) 231


Fluids Documentation, Release 0.1

Examples

>>> helical_laminar_fd_Schmidt(250, .02, .1)


0.47460725672835236

fluids.friction.helical_turbulent_fd_Schmidt(Re, Di, Dc, roughness=0)


Calculates Darcy friction factor for a fluid flowing inside a curved pipe such as a helical coil under turbulent
conditions, using the method of Schmidt [1], also shown in [2].
For 𝑅𝑒𝑐𝑟𝑖𝑡 < 𝑅𝑒 < 2.2 × 104 :
[︃ )︂0.62 ]︃
2.88 × 104
(︂
𝐷𝑖
𝑓𝑐𝑢𝑟𝑣 = 𝑓str,turb 1+
𝑅𝑒 𝐷𝑐

For 2.2 × 104 < 𝑅𝑒 < 1.5 × 105 :


[︃ (︂ )︂ (︂ )︂0.53 ]︃
𝐷𝑖 𝐷𝑖
𝑓𝑐𝑢𝑟𝑣 = 𝑓str,turb 1 + 0.0823 1 + 𝑅𝑒0.25
𝐷𝑐 𝐷𝑐

Parameters
Re [float] Reynolds number with D=Di, [-]
Di [float] Inner diameter of the coil, [m]
Dc [float] Diameter of the helix/coil measured from the center of the tube on one side to the
center of the tube on the other side, [m]
roughness [float, optional] Roughness of pipe wall [m]
Returns
fd [float] Darcy friction factor for a curved pipe [-]

Notes

Valid from the transition to turbulent flow up to 𝑅𝑒 = 1.5 × 105 . At very low curvatures, converges on the
straight pipe result.

References

[1], [2]

Examples

>>> helical_turbulent_fd_Schmidt(1E4, 0.01, .02)


0.08875550767040916

fluids.friction.helical_turbulent_fd_Mori_Nakayama(Re, Di, Dc)


Calculates Darcy friction factor for a fluid flowing inside a curved pipe such as a helical coil under turbulent
conditions, using the method of Mori and Nakayama [1], also shown in [2] and [3].
⎡ [︃ (︂ )︂ ]︃−0.2 ⎤
(︂ )︂0.5 [︃ (︂ )︂2 ]︃−0.2 2
𝐷𝑖 𝐷𝑖 ⎣1 + 0.112 𝑅𝑒 𝐷𝑖
𝑓𝑐𝑢𝑟𝑣 = 0.3 𝑅𝑒 ⎦
𝐷𝑐 𝐷𝑐 𝐷𝑐

232 Chapter 2. API Reference


Fluids Documentation, Release 0.1

Parameters
Re [float] Reynolds number with D=Di, [-]
Di [float] Inner diameter of the coil, [m]
Dc [float] Diameter of the helix/coil measured from the center of the tube on one side to the
center of the tube on the other side, [m]
Returns
fd [float] Darcy friction factor for a curved pipe [-]

Notes
√︀
Valid from the transition to turbulent flow up to 𝑅𝑒 = 6.5 × 105 𝐷𝑖 /𝐷𝑐 . Does not use a straight pipe
correlation, and so will not converge on the straight pipe result at very low curvature.

References

[1], [2], [3]

Examples

>>> helical_turbulent_fd_Mori_Nakayama(1E4, 0.01, .2)


0.037311802071379796

fluids.friction.helical_turbulent_fd_Prasad(Re, Di, Dc, roughness=0)


Calculates Darcy friction factor for a fluid flowing inside a curved pipe such as a helical coil under turbulent
conditions, using the method of Prasad [1], also shown in [2].
⎡ [︃ (︂ )︂ ]︃0.25 ⎤
2
𝐷𝑖
𝑓𝑐𝑢𝑟𝑣 = 𝑓str,turb ⎣1 + 0.18 𝑅𝑒 ⎦
𝐷𝑐

Parameters
Re [float] Reynolds number with D=Di, [-]
Di [float] Inner diameter of the coil, [m]
Dc [float] Diameter of the helix/coil measured from the center of the tube on one side to the
center of the tube on the other side, [m]
roughness [float, optional] Roughness of pipe wall [m]
Returns
fd [float] Darcy friction factor for a curved pipe [-]

Notes

No range of validity was specified, but the experiments used were with coil/tube diameter ratios of 17.24 and
34.9, hot water in the tube, and 1780 < 𝑅𝑒 < 59500. At very low curvatures, converges on the straight pipe
result.

2.9. Friction factor and pipe roughness (fluids.friction) 233


Fluids Documentation, Release 0.1

References

[1], [2]

Examples

>>> helical_turbulent_fd_Prasad(1E4, 0.01, .2)


0.043313098093994626

fluids.friction.helical_turbulent_fd_Czop(Re, Di, Dc)


Calculates Darcy friction factor for a fluid flowing inside a curved pipe such as a helical coil under turbulent
conditions, using the method of Czop [1], also shown in [2].

𝑓𝑐𝑢𝑟𝑣 = 0.096𝐷𝑒−0.1517

Parameters
Re [float] Reynolds number with D=Di, [-]
Di [float] Inner diameter of the coil, [m]
Dc [float] Diameter of the helix/coil measured from the center of the tube on one side to the
center of the tube on the other side, [m]
Returns
fd [float] Darcy friction factor for a curved pipe [-]

Notes

Valid for 2 × 104 < 𝑅𝑒 < 1.5 × 105 . Does not use a straight pipe correlation, and so will not converge on the
straight pipe result at very low curvature.

References

[1], [2]

Examples

>>> helical_turbulent_fd_Czop(1E4, 0.01, .2)


0.02979575250574106

fluids.friction.helical_turbulent_fd_Guo(Re, Di, Dc)


Calculates Darcy friction factor for a fluid flowing inside a curved pipe such as a helical coil under turbulent
conditions, using the method of Guo [1], also shown in [2].
(︂ )︂0.51
−0.15 𝐷𝑖
𝑓𝑐𝑢𝑟𝑣 = 0.638𝑅𝑒
𝐷𝑐

Parameters
Re [float] Reynolds number with D=Di, [-]
Di [float] Inner diameter of the coil, [m]

234 Chapter 2. API Reference


Fluids Documentation, Release 0.1

Dc [float] Diameter of the helix/coil measured from the center of the tube on one side to the
center of the tube on the other side, [m]
Returns
fd [float] Darcy friction factor for a curved pipe [-]

Notes

Valid for 2 × 104 < 𝑅𝑒 < 1.5 × 105 . Does not use a straight pipe correlation, and so will not converge on the
straight pipe result at very low curvature.

References

[1], [2]

Examples

>>> helical_turbulent_fd_Guo(2E5, 0.01, .2)


0.022189161013253147

fluids.friction.helical_turbulent_fd_Ju(Re, Di, Dc, roughness=0)


Calculates Darcy friction factor for a fluid flowing inside a curved pipe such as a helical coil under turbulent
conditions, using the method of Ju et al. [1], also shown in [2].
[︃ (︂ )︂0.14 ]︃
0.23 𝐷𝑖
𝑓𝑐𝑢𝑟𝑣 = 𝑓str,turb 1 + 0.11𝑅𝑒
𝐷𝑐

Parameters
Re [float] Reynolds number with D=Di, [-]
Di [float] Inner diameter of the coil, [m]
Dc [float] Diameter of the helix/coil measured from the center of the tube on one side to the
center of the tube on the other side, [m]
roughness [float, optional] Roughness of pipe wall [m]
Returns
fd [float] Darcy friction factor for a curved pipe [-]

Notes

Claimed to be valid for all turbulent conditions with 𝐷𝑒 > 11.6. At very low curvatures, converges on the
straight pipe result.

References

[1], [2]

2.9. Friction factor and pipe roughness (fluids.friction) 235


Fluids Documentation, Release 0.1

Examples

>>> helical_turbulent_fd_Ju(1E4, 0.01, .2)


0.04945959480770937

fluids.friction.helical_turbulent_fd_Srinivasan(Re, Di, Dc)


Calculates Darcy friction factor for a fluid flowing inside a curved pipe such as a helical coil under turbulent
conditions, using the method of Srinivasan [1], as shown in [2] and [3].
0.336
𝑓𝑑 = [︁ √︁ ]︁0.2
𝐷𝑖
𝑅𝑒 𝐷 𝑐

Parameters
Re [float] Reynolds number with D=Di, [-]
Di [float] Inner diameter of the coil, [m]
Dc [float] Diameter of the helix/coil measured from the center of the tube on one side to the
center of the tube on the other side, [m]
Returns
fd [float] Darcy friction factor for a curved pipe [-]

Notes

Valid for 0.01 < Di/Dc < 0.15, with no Reynolds number criteria given in [2] or [3].
[2] recommends this method, using the transition criteria of Srinivasan as well. [3] recommends using either
this method or the Ito method. This method did not make it into the popular review articles on curved flow.

References

[1], [2], [3]

Examples

>>> helical_turbulent_fd_Srinivasan(1E4, 0.01, .02)


0.0570745212117107

fluids.friction.helical_turbulent_fd_Mandal_Nigam(Re, Di, Dc, roughness=0)


Calculates Darcy friction factor for a fluid flowing inside a curved pipe such as a helical coil under turbulent
conditions, using the method of Mandal and Nigam [1], also shown in [2].

𝑓𝑐𝑢𝑟𝑣 = 𝑓str,turb [1 + 0.03𝐷𝑒0.27 ]

Parameters
Re [float] Reynolds number with D=Di, [-]
Di [float] Inner diameter of the coil, [m]
Dc [float] Diameter of the helix/coil measured from the center of the tube on one side to the
center of the tube on the other side, [m]
roughness [float, optional] Roughness of pipe wall [m]

236 Chapter 2. API Reference


Fluids Documentation, Release 0.1

Returns
fd [float] Darcy friction factor for a curved pipe [-]

Notes

Claimed to be valid for all turbulent conditions with 2500 < 𝐷𝑒 < 15000. At very low curvatures, converges
on the straight pipe result.

References

[1], [2]

Examples

>>> helical_turbulent_fd_Mandal_Nigam(1E4, 0.01, .2)


0.03831658117115902

fluids.friction.helical_transition_Re_Seth_Stahel(Di, Dc)
Calculates the transition Reynolds number for flow inside a curved or helical coil between laminar and turbulent
flow, using the method of [1].
[︃ √︂ ]︃
𝐷𝑖
𝑅𝑒𝑐𝑟𝑖𝑡 = 1900 1 + 8
𝐷𝑐

Parameters
Di [float] Inner diameter of the coil, [m]
Dc [float] Diameter of the helix/coil measured from the center of the tube on one side to the
center of the tube on the other side, [m]
Returns
Re_crit [float] Transition Reynolds number between laminar and turbulent [-]

Notes

At very low curvatures, converges to Re = 1900.

References

[1]

Examples

>>> helical_transition_Re_Seth_Stahel(1, 7.)


7645.0599897402535

2.9. Friction factor and pipe roughness (fluids.friction) 237


Fluids Documentation, Release 0.1

fluids.friction.helical_transition_Re_Ito(Di, Dc)
Calculates the transition Reynolds number for flow inside a curved or helical coil between laminar and turbulent
flow, using the method of [1], as shown in [2] and in [3].
(︂ )︂0.32
𝐷𝑖
𝑅𝑒𝑐𝑟𝑖𝑡 = 20000
𝐷𝑐
Parameters
Di [float] Inner diameter of the coil, [m]
Dc [float] Diameter of the helix/coil measured from the center of the tube on one side to the
center of the tube on the other side, [m]
Returns
Re_crit [float] Transition Reynolds number between laminar and turbulent [-]

Notes

At very low curvatures, converges to Re = 0. Recommended for 0.00116 < 𝑑𝑖 /𝐷𝑐 < 0.067

References

[1], [2], [3]

Examples

>>> helical_transition_Re_Ito(1, 7.)


10729.972844697186

fluids.friction.helical_transition_Re_Kubair_Kuloor(Di, Dc)
Calculates the transition Reynolds number for flow inside a curved or helical coil between laminar and turbulent
flow, using the method of [1], as shown in [2].
(︂ )︂0.2
𝐷𝑖
𝑅𝑒𝑐𝑟𝑖𝑡 = 12730
𝐷𝑐
Parameters
Di [float] Inner diameter of the coil, [m]
Dc [float] Diameter of the helix/coil measured from the center of the tube on one side to the
center of the tube on the other side, [m]
Returns
Re_crit [float] Transition Reynolds number between laminar and turbulent [-]

Notes

At very low curvatures, converges to Re = 0. Recommended for 0.0005 < 𝑑𝑖 /𝐷𝑐 < 0.103

References

[1], [2]

238 Chapter 2. API Reference


Fluids Documentation, Release 0.1

Examples

>>> helical_transition_Re_Kubair_Kuloor(1, 7.)


8625.986927588123

fluids.friction.helical_transition_Re_Kutateladze_Borishanskii(Di, Dc)
Calculates the transition Reynolds number for flow inside a curved or helical coil between laminar and turbulent
flow, using the method of [1], also shown in [2].
(︂ )︂0.3
4 𝐷𝑖
𝑅𝑒𝑐𝑟𝑖𝑡 = 2300 + 1.05 × 10
𝐷𝑐

Parameters
Di [float] Inner diameter of the coil, [m]
Dc [float] Diameter of the helix/coil measured from the center of the tube on one side to the
center of the tube on the other side, [m]
Returns
Re_crit [float] Transition Reynolds number between laminar and turbulent [-]

Notes

At very low curvatures, converges to Re = 2300. Recommended for 0.0417 < 𝑑𝑖 /𝐷𝑐 < 0.1667

References

[1], [2]

Examples

>>> helical_transition_Re_Kutateladze_Borishanskii(1, 7.)


7121.143774574058

fluids.friction.helical_transition_Re_Schmidt(Di, Dc)
Calculates the transition Reynolds number for flow inside a curved or helical coil between laminar and turbulent
flow, using the method of [1], also shown in [2] and [3]. Correlation recommended in [3].
[︃ (︂ )︂0.45 ]︃
𝐷𝑖
𝑅𝑒𝑐𝑟𝑖𝑡 = 2300 1 + 8.6
𝐷𝑐

Parameters
Di [float] Inner diameter of the coil, [m]
Dc [float] Diameter of the helix/coil measured from the center of the tube on one side to the
center of the tube on the other side, [m]
Returns
Re_crit [float] Transition Reynolds number between laminar and turbulent [-]

2.9. Friction factor and pipe roughness (fluids.friction) 239


Fluids Documentation, Release 0.1

Notes

At very low curvatures, converges to Re = 2300. Recommended for 𝑑𝑖 /𝐷𝑐 < 0.14

References

[1], [2], [3]

Examples

>>> helical_transition_Re_Schmidt(1, 7.)


10540.094061770815

fluids.friction.helical_transition_Re_Srinivasan(Di, Dc)
Calculates the transition Reynolds number for flow inside a curved or helical coil between laminar and turbulent
flow, using the method of [1], also shown in [2] and [3]. Correlation recommended in [3].
[︃ (︂ )︂0.5 ]︃
𝐷𝑖
𝑅𝑒𝑐𝑟𝑖𝑡 = 2100 1 + 12
𝐷𝑐

Parameters
Di [float] Inner diameter of the coil, [m]
Dc [float] Diameter of the helix/coil measured from the center of the tube on one side to the
center of the tube on the other side, [m]
Returns
Re_crit [float] Transition Reynolds number between laminar and turbulent [-]

Notes

At very low curvatures, converges to Re = 2100. Recommended for 0.004 < 𝑑𝑖 /𝐷𝑐 < 0.1.

References

[1], [2], [3]

Examples

>>> helical_transition_Re_Srinivasan(1, 7.)


11624.704719832524

fluids.friction.LAMINAR_TRANSITION_PIPE = 2040.0
Believed to be the most accurate result to date. Accurate to +/- 10. Avila, Kerstin, David Moxey, Alberto de
Lozar, Marc Avila, Dwight Barkley, and Björn Hof. “The Onset of Turbulence in Pipe Flow.” Science 333, no.
6039 (July 8, 2011): 192-196. doi:10.1126/science.1203223.

240 Chapter 2. API Reference


Fluids Documentation, Release 0.1

fluids.friction.friction_plate_Martin_1999(Re, plate_enlargement_factor)
Calculates Darcy friction factor for single-phase flow in a Chevron-style plate heat exchanger according to [1].
1 cos 𝜑 1 − cos 𝜑
√︀ = √︀ + √
𝑓𝑓 0.045 tan 𝜑 + 0.09 sin 𝜑 + 𝑓0 / cos(𝜑) 3.8𝑓1

𝑓0 = 16/𝑅𝑒 for 𝑅𝑒 < 2000

𝑓0 = (1.56 ln 𝑅𝑒 − 3)−2 for 𝑅𝑒 ≥ 2000


149
𝑓1 = + 0.9625 for 𝑅𝑒 < 2000
𝑅𝑒
9.75
𝑓1 = for 𝑅𝑒 ≥ 2000
𝑅𝑒0.289
Parameters
Re [float] Reynolds number with respect to the hydraulic diameter of the channels, [-]
plate_enlargement_factor [float] The extra surface area multiplier as compared to a flat plate
caused the corrugations, [-]
Returns
fd [float] Darcy friction factor [-]

Notes

Based on experimental data from Re from 200 - 10000 and enhancement factors calculated with chevron angles
of 0 to 80 degrees. See PlateExchanger for further clarification on the definitions.
The length the friction factor gets multiplied by is not the flow path length, but rather the straight path length
from port to port as if there were no chevrons.
Note there is a discontinuity at Re = 2000 for the transition from laminar to turbulent flow, although the literature
suggests the transition is actually smooth.
This was first developed in [2] and only minor modifications by the original author were made before its repub-
lication in [1]. This formula is also suggested in [3]

References

[1], [2], [3]

Examples

>>> friction_plate_Martin_1999(Re=20000, plate_enlargement_factor=1.15)


2.284018089834134

fluids.friction.friction_plate_Martin_VDI(Re, plate_enlargement_factor)
Calculates Darcy friction factor for single-phase flow in a Chevron-style plate heat exchanger according to [1].
1 cos 𝜑 1 − cos 𝜑
√ = √︀ + √
𝑓𝑑 0.28 tan 𝜑 + 0.36 sin 𝜑 + 𝑓0 / cos(𝜑) 3.8𝑓1

𝑓0 = 64/𝑅𝑒 for 𝑅𝑒 < 2000

𝑓0 = (1.56 ln 𝑅𝑒 − 3)−2 for 𝑅𝑒 ≥ 2000

2.9. Friction factor and pipe roughness (fluids.friction) 241


Fluids Documentation, Release 0.1

597
𝑓1 = + 3.85 for 𝑅𝑒 < 2000
𝑅𝑒
39
𝑓1 = for 𝑅𝑒 ≥ 2000
𝑅𝑒0.289
Parameters
Re [float] Reynolds number with respect to the hydraulic diameter of the channels, [-]
plate_enlargement_factor [float] The extra surface area multiplier as compared to a flat plate
caused the corrugations, [-]
Returns
fd [float] Darcy friction factor [-]
See also:

friction_plate_Martin_1999

Notes

Based on experimental data from Re from 200 - 10000 and enhancement factors calculated with chevron angles
of 0 to 80 degrees. See PlateExchanger for further clarification on the definitions.
The length the friction factor gets multiplied by is not the flow path length, but rather the straight path length
from port to port as if there were no chevrons.
Note there is a discontinuity at Re = 2000 for the transition from laminar to turbulent flow, although the literature
suggests the transition is actually smooth.
This is a revision of the Martin’s earlier model, adjusted to predidct higher friction factors.
There are three parameters in this model, a, b and c; it is posisble to adjust them to better fit a know exchanger’s
pressure drop.

References

[1]

Examples

>>> friction_plate_Martin_VDI(Re=20000, plate_enlargement_factor=1.15)


2.702534119024076

fluids.friction.friction_plate_Kumar(Re, chevron_angle)
Calculates Darcy friction factor for single-phase flow in a well-designed Chevron-style plate heat exchanger
according to [1]. The data is believed to have been developed by APV International Limited, since acquired by
SPX Corporation. This uses a curve fit of that data published in [2].
𝐶2
𝑓𝑓 =
𝑅𝑒𝑝
C2 and p are coefficients looked up in a table, with varying ranges of Re validity and chevron angle validity. See
the source for their exact values.
Parameters
Re [float] Reynolds number with respect to the hydraulic diameter of the channels, [-]

242 Chapter 2. API Reference


Fluids Documentation, Release 0.1

chevron_angle [float] Angle of the plate corrugations with respect to the vertical axis (the di-
rection of flow if the plates were straight), between 0 and 90. Many plate exchangers use
two alternating patterns; use their average angle for that situation [degrees]
Returns
fd [float] Darcy friction factor [-]

Notes

Data on graph from Re=0.1 to Re=10000, with chevron angles 30 to 65 degrees. See PlateExchanger for further
clarification on the definitions.
It is believed the constants used in this correlation were curve-fit to the actual graph in [1] by the author of [2]
as there is no
The length the friction factor gets multiplied by is not the flow path length, but rather the straight path length
from port to port as if there were no chevrons.
As the coefficients change, there are numerous small discontinuities, although the data on the graphs is contin-
uous with sharp transitions of the slope.
The author of [1] states clearly this correlation is “applicable only to well designed Chevron PHEs”.

References

[1], [2]

Examples

>>> friction_plate_Kumar(Re=2000, chevron_angle=30)


2.9760669055634517

fluids.friction.friction_plate_Muley_Manglik(Re, chevron_angle,
plate_enlargement_factor)
Calculates Darcy friction factor for single-phase flow in a Chevron-style plate heat exchanger according to [1],
also shown and recommended in [2].

𝑓𝑓 = [2.917 − 0.1277𝛽 + 2.016 × 10−3 𝛽 2 ] × [20.78 − 19.02𝜑 + 18.93𝜑2 − 5.341𝜑3 ] × 𝑅𝑒−[0.2+0.0577 sin[(𝜋𝛽/45)+2.1]]

Parameters
Re [float] Reynolds number with respect to the hydraulic diameter of the channels, [-]
chevron_angle [float] Angle of the plate corrugations with respect to the vertical axis (the di-
rection of flow if the plates were straight), between 0 and 90. Many plate exchangers use
two alternating patterns; use their average angle for that situation [degrees]
plate_enlargement_factor [float] The extra surface area multiplier as compared to a flat plate
caused the corrugations, [-]
Returns
fd [float] Darcy friction factor [-]

2.9. Friction factor and pipe roughness (fluids.friction) 243


Fluids Documentation, Release 0.1

Notes

Based on experimental data of plate enacement factors up to 1.5, and valid for Re > 1000 and chevron angles
from 30 to 60 degrees with sinusoidal shape. See PlateExchanger for further clarification on the definitions.
The length the friction factor gets multiplied by is not the flow path length, but rather the straight path length
from port to port as if there were no chevrons.
This is a continuous model with no discontinuities.

References

[1], [2]

Examples

>>> friction_plate_Muley_Manglik(Re=2000, chevron_angle=45, plate_enlargement_


˓→factor=1.2)

1.0880870804075413

2.10 Tank and helical coil sizing (fluids.geometry)

class fluids.geometry.TANK(D=None, L=None, horizontal=True, sideA=None, sideB=None,


sideA_a=None, sideB_a=None, sideA_f=None, sideA_k=None,
sideB_f=None, sideB_k=None, sideA_a_ratio=None,
sideB_a_ratio=None, L_over_D=None, V=None)
Bases: object
Class representing tank volumes and levels. All parameters are also attributes.
Parameters
D [float] Diameter of the cylindrical section of the tank, [m]
L [float] Length of the main cylindrical section of the tank, [m]
horizontal [bool, optional] Whether or not the tank is a horizontal or vertical tank
sideA [string, optional] The left (or bottom for vertical) head of the tank’s type; one of [None,
‘conical’, ‘ellipsoidal’, ‘torispherical’, ‘guppy’, ‘spherical’].
sideB [string, optional] The right (or top for vertical) head of the tank’s type; one of [None,
‘conical’, ‘ellipsoidal’, ‘torispherical’, ‘guppy’, ‘spherical’].
sideA_a [float, optional] The distance the head as specified by sideA extends down or to the
left from the main cylindrical section, [m]
sideB_a [float, optional] The distance the head as specified by sideB extends up or to the right
from the main cylindrical section, [m]
sideA_f [float, optional] Dish-radius parameter for side A; fD = dish radius [1/m]
sideA_k [float, optional] knuckle-radius parameter for side A; kD = knuckle radius [1/m]
sideB_f [float, optional] Dish-radius parameter for side B; fD = dish radius [1/m]
sideB_k [float, optional] knuckle-radius parameter for side B; kD = knuckle radius [1/m]

244 Chapter 2. API Reference


Fluids Documentation, Release 0.1

L_over_D [float, optional] Ratio of length over diameter, used only when D and L are both
unspecified but V is, [-]
V [float, optional] Volume of the tank; solved for if specified, using
sideA_a_ratio/sideB_a_ratio, sideA, sideB, horizontal, and one of L_over_D, L, or
D, [m^3]

Notes

For torpsherical tank heads, the following f and k parameters are used in standards. The default is ASME F&D
.

f k
2:1 semi-elliptical 0.9 0.17
ASME F&D 1 0.06
ASME 80/6 0.8 0.06
ASME 80/10 F&D 0.8 0.1
DIN 28011 1 0.1
DIN 28013 0.8 0.154

Examples

Total volume of a tank:

>>> TANK(D=1.2, L=4, horizontal=False).V_total


4.523893421169302

Volume of a tank at a given height:

>>> TANK(D=1.2, L=4, horizontal=False).V_from_h(.5)


0.5654866776461628

Height of liquid for a given volume:

>>> TANK(D=1.2, L=4, horizontal=False).h_from_V(.5)


0.44209706414415384

Surface area of a tank with a conical head:

>>> T1 = TANK(V=10, L_over_D=0.7, sideB='conical', sideB_a=0.5)


>>> T1.A, T1.A_sideA, T1.A_sideB, T1.A_lateral
(24.94775907657148, 5.118555935958284, 5.497246519930003, 14.331956620683192)

Solving for tank volumes, first horizontal, then vertical:

>>> TANK(D=10., horizontal=True, sideA='conical', sideB='conical', V=500).L


4.699531057009147
>>> TANK(L=4.69953105701, horizontal=True, sideA='conical', sideB='conical',
˓→V=500).D

9.999999999999407
>>> TANK(L_over_D=0.469953105701, horizontal=True, sideA='conical', sideB='conical
˓→', V=500).L

4.69953105700979

2.10. Tank and helical coil sizing (fluids.geometry) 245


Fluids Documentation, Release 0.1

>>> TANK(D=10., horizontal=False, sideA='conical', sideB='conical', V=500).L


4.699531057009147
>>> TANK(L=4.69953105701, horizontal=False, sideA='conical', sideB='conical',
˓→V=500).D

9.999999999999407
>>> TANK(L_over_D=0.469953105701, horizontal=False, sideA='conical', sideB=
˓→'conical', V=500).L

4.699531057009791

Attributes
table [bool] Whether or not a table of heights-volumes has been generated
h_max [float] Height of the tank, [m]
V_total [float] Total volume of the tank as calculated [m^3]
heights [ndarray] Array of heights between 0 and h_max, [m]
volumes [ndarray] Array of volumes calculated from the heights, [m^3]
A [float] Total surface area of the tank, [m^2]
A_sideA [float] Surface area of sideA, [m^2]
A_sideB [float] Surface area of sideB, [m^2]
A_lateral [float] Surface area of the lateral side, [m^2]
c_forward [ndarray] Coefficients for the Chebyshev approximations in calculating V from h,
[-]
c_backward [ndarray] Coefficients for the Chebyshev approximations in calculating h from V,
[-]

Methods

V_from_h(self, h[, method]) Method to calculate the volume of liquid in a fully


defined tank given a specified height h.
add_thickness(self, thickness[, . . . ]) Method to create a new tank instance with the same
parameters as itself, except with an added thickness
to it.
h_from_V (self, V[, method]) Method to calculate the height of liquid in a fully
defined tank given a specified volume of liquid in it
V.
set_chebyshev_approximators(self[, . . . ]) Method to derive and set coefficients for chebyshev
polynomial function approximation of the height-
volume and volume-height relationship.
set_misc(self) Set more parameters, after the tank is better defined
than in the __init__ function.
set_table(self[, n, dx]) Method to set an interpolation table of liquids levels
versus volumes in the tank, for a fully defined tank.
solve_tank_for_V (self) Method which is called to solve for tank geometry
when a certain volume is specified.

V_from_h(self, h, method=’full’)
Method to calculate the volume of liquid in a fully defined tank given a specified height h. h must be under

246 Chapter 2. API Reference


Fluids Documentation, Release 0.1

the maximum height. If the method is ‘chebyshev’, and the coefficients have not yet been calculated, they
are created by calling set_chebyshev_approximators.
Parameters
h [float] Height specified, [m]
method [str] One of ‘full’ (calculated rigorously) or ‘chebyshev’
Returns
V [float] Volume of liquid in the tank up to the specified height, [m^3]
add_thickness(self, thickness, sideA_thickness=None, sideB_thickness=None)
Method to create a new tank instance with the same parameters as itself, except with an added thickness to
it. This is useful to obtain ex. the inside of a tank and the outside; their different in volumes is the volume
of the shell, and could be used to determine weight.
Parameters
thickness [float] Thickness to add to the tank diameter, [m]
sideA_thickness [float, optional] The thickness to add to the sideA head; if not specified, it
will be thickness, [m]
sideB_thickness [float, optional] The thickness to add to the sideB head; if not specified, it
will be thickness, [m]
Returns
TANK [TANK] Tank object, [-]

Notes

Be careful not to specify a negative thickness larger than the heads’ lengths, or the head will become
concave! The same applies to adding a thickness to convex heads - they can become convex.
chebyshev = False
h_from_V(self, V, method=’spline’)
Method to calculate the height of liquid in a fully defined tank given a specified volume of liquid in it V.
V must be under the maximum volume. If the method is ‘spline’, and the interpolation table is not yet
defined, creates it by calling the method set_table. If the method is ‘chebyshev’, and the coefficients have
not yet been calculated, they are created by calling set_chebyshev_approximators.
Parameters
V [float] Volume of liquid in the tank up to the desired height, [m^3]
method [str] One of ‘spline’, ‘chebyshev’, or ‘brenth’
Returns
h [float] Height of liquid at which the volume is as desired, [m]
set_chebyshev_approximators(self, deg_forward=50, deg_backwards=200)
Method to derive and set coefficients for chebyshev polynomial function approximation of the height-
volume and volume-height relationship.
A single set of chebyshev coefficients is used for the entire height- volume and volume-height relationships
respectively.
The forward relationship, V_from_h, requires far fewer coefficients in its fit than the reverse to obtain the
same relative accuracy.

2.10. Tank and helical coil sizing (fluids.geometry) 247


Fluids Documentation, Release 0.1

Optionally, deg_forward or deg_backwards can be set to None to try to automatically fit the series to
machine precision.
Parameters
deg_forward [int, optional] The degree of the chebyshev polynomial to be created for the
V_from_h curve, [-]
deg_backwards [int, optional] The degree of the chebyshev polynomial to be created for
the h_from_V curve, [-]
set_misc(self )
Set more parameters, after the tank is better defined than in the __init__ function.

Notes

Two of D, L, and L_over_D must be known when this function runs. The other one is set from the other
two first thing in this function. a_ratio parameters are used to calculate a values for the heads here, if
applicable. Radius is calculated here. Maximum tank height is calculated here. V_total is calculated here.
set_table(self, n=100, dx=None)
Method to set an interpolation table of liquids levels versus volumes in the tank, for a fully defined tank.
Normally run by the h_from_V method, this may be run prior to its use with a custom specification. Either
the number of points on the table, or the vertical distance between steps may be specified.
Parameters
n [float, optional] Number of points in the interpolation table, [-]
dx [float, optional] Vertical distance between steps in the interpolation table, [m]
solve_tank_for_V(self )
Method which is called to solve for tank geometry when a certain volume is specified. Will be called by
the __init__ method if V is set.

Notes

Raises an error if L and either of sideA_a or sideB_a are specified; these can only be set once D is known.
Raises an error if more than one of D, L, or L_over_D are specified. Raises an error if the head ratios are
not provided.
Calculates initial guesses assuming no heads are present, and then uses fsolve to determine the correct
dimensions for the tank.
Tested, but bugs and limitations are expected here.
table = False
class fluids.geometry.HelicalCoil(Dt, Do=None, pitch=None, H=None, N=None,
H_total=None, Do_total=None, Di=None)
Bases: object
Class representing a helical coiled tube, as are found in many heated tanks and some small nuclear reactors. All
parameters are also attributes.
One set of the following parameters is required; inner tube diameter is optional.
• Tube outer diameter, coil outer diameter, pitch, number of coil turns
• Tube outer diameter, coil outer diameter, pitch, height
• Tube outer diameter, coil outer diameter, number of coil turns, height

248 Chapter 2. API Reference


Fluids Documentation, Release 0.1

Parameters
Dt [float] Outer diameter of the tube wound to make up the helical spiral, [m]
Do [float, optional] Diameter of the spiral as measured from the center of the coil on one side
to the center of the coil on the other side, [m]
Do_total [float, optional] Diameter of the spiral as measured from one edge of the tube to the
other edge; equal to Do + Dt; either Do or Do_total may be specified and the other will be
calculated [m]
pitch [float, optional] Height change from one coil to the next as measured from the middles of
the tube, [m]
H [float, optional] Height of the spiral, as measured from the middle of the bottom of the tube
to the middle of the top of the tube, [m]
H_total [float, optional] Height of the spiral as measured from one edge of the tube to the other
edge; equal to H_total + Dt; either may be specified and the other will be calculated [m]
N [float, optional] Number of coil turns; may be specified along with pitch instead of specifying
H or H_total, [-]
Di [float, optional] Inner diameter of the tube; if specified, inside and annulus properties will be
calculated, [m]

Notes

Do must be larger than Dt.

References

[1]

Examples

>>> C1 = HelicalCoil(Do=30, H=20, pitch=5, Dt=2)


>>> C1.N, C1.tube_length, C1.surface_area
(4.0, 377.5212621504738, 2372.0360474917497)

Same coil, with the inputs one would physically measure from the coil, and a specified inlet diameter:

>>> C1 = HelicalCoil(Do_total=32, H_total=22, pitch=5, Dt=2, Di=1.8)


>>> C1.N, C1.tube_length, C1.surface_area
(4.0, 377.5212621504738, 2372.0360474917497)
>>> C1.inner_surface_area, C1.inlet_area, C1.inner_volume, C1.total_volume, C1.
˓→annulus_volume

(2134.832442742575, 2.5446900494077327, 960.6745992341587, 1186.0180237458749,


˓→225.3434245117162)

Attributes
tube_circumference [float] Circumference of the tube as measured though its center, not inner
or outer edges; 𝐶 = 𝜋𝐷𝑜 , [m]
√︀
tube_length [float] Length of tube used to make the helical coil; 𝐿 = (𝜋𝐷𝑜 · 𝑁 )2 + 𝐻 2 ,
[m]

2.10. Tank and helical coil sizing (fluids.geometry) 249


Fluids Documentation, Release 0.1

surface_area [float] Surface area of the outer surface of the helical coil; 𝐴𝑡 = 𝜋𝐷𝑡 𝐿, [m^2]
inner_surface_area [float] Surface area of the inner surface of the helical coil; calculated if Di
is supplied; 𝐴𝑖𝑛𝑠𝑖𝑑𝑒 = 𝜋𝐷𝑖 𝐿, [m^2]
inlet_area [float] Area of the inlet to the helical coil; calculated if Di is supplied; 𝐴𝑖𝑛𝑙𝑒𝑡 =
𝜋 2
4 𝐷𝑖 , [m^2]

inner_volume [float] Volume of the tube as would be filled by a fluid, useful for weight calcu-
lations; calculated if Di is supplied; 𝑉𝑖𝑛𝑠𝑖𝑑𝑒 = 𝐴𝑖 𝐿, [m^3]
annulus_area [float] Area of the annulus (wall of the pipe); calculated if Di is supplied; 𝐴𝑎 =
𝜋 2 2
4 (𝐷𝑡 − 𝐷𝑖 ), [m^2]

annulus_volume [float] Volume of the annulus (wall of the pipe); calculated if Di is supplied,
useful for weight calculations; 𝑉𝑎 = 𝐴𝑎 𝐿, [m^3]
total_volume [float] Total volume occupied by the pipe and the fluid inside it; 𝑉 = 𝐷𝑡 𝐿, [m^3]

)︁ Angle between the pitch and coil diameter; used in some calculations; 𝛼 =
helix_angle(︁ [float]
𝑝𝑡
arctan 𝜋𝐷𝑜 , [radians]
𝐷𝑡
curvature [float] Coil curvature, useful in some calculations; 𝛿 = 𝐷𝑜 [1+4𝜋 2 tan2 (𝛼)] , [-]

class fluids.geometry.PlateExchanger(amplitude, wavelength, chevron_angle=45,


width=None, length=None, thickness=None,
d_port=None, plates=None)
Bases: object
Class representing a plate heat exchanger with sinusoidal ridges. All parameters are also attributes.
Parameters
amplitude [float] Half the height of the wave of the ridges, [m]
wavelength [float] Distance between the bottoms of two of the ridges (sometimes called pitch),
[m]
chevron_angle [float or tuple(2), optional] Angle of the plate corrugations with respect to the
vertical axis (the direction of flow if the plates were straight), between 0 and 90. Many
plate exchangers use two alternating patterns; use a tuple of the two angles for that situation
[degrees]
width [float, optional] Width of the plates in the heat exchanger, between the gaskets, [m]
length [float, optional] Length of the heat exchanger as measured from one port to the other,
excluding the diameter of the ports themselves (little useful heat transfer happens there),
[m]
thickness [float, optional] Thickness of the metal making up the plates, [m]
d_port [float, optional] The diameter of the ports in the plates, [m]
plates [int, optional] The number of plates in the heat exchanger, including the two not used for
heat transfer at the beginning and end [-]

Notes

Only wavelength and amplitude are required as inputs to this function.

250 Chapter 2. API Reference


Fluids Documentation, Release 0.1

References

[Ra5f43f3cdb76-1]

Examples

>>> PlateExchanger(amplitude=5E-4, wavelength=3.7E-3, length=1.2, width=.3,


... d_port=.05, plates=51)
<Plate heat exchanger, amplitude=0.0005 m, wavelength=0.0037 m, chevron_angles=45/
˓→45 degrees, area enhancement factor=1.16119, width=0.3 m, length=1.2 m, port

˓→diameter=0.05 m, heat transfer area=20.4833 m^2, 51 plates>

Attributes
chevron_angles [tuple(2)] The two specified angles (repeated value if only one specified), [de-
grees]
chevron_angle [float] The averaged angle of the chevrons, [degrees]
inclination_angle [float] 90 - chevron_angle, used in many publications instead of
chevron_angle, [degrees]
4𝑎
plate_corrugation_aspect_ratio [float] The aspect ratio of the corrugations 𝛾 = 𝜆 , [-]
plate_enlargement_factor [float] The extra surface area multiplier as compared to a flat plate
caused the corrugations, [-]
D_eq [float] Equivalent diameter of the channels, 𝐷𝑒𝑞 = 4𝑎 [m]
4𝑎
D_hydraulic [float] Hydraulic diameter of the channels, 𝐷ℎ𝑦𝑑 = 𝜑 [m]
length_port [float] Port center to port center along the direction of flow, [m]
A_plate_surface [float] The surface area of one plate in the heat exchanger, including the extra
due to corrugations (excluding the bit between the ports), 𝐴𝑝 = 𝐿 · 𝑊 · 𝜑 [m^2]
A_heat_transfer [float] The total surface area available for heat transfer in the exchanger, the
multiple of A_plate_surface by the number of plates after removing the two on the edges,
[m^2]
A_channel_flow [float] The area for the fluid to flow in one channel, 𝑊 · 𝑏 [m^2]
channels [int] The number of plates minus one, [-]
channels_per_fluid [int] Half the number of total channels, [-]
plate_exchanger_identifier [str] Method to create an identifying string in format ‘L’
+ wavelength + ‘A’ + amplitude + ‘B’ + chevron angle-chevron angle.

Methods

plate_enlargement_factor_analytical(. . .Calculates
) the enhancement factor of the sinusoidal
waves of the

static plate_enlargement_factor_analytical(amplitude, wavelength)


Calculates the enhancement factor of the sinusoidal waves of the plate heat exchanger. This is the
multiplier for the flat plate area to obtain the actual area available for heat transfer. Obtained from the

2.10. Tank and helical coil sizing (fluids.geometry) 251


Fluids Documentation, Release 0.1

following integral:
∫︀ 𝜆 √︁ (︀ 𝛾𝜋 )︀2 (︀ 2𝜋 )︀
Effective area 0
1+ 2 cos2 𝜆 𝑥 𝑑𝑥
𝜑= =
Projected area 𝜆

4𝑎
𝛾=
𝜆
𝑇 ℎ𝑒𝑠𝑜𝑙𝑢𝑡𝑖𝑜𝑛𝑡𝑜𝑡ℎ𝑒𝑖𝑛𝑡𝑒𝑔𝑟𝑎𝑙𝑖𝑠 :
(︁ 2 2
)︁
2𝐸 −4𝑎 𝜆2
𝜋

..𝑚𝑎𝑡ℎ :: 𝜑 =
𝜋
𝑤ℎ𝑒𝑟𝑒𝐸𝑖𝑠𝑡ℎ𝑒𝑐𝑜𝑚𝑝𝑙𝑒𝑡𝑒𝑒𝑙𝑙𝑖𝑝𝑡𝑖𝑐𝑖𝑛𝑡𝑒𝑔𝑟𝑎𝑙𝑜𝑓 𝑡ℎ𝑒𝑠𝑒𝑐𝑜𝑛𝑑𝑘𝑖𝑛𝑑, 𝑐𝑎𝑙𝑐𝑢𝑙𝑎𝑡𝑒𝑑𝑤𝑖𝑡ℎ𝑆𝑐𝑖𝑃 𝑦.
Parameters
amplitude [float]
Half the height of the wave of the ridges, [m]

wavelength [float] Distance between the bottoms of two of the ridges (sometimes called
pitch), [m]

Returns
plate_enlargement_factor [float] The extra surface area multiplier as compared to a flat
plate caused the corrugations, [-]

Notes

This is the exact analytical integral, obtained via Mathematica, Maple, and quite a bit of trial and error. It
is confirmed via numerical integration. The expression normally given is an approximation as follows:
1 (︁ √︀ √︀ )︁
𝜑= 1 + 1 + 𝐴2 + 4 1 + 𝐴2 /2
6
2𝜋𝑎
𝐴=
𝜆
Most plate heat exchangers approximate a sinusoidal geometry only.

Examples

>>> PlateExchanger.plate_enlargement_factor_analytical(amplitude=5E-4,
˓→wavelength=3.7E-3)

1.1611862034509677

plate_exchanger_identifier
Method to create an identifying string in format ‘L’ + wavelength + ‘A’ + amplitude + ‘B’ + chevron
angle-chevron angle. Wavelength and amplitude are specified in units of mm and rounded to two decimal
places.
class fluids.geometry.RectangularFinExchanger(fin_height, fin_thickness, fin_spacing,
length=None, width=None, layers=None,
plate_thickness=None, flow=’crossflow’)
Bases: object
Class representing a plate-fin heat exchanger with straight rectangular fins. All parameters are also attributes.

252 Chapter 2. API Reference


Fluids Documentation, Release 0.1

Parameters
fin_height [float] The total distance between the two metal plates sandwiching the fins and
holding them together (abbreviated h), [m]
fin_thickness [float] The thickness of the material the fins were formed from (abbreviated t),
[m]
fin_spacing [float] The unit cell spacing from one fin to the next; the space between the sides
of two fins plus one thickness (abbreviated s), [m]
length [float, optional] The total length of the flow passage of the plate-fin exchanger (abbrevi-
ated L), [m]
width [float, optional] The total width of the space the fins are in; this is also 𝑁𝑓 𝑖𝑛𝑠 × 𝑠 (abbre-
viated W), [m]
layers [int, optional] The number of layers in the plate-fin exchanger; note these HX almost
always single-pass only, [-]
plate_thickness [float, optional] The thickness of the metal separator between layers, [m]
flow [str, optional] One of ‘counterflow’, ‘crossflow’, or ‘parallelflow’

Notes

The only required parameters are the fin geometry itself; fin_height, fin_thickness, and fin_spacing.

References

[R6a2fe8cbf2f6-1], [R6a2fe8cbf2f6-2]

Examples

>>> PFE = RectangularFinExchanger(0.03, 0.001, 0.012)


>>> PFE.Dh
0.01595

Attributes
channel_height [float] The height of the channel the fluid flows in channel height =
fin height − fin thickness, [m]
channel_width [float] The width of the channel the fluid flows in channel width =
fin spacing − fin thickness, [m]
1
fin_count [int] The number of fins per unit length of the layer, fin count = fin spacing , [1/m]
blockage_ratio [float] The fraction of the layer which is blocked to flow by the fins,
blockage ratio = 𝑠·ℎ−𝑠·𝑡−𝑡(ℎ−𝑡)
𝑠·ℎ , [m]
A_channel [float] Flow area of a single channel in a single layer, channel area = (𝑠 − 𝑡)(ℎ − 𝑡),
[m]
P_channel [float] Wetted perimeter of a single channel in a single layer, channel perimeter =
2(𝑠 − 𝑡) + 2(ℎ − 𝑡), [m]
4𝐴𝑐ℎ𝑎𝑛𝑛𝑒𝑙
Dh [float] Hydraulic diameter of a single channel in a single layer, 𝐷ℎ𝑦𝑑𝑟𝑎𝑢𝑙𝑖𝑐 = 𝑃𝑐ℎ𝑎𝑛𝑛𝑒𝑙 , [m]

2.10. Tank and helical coil sizing (fluids.geometry) 253


Fluids Documentation, Release 0.1

layer_thickness [float] The thickness of a single layer - the sum of a fin height and a plate
thickness, [m]
layer_fin_count [int] The number of fins in a layer; rounded to the nearest whole fin, [-]
A_HX_layer [float] The surface area including fins for heat transfer in one layer of the HX,
[m^2]
A_HX [float] The total surface area of the heat exchanger with all layers combined, [m^2]
height [float] The height of all the layers of the heat exchanger combined, plus one extra plate
thickness, [m]
volume [float] The product of the height, width, and length of the HX, [m^3]
A_specific_HX [float] The specific surface area of the heat exchanger - square meters per meter
cubed, [m^3]

Methods

set_overall_geometry

set_overall_geometry(self )
class fluids.geometry.RectangularOffsetStripFinExchanger(fin_length, fin_height,
fin_thickness,
fin_spacing,
length=None,
width=None,
layers=None,
plate_thickness=None,
flow=’crossflow’)
Bases: fluids.geometry.RectangularFinExchanger

Methods

set_overall_geometry

class fluids.geometry.HyperbolicCoolingTower(H_inlet, D_outlet, H_outlet, D_inlet=None,


D_base=None, D_throat=None,
H_throat=None, H_support=None,
D_support=None, n_support=None,
inlet_rounding=None)
Bases: object
Class representing the geometry of a hyperbolic cooling tower, as used in many industries especially the poewr
industry. All parameters are also attributes.
H_inlet, D_outlet, and H_outlet are always required. Additionally, one set of the following parameters is re-
quired; H_support, D_support, n_support, and inlet_rounding are all optional as well.
• Inlet diameter
• Inlet diameter and throat diameter
• Inlet diameter and throat height

254 Chapter 2. API Reference


Fluids Documentation, Release 0.1

• Inlet diameter, throat diameter, and throat height


• Base diameter, throat diameter, and throat height
If the inlet diameter is provided but the throat diameter and/or the throat height are missing, two heuristics are
used to estimate them (to avoid these heuristics simply specify the values):
• Assume the throat elevation is 2/3 the elevation of the tower.
• Assume the throat diameter is 63% the diameter of the inlet.

Parameters
H_inlet [float] Height of the inlet zone of the cooling tower (also called rain zone), [m]
D_outlet [float] The inside diameter of the cooling tower outlet (top of the tower; the elevation
the concrete section ends), [m]
H_outlet [float] The height of the cooling tower outlet (top of the tower;the elevation the con-
crete section ends), [m]
D_inlet [float, optional] The inside diameter of the cooling tower inlet at the elevation the con-
crete section begins, [m]
D_base [float, optional] The diameter of the cooling tower at the very base of the tower (the
bottom of the inlet zone, at the elevation of the ground), [m]
D_throat [float, optional] The diameter of the cooling tower at its minimum section, called its
throat; where the two hyperbolas meet, [m]
h_throat [float, optional] The elevation of the cooling tower’s throat (its minimum section;
where the two hyperbolas meet), [m]
inlet_rounding [float, optional] Radius of an optional rounded protrusion from the lip of the
cooling tower shell base, which curves upwards from the lip (used to reduce the dead zone
area rather than having a flat lip), [m]
H_support [float, optional] The height of each support column, [m]
D_support [float, optional] The diameter of each support column, [m]
n_support [int, optional] The number of support columns of the cooling tower, [m]

Notes

Note there are two hyperbolas in a hyperbolic cooling tower - one under the throat and one above it; they are
not necessarily the same.
A hyperbolic cooling tower is not the absolute optimal design, but is is close. The optimality is determined
by the amount of material required to build it while maintaining its rigidity. For thermal design purposes, a
hyperbolic model covers any minor variation quite well.

References

[R9da9598dd59d-1], [R9da9598dd59d-2]

2.10. Tank and helical coil sizing (fluids.geometry) 255


Fluids Documentation, Release 0.1

Examples

>>> ct = HyperbolicCoolingTower(D_outlet=89.0, H_outlet=200, D_inlet=136.18, H_


˓→inlet=14.5)

>>> ct
<Hyperbolic cooling tower, inlet diameter=136.18 m, outlet diameter=89 m, inlet
˓→height=14.5 m, outlet height=200 m, throat diameter=85.7934 m, throat

˓→height=133.333 m, base diameter=146.427 m>

>>> ct.diameter(5)
142.84514486126062

Attributes
b_lower [float] The b parameter in the hyperbolic equation for the lower section of the cooling
tower, [m]
b_upper [float] The b parameter in the hyperbolic equation for the upper section of the cooling
tower, [m]

Methods

diameter(self, H) Calculates cooling tower diameter at a specified


height, using the formulas for either hyperbola, de-
pending on the height specified.

plot

diameter(self, H)
Calculates cooling tower diameter at a specified height, using the formulas for either hyperbola, depending
on the height specified.

𝐻 2 + 𝑏2
𝐷 = 𝐷𝑡ℎ𝑟𝑜𝑎𝑡
𝑏
The value of H and b used in the above equation is as follows:
• H_throat - H and b_lower if under the throat
• H - H_throat and b_upper, if above the throat

Parameters
H [float] Height at which to calculate the cooling tower diameter, [m]
Returns
D [float] Diameter of the cooling tower at the specified height, [m]

plot(self, pts=100)

256 Chapter 2. API Reference


Fluids Documentation, Release 0.1

class fluids.geometry.AirCooledExchanger(tube_rows, tube_passes, tubes_per_row,


tube_length, tube_diameter, fin_thickness,
angle=None, pitch=None, pitch_parallel=None,
pitch_normal=None, pitch_ratio=None,
fin_diameter=None, fin_height=None,
fin_density=None, fin_interval=None,
parallel_bays=1, bundles_per_bay=1,
fans_per_bay=1, corbels=False,
tube_thickness=None, fan_diameter=None)
Bases: object
Class representing the geometry of an air cooled heat exchanger with one or more tube bays, fans, or bundles.
All parameters are also attributes.
The minimum information required to describe an air cooler is as follows:
• tube_rows
• tube_passes
• tubes_per_row
• tube_length
• tube_diameter
• fin_thickness
Two of angle, pitch, pitch_parallel, and pitch_normal (pitch_ratio may take the place of pitch)
Either fin_diameter or fin_height. Either fin_density or fin_interval.
Parameters
tube_rows [int] Number of tube rows per bundle, [-]
tube_passes [int] Number of tube passes (times the fluid travels across one tube length), [-]
tubes_per_row [float] Number of tubes per row per bundle, [-]
tube_length [float] Total length of the tube bundle tubes, [m]
tube_diameter [float] Diameter of the bare tube, [m]
fin_thickness [float] Thickness of the fins, [m]
angle [float, optional] Angle of the tube layout, [degrees]
pitch [float, optional] Shortest distance between tube centers; defined in relation to the flow
direction only, [m]
pitch_parallel [float, optional] Distance between tube center along a line parallel to the flow;
has been called longitudinal pitch, pp, s2, SL, and p2, [m]
pitch_normal [float, optional] Distance between tube centers in a line 90° to the line of flow;
has been called the transverse pitch, pn, s1, ST, and p1, [m]
pitch_ratio [float, optional] Ratio of the pitch to bare tube diameter, [-]
fin_diameter [float, optional] Outer diameter of each tube after including the fin on both sides,
[m]
fin_height [float, optional] Height above bare tube of the tube fins, [m]
fin_density [float, optional] Number of fins per meter of tube, [1/m]

2.10. Tank and helical coil sizing (fluids.geometry) 257


Fluids Documentation, Release 0.1

fin_interval [float, optional] Space between each fin, including the thickness of one fin at its
base, [m]
parallel_bays [int, optional] Number of bays in the unit, [-]
bundles_per_bay [int, optional] Number of tube bundles per bay, [-]
fans_per_bay [int, optional] Number of fans per bay, [-]
corbels [bool, optional] Whether or not the air cooler has corbels, which increase the air veloc-
ity by adding half a tube to the sides for the case of non-rectangular tube layouts, [-]
tube_thickness [float, optional] Thickness of the bare metal tubes, [m]
fan_diameter [float, optional] Diameter of air cooler fan, [m]

References

[1]

Examples

>>> AC = AirCooledExchanger(tube_rows=4, tube_passes=4, tubes_per_row=56, tube_


˓→length=10.9728,

... tube_diameter=1*inch, fin_thickness=0.013*inch, fin_density=10/inch,


... angle=30, pitch=2.5*inch, fin_height=0.625*inch, tube_thickness=0.00338,
... bundles_per_bay=2, parallel_bays=3, corbels=True)

Attributes
bare_length [float] Length of bare tube between two fins bare length = fin interval − 𝑡𝑓 𝑖𝑛 , [m]
tubes_per_bundle [float] Total number of tubes per bundle 𝑁𝑡𝑢𝑏𝑒𝑠/𝑏𝑢𝑛𝑑𝑙𝑒 = 𝑁𝑡𝑢𝑏𝑒𝑠/𝑟𝑜𝑤 ·
𝑁𝑟𝑜𝑤𝑠 , [-]
tubes_per_bay [float] Total number of tubes per bay 𝑁𝑡𝑢𝑏𝑒𝑠/𝑏𝑎𝑦 = 𝑁𝑡𝑢𝑏𝑒𝑠/𝑏𝑢𝑛𝑑𝑙𝑒 ·
𝑁𝑏𝑢𝑛𝑑𝑙𝑒𝑠/𝑏𝑎𝑦 , [-]
tubes [float] Total number of tubes in all bundles in all bays combined 𝑁𝑡𝑢𝑏𝑒𝑠 = 𝑁𝑡𝑢𝑏𝑒𝑠/𝑏𝑎𝑦 ·
𝑁𝑏𝑎𝑦𝑠 , [-]
pitch_diagonal [float] Distance between tube centers in a diagonal line between one normal
[︁ (︀ )︀2 ]︁0.5
tube and one parallel tube; 𝑠𝐷 = 𝑠2𝐿 + 𝑠2𝑇 , [m]

A_bare_tube_per_tube [float] Area of the bare tube including the portion hidden by the fin
per tube 𝐴𝑏𝑎𝑟𝑒,𝑡𝑜𝑡𝑎𝑙/𝑡𝑢𝑏𝑒 = 𝜋𝐷𝑡𝑢𝑏𝑒 𝐿𝑡𝑢𝑏𝑒 , [m^2]
A_bare_tube_per_row [float] Area of the bare tube including the portion hidden by the fin per
tube row 𝐴𝑏𝑎𝑟𝑒,𝑡𝑜𝑡𝑎𝑙/𝑟𝑜𝑤 = 𝜋𝐷𝑡𝑢𝑏𝑒 𝐿𝑡𝑢𝑏𝑒 𝑁𝑡𝑢𝑏𝑒𝑠/𝑟𝑜𝑤 , [m^2]
A_bare_tube_per_bundle [float] Area of the bare tube including the portion hidden by the fin
per bundle 𝐴𝑏𝑎𝑟𝑒,𝑡𝑜𝑡𝑎𝑙/𝑏𝑢𝑛𝑑𝑙𝑒 = 𝜋𝐷𝑡𝑢𝑏𝑒 𝐿𝑡𝑢𝑏𝑒 𝑁𝑡𝑢𝑏𝑒𝑠/𝑏𝑢𝑛𝑑𝑙𝑒 , [m^2]
A_bare_tube_per_bay [float] Area of the bare tube including the portion hidden by the fin per
bay 𝐴𝑏𝑎𝑟𝑒,𝑡𝑜𝑡𝑎𝑙/𝑏𝑎𝑦 = 𝜋𝐷𝑡𝑢𝑏𝑒 𝐿𝑡𝑢𝑏𝑒 𝑁𝑡𝑢𝑏𝑒𝑠/𝑏𝑎𝑦 , [m^2]
A_bare_tube [float] Area of the bare tube including the portion hidden by the fin per in all
bundles and bays combined 𝐴𝑏𝑎𝑟𝑒,𝑡𝑜𝑡𝑎𝑙 = 𝜋𝐷𝑡𝑢𝑏𝑒 𝐿𝑡𝑢𝑏𝑒 𝑁𝑡𝑢𝑏𝑒𝑠 , [m^2]

258 Chapter 2. API Reference


Fluids Documentation, Release 0.1

A_tube_showing_per_tube [float] Area(︁ of the bare )︁ tube which is exposed per tube
𝑡𝑓 𝑖𝑛
𝐴𝑏𝑎𝑟𝑒,𝑠ℎ𝑜𝑤𝑖𝑛𝑔/𝑡𝑢𝑏𝑒 = 𝜋𝐷𝑡𝑢𝑏𝑒 𝐿𝑡𝑢𝑏𝑒 1 − fin interval , [m^2]

A_tube_showing_per_row [float] Area of the bare tube which is exposed per tube row, [m^2]
A_tube_showing_per_bundle [float] Area of the bare tube which is exposed per bundle, [m^2]
A_tube_showing_per_bay [float] Area of the bare tube which is exposed per bay, [m^2]
A_tube_showing [float] Area of the bare tube which is exposed in all bundles and bays com-
bined, [m^2]
A_per_fin [float] Surface area per fin 𝐴𝑓 𝑖𝑛 = 2 𝜋4 (𝐷𝑓2 𝑖𝑛 − 𝐷𝑡𝑢𝑏𝑒
2
) + 𝜋𝐷𝑓 𝑖𝑛 𝑡𝑓 𝑖𝑛 , [m^2]
A_fin_per_tube [float] Surface area of all fins per tube 𝐴𝑓 𝑖𝑛/𝑡𝑢𝑏𝑒 = 𝑁𝑓 𝑖𝑛𝑠/𝑚 𝐿𝑡𝑢𝑏𝑒 𝐴𝑓 𝑖𝑛 , [m^2]
A_fin_per_row [float] Surface area of all fins per row, [m^2]
A_fin_per_bundle [float] Surface area of all fins per bundle, [m^2]
A_fin_per_bay [float] Surface area of all fins per bay, [m^2]
A_fin [float] Surface area of all fins in all bundles and bays combined, [m^2]
A_per_tube [float] Surface area of combined finned and non-fined area exposed for heat trans-
fer per tube 𝐴𝑡𝑢𝑏𝑒 = 𝐴𝑏𝑎𝑟𝑒,𝑠ℎ𝑜𝑤𝑖𝑛𝑔/𝑡𝑢𝑏𝑒 + 𝐴𝑓 𝑖𝑛/𝑡𝑢𝑏𝑒 , [m^2]
A_per_row [float] Surface area of combined finned and non-finned area exposed for heat trans-
fer per tube row, [m^2]
A_per_bundle [float] Surface area of combined finned and non-finned area exposed for heat
transfer per tube bundle, [m^2]
A_per_bay [float] Surface area of combined finned and non-finned area exposed for heat trans-
fer per bay, [m^2]
A [float] Surface area of combined finned and non-finned area exposed for heat transfer in all
bundles and bays combined, [m^2]
A_increase [float] Ratio of actual surface area to bare tube surface area 𝐴𝑖𝑛𝑐𝑟𝑒𝑎𝑠𝑒 =
𝐴𝑡𝑢𝑏𝑒
𝐴𝑏𝑎𝑟𝑒,𝑡𝑜𝑡𝑎𝑙/𝑡𝑢𝑏𝑒 , [-]

A_tube_flow [float] The area for the fluid to flow in one tube, 𝜋/4 · 𝐷𝑖2 , [m^2]
channels [int] The number of tubes the fluid flows through at the inlet header, [-]
𝜋 2
tube_volume_per_tube [float] Fluid volume per tube inside 𝑉𝑡𝑢𝑏𝑒,𝑓 𝑙𝑜𝑤 = 4 𝐷𝑖 𝐿𝑡𝑢𝑏𝑒 , [m^3]
tube_volume_per_row [float] Fluid volume of tubes per row, [m^3]
tube_volume_per_bundle [float] Fluid volume of tubes per bundle, [m^3]
tube_volume_per_bay [float] Fluid volume of tubes per bay, [m^3]
tube_volume [float] Fluid volume of tubes in all bundles and bays combined, [m^3]
A_diagonal_per_bundle [float] Air flow area along the diagonal plane per bundle 𝐴𝑑 =
2𝑁𝑡𝑢𝑏𝑒𝑠/𝑟𝑜𝑤 𝐿𝑡𝑢𝑏𝑒 (𝑃𝑑 − 𝐷𝑡𝑢𝑏𝑒 − 2𝑁𝑓 𝑖𝑛𝑠/𝑚 ℎ𝑓 𝑖𝑛 𝑡𝑓 𝑖𝑛 ) + 𝐴extra,side , [m^2]
A_normal_per_bundle [float] Air flow area along the normal (transverse) plane; this is
normally the minimum flow area, except for some staggered configurations 𝐴𝑡 =
𝑁𝑡𝑢𝑏𝑒𝑠/𝑟𝑜𝑤 𝐿𝑡𝑢𝑏𝑒 (𝑃𝑡 − 𝐷𝑡𝑢𝑏𝑒 − 2𝑁𝑓 𝑖𝑛𝑠/𝑚 ℎ𝑓 𝑖𝑛 𝑡𝑓 𝑖𝑛 ) + 𝐴extra,side , [m^2]
A_min_per_bundle [float] Minimum air flow area per bundle; this is the characteristic area
for velocity calculation in most finned tube convection correlations 𝐴𝑚𝑖𝑛 = 𝑚𝑖𝑛(𝐴𝑑 , 𝐴𝑡 ),
[m^2]

2.10. Tank and helical coil sizing (fluids.geometry) 259


Fluids Documentation, Release 0.1

A_min_per_bay [float] Minimum air flow area per bay, [m^2]


A_min [float] Minimum air flow area, [m^2]
A_face_per_bundle [float] Face area per bundle 𝐴𝑓 𝑎𝑐𝑒 = 𝑃𝑇 (1 + 𝑁𝑡𝑢𝑏𝑒𝑠/𝑟𝑜𝑤 )𝐿𝑡𝑢𝑏𝑒 ; if corbels
are used, add 0.5 to tubes/row instead of 1, [m^2]
A_face_per_bay [float] Face area per bay, [m^2]
A_face [float] Total face area, [m^2]
flow_area_contraction_ratio [float] Ratio of A_min to A_face, [-]

fluids.geometry.SA_partial_sphere(D, h)
Calculates surface area of a partial sphere according to [1]. If h is half of D, the shape is half a sphere. No
bottom is considered in this function. Valid inputs are positive values of D and h, with h always smaller or equal
to D.
√︀
𝑎= ℎ(2𝑟 − ℎ)

𝐴 = 𝜋(𝑎2 + ℎ2 )
Parameters
D [float] Diameter of the sphere, [m]
h [float] Height, as measured from the cap to where the sphere is cut off [m]
Returns
SA [float] Surface area [m^2]

References

[1]

Examples

>>> SA_partial_sphere(1., 0.7)


2.199114857512855

fluids.geometry.V_partial_sphere(D, h)
Calculates volume of a partial sphere according to [1]. If h is half of D, the shape is half a sphere. No bottom is
considered in this function. Valid inputs are positive values of D and h, with h always smaller or equal to D.
√︀
𝑎= ℎ(2𝑟 − ℎ)

𝑉 = 1/6𝜋ℎ(3𝑎2 + ℎ2 )
Parameters
D [float] Diameter of the sphere, [m]
h [float] Height, as measured up to where the sphere is cut off, [m]
Returns
V [float] Volume [m^3]

260 Chapter 2. API Reference


Fluids Documentation, Release 0.1

References

[1]

Examples

>>> V_partial_sphere(1., 0.7)


0.4105014400690663

fluids.geometry.V_horiz_conical(D, L, a, h, headonly=False)
Calculates volume of a tank with conical ends, according to [1].

2𝑎𝑅2
𝑉𝑓 = 𝐴𝑓 𝐿 + 𝐾, 0 ≤ ℎ < 𝑅
3
2𝑎𝑅2
𝑉𝑓 = 𝐴𝑓 𝐿 + 𝜋/2, ℎ = 𝑅
3
2𝑎𝑅2
𝑉𝑓 = 𝐴𝑓 𝐿 + (𝜋 − 𝐾), 𝑅 < ℎ ≤ 2𝑅
3
1 √︀
𝐾 = cos−1 𝑀 + 𝑀 3 cosh−1 − 2𝑀 1 − 𝑀 2
𝑀
⃒ ⃒
⃒𝑅 − ℎ⃒
𝑀 =⃒ ⃒ ⃒
𝑅 ⃒
𝑅−ℎ √︀
𝐴𝑓 = 𝑅2 cos−1 − (𝑅 − ℎ) 2𝑅ℎ − ℎ2
𝑅
Parameters
D [float] Diameter of the main cylindrical section, [m]
L [float] Length of the main cylindrical section, [m]
a [float] Distance the cone head extends on one side, [m]
h [float] Height, as measured up to where the fluid ends, [m]
headonly [bool, optional] Function returns only the volume of a single head side if True
Returns
V [float] Volume [m^3]

References

[1]

Examples

Matching example from [1], with inputs in inches and volume in gallons.

>>> V_horiz_conical(D=108., L=156., a=42., h=36)/231


2041.1923581273443

2.10. Tank and helical coil sizing (fluids.geometry) 261


Fluids Documentation, Release 0.1

fluids.geometry.V_horiz_ellipsoidal(D, L, a, h, headonly=False)
Calculates volume of a tank with ellipsoidal ends, according to [1].
(︂ )︂
2 ℎ
𝑉𝑓 = 𝐴𝑓 𝐿 + 𝜋𝑎ℎ 1 −
3𝑅

𝑅−ℎ √︀
𝐴𝑓 = 𝑅2 cos−1 − (𝑅 − ℎ) 2𝑅ℎ − ℎ2
𝑅
Parameters
D [float] Diameter of the main cylindrical section, [m]
L [float] Length of the main cylindrical section, [m]
a [float] Distance the ellipsoidal head extends on one side, [m]
h [float] Height, as measured up to where the fluid ends, [m]
headonly [bool, optional] Function returns only the volume of a single head side if True
Returns
V [float] Volume [m^3]

References

[1]

Examples

Matching example from [1], with inputs in inches and volume in gallons.

>>> V_horiz_ellipsoidal(D=108, L=156, a=42, h=36)/231.


2380.9565415578145

fluids.geometry.V_horiz_guppy(D, L, a, h, headonly=False)
Calculates volume of a tank with guppy heads, according to [1].

2𝑎𝑅2
(︂ )︂
−1 ℎ 2𝑎 √︀
𝑉𝑓 = 𝐴𝑓 𝐿 + cos 1− + 2𝑅ℎ − ℎ2 (2ℎ − 3𝑅)(ℎ + 𝑅)
3 𝑅 9𝑅

𝑅−ℎ √︀
𝐴𝑓 = 𝑅2 cos−1 − (𝑅 − ℎ) 2𝑅ℎ − ℎ2
𝑅
Parameters
D [float] Diameter of the main cylindrical section, [m]
L [float] Length of the main cylindrical section, [m]
a [float] Distance the guppy head extends on one side, [m]
h [float] Height, as measured up to where the fluid ends, [m]
headonly [bool, optional] Function returns only the volume of a single head side if True
Returns
V [float] Volume [m^3]

262 Chapter 2. API Reference


Fluids Documentation, Release 0.1

References

[1]

Examples

Matching example from [1], with inputs in inches and volume in gallons.

>>> V_horiz_guppy(D=108., L=156., a=42., h=36)/231.


1931.7208029476762

fluids.geometry.V_horiz_spherical(D, L, a, h, headonly=False)
Calculates volume of a tank with spherical heads, according to [1].
𝜋𝑎
𝑉 𝑓 = 𝐴𝑓 𝐿 + (3𝑅2 + 𝑎2 ), ℎ = 𝑅, |𝑎| ≤ 𝑅
6
𝜋𝑎
𝑉 𝑓 = 𝐴𝑓 𝐿 + (3𝑅2 + 𝑎2 ), ℎ = 𝐷, |𝑎| ≤ 𝑅
3
(︂ )︂

𝑉𝑓 = 𝐴𝑓 𝐿 + 𝜋𝑎ℎ2 1 − , ℎ = 0, or |𝑎| = 0, 𝑅, −𝑅
3𝑅
{︃ [︃ (︃ (︂ )︂2 )︃ ]︃
𝑎 2𝑟3 2 2
𝑤3
(︂ )︂
−1 𝑅 − 𝑟𝑤 −1 𝑅 + 𝑟𝑤 𝑧 𝑅 −1 𝑤 𝑦 4𝑤
𝑉𝑓 = 𝐴𝑓 𝐿 + cos + cos − 2+ cos 2
− 2 𝑤𝑟 − tan−1 +
|𝑎| 3 𝑅(𝑤 − 𝑟) 𝑅(𝑤 + 𝑟) 𝑟 𝑟 𝑅 3 𝑧 3
[︃ ∫︁ √︂ ]︃
𝑅
𝑎 𝑅 2 − 𝑥2
𝑉 𝑓 = 𝐴𝑓 𝐿 + 2 (𝑟2 − 𝑥2 ) tan−1 𝑑𝑥 − 𝐴𝑓 𝑧 , ℎ ̸= 𝑅, 𝐷; 𝑎 ̸= 0, 𝑅, −𝑅, |𝑎| < 0.01𝐷
|𝑎| 𝑤 𝑟 2 − 𝑅2
𝑅−ℎ √︀
𝐴𝑓 = 𝑅2 cos−1 − (𝑅 − ℎ) 2𝑅ℎ − ℎ2
𝑅
𝑎2 + 𝑅2
𝑟=
2|𝑎|
𝑤 =𝑅−ℎ
√︀
𝑦 = 2𝑅ℎ − ℎ2
√︀
𝑧 = 𝑟 2 − 𝑅2
Parameters
D [float] Diameter of the main cylindrical section, [m]
L [float] Length of the main cylindrical section, [m]
a [float] Distance the spherical head extends on one side, [m]
h [float] Height, as measured up to where the fluid ends, [m]
headonly [bool, optional] Function returns only the volume of a single head side if True
Returns
V [float] Volume [m^3]

References

[1]

2.10. Tank and helical coil sizing (fluids.geometry) 263


Fluids Documentation, Release 0.1

Examples

Matching example from [1], with inputs in inches and volume in gallons.
>>> V_horiz_spherical(D=108., L=156., a=42., h=36)/231.
2303.9615116986183

fluids.geometry.V_horiz_torispherical(D, L, f, k, h, headonly=False)
Calculates volume of a tank with torispherical heads, according to [1].

𝑉𝑓 = 𝐴𝑓 𝐿 + 2𝑉1 , 0 ≤ ℎ ≤ ℎ1
𝑉𝑓 = 𝐴𝑓 𝐿 + 2(𝑉1,𝑚𝑎𝑥 + 𝑉2 + 𝑉3 ), ℎ1 < ℎ < ℎ2
𝑉𝑓 = 𝐴𝑓 𝐿 + 2[2𝑉1,𝑚𝑎𝑥 − 𝑉1 (ℎ = 𝐷 − ℎ) + 𝑉2,𝑚𝑎𝑥 + 𝑉3,𝑚𝑎𝑥 ], ℎ2 ≤ ℎ ≤ 𝐷
∫︁ √2𝑘𝐷ℎ−ℎ2 [︃ √ ]︃
2 −1 𝑛2 − 𝑤 2 √︀
2 2
𝑉1 = 𝑛 sin − 𝑤 𝑛 − 𝑤 𝑑𝑥
0 𝑛
∫︁ 𝑘𝐷 cos 𝛼 [︁ (︁
𝑤 𝑔 )︁ √︀ √︀ ]︁
𝑉2 = 𝑛2 cos−1 − cos−1 − 𝑤 𝑛2 − 𝑤2 + 𝑔 𝑛2 − 𝑔 2 𝑑𝑥
0 𝑛 𝑛
∫︁ 𝑔 √︀
𝑔 2 − 𝑥2
(︂ )︂
2 2 −1 𝑧 2 −1 𝑤
√︀
2
𝑉3 = (𝑟 − 𝑥 ) tan 𝑑𝑥 − 𝑔 cos − 𝑤 2𝑔(ℎ − ℎ1 ) − (ℎ − ℎ1 )
𝑤 𝑧 2 𝑔
𝑉1,𝑚𝑎𝑥 = 𝑣1 (ℎ = ℎ1 )

𝑣2,𝑚𝑎𝑥 = 𝑣2 (ℎ = ℎ2 )
𝜋𝑎1
𝑣3,𝑚𝑎𝑥 = (3𝑔 2 + 𝑎21 )
6
𝑎1 = 𝑓 𝐷(1 − cos 𝛼)
1 − 2𝑘
𝛼 = sin−1
2(𝑓 − 𝑘)
√︀
𝑛 = 𝑅 − 𝑘𝐷 + 𝑘 2 𝐷2 − 𝑥2
𝑔 = 𝑟 sin 𝛼

𝑟 = 𝑓𝐷

ℎ2 = 𝐷 − ℎ1

𝑤 =𝑅−ℎ
√︀
𝑧 = 𝑟2 − 𝑔2
Parameters
D [float] Diameter of the main cylindrical section, [m]
L [float] Length of the main cylindrical section, [m]
f [float] Dish-radius parameter; fD = dish radius [1/m]
k [float] knuckle-radius parameter ; kD = knuckle radius [1/m]
h [float] Height, as measured up to where the fluid ends, [m]
headonly [bool, optional] Function returns only the volume of a single head side if True
Returns
V [float] Volume [m^3]

264 Chapter 2. API Reference


Fluids Documentation, Release 0.1

References

[1]

Examples

Matching example from [1], with inputs in inches and volume in gallons.

>>> V_horiz_torispherical(D=108., L=156., f=1., k=0.06, h=36)/231.


2028.626670842139

fluids.geometry.V_vertical_conical(D, a, h)
Calculates volume of a vertical tank with a convex conical bottom, according to [1]. No provision for the top of
the tank is made here.
(︂ )︂2 (︂ )︂
𝜋 𝐷ℎ ℎ
𝑉𝑓 = , ℎ<𝑎
4 𝑎 3

𝜋𝐷2
(︂ )︂
2𝑎
𝑉𝑓 = ℎ− , ℎ≥𝑎
4 3
Parameters
D [float] Diameter of the main cylindrical section, [m]
a [float] Distance the cone head extends under the main cylinder, [m]
h [float] Height, as measured up to where the fluid ends, [m]
Returns
V [float] Volume [m^3]

References

[1]

Examples

Matching example from [1], with inputs in inches and volume in gallons.

>>> V_vertical_conical(132., 33., 24)/231.


250.67461381371024

fluids.geometry.V_vertical_ellipsoidal(D, a, h)
Calculates volume of a vertical tank with a convex ellipsoidal bottom, according to [1]. No provision for the top
of the tank is made here.
(︂ )︂2 (︂ )︂
𝜋 𝐷ℎ ℎ
𝑉𝑓 = 𝑎− , ℎ<𝑎
4 𝑎 3

𝜋𝐷2 (︁ 𝑎 )︁
𝑉𝑓 = ℎ− , ℎ≥𝑎
4 3
Parameters
D [float] Diameter of the main cylindrical section, [m]

2.10. Tank and helical coil sizing (fluids.geometry) 265


Fluids Documentation, Release 0.1

a [float] Distance the ellipsoid head extends under the main cylinder, [m]
h [float] Height, as measured up to where the fluid ends, [m]
Returns
V [float] Volume [m^3]

References

[1]

Examples

Matching example from [1], with inputs in inches and volume in gallons.
>>> V_vertical_ellipsoidal(132., 33., 24)/231.
783.3581681678445

fluids.geometry.V_vertical_spherical(D, a, h)
Calculates volume of a vertical tank with a convex spherical bottom, according to [1]. No provision for the top
of the tank is made here.
𝜋ℎ2 𝐷2
(︂ )︂
4ℎ
𝑉𝑓 = 2𝑎 + − , ℎ<𝑎
4 2𝑎 3

𝜋 2𝑎3 𝑎𝐷2
(︂ )︂
2
𝑉𝑓 = − + ℎ𝐷 , ℎ ≥ 𝑎
4 3 2
Parameters
D [float] Diameter of the main cylindrical section, [m]
a [float] Distance the spherical head extends under the main cylinder, [m]
h [float] Height, as measured up to where the fluid ends, [m]
Returns
V [float] Volume [m^3]

References

[1]

Examples

Matching example from [1], with inputs in inches and volume in gallons.
>>> V_vertical_spherical(132., 33., 24)/231.
583.6018352850442

fluids.geometry.V_vertical_torispherical(D, f, k, h)
Calculates volume of a vertical tank with a convex torispherical bottom, according to [1]. No provision for the
top of the tank is made here.
𝜋ℎ2 𝐷2
(︂ )︂
4ℎ
𝑉𝑓 = 2𝑎1 + 1 − , 0 ≤ ℎ ≤ 𝑎1
4 2𝑎1 3

266 Chapter 2. API Reference


Fluids Documentation, Release 0.1

[︃(︂ )︂2 ]︃ √
2𝑎31 𝑎1 𝐷12 𝜋𝑡𝑢2 𝜋𝑢3 𝑡 𝑠 𝑘2 𝐷2
(︂ )︂ [︂ (︂
𝜋 𝐷 2𝑢 − 𝑡 √︀
𝑉𝑓 = + + 𝜋𝑢 − 𝑘𝐷 +𝑠 + − + 𝜋𝐷(1 − 2𝑘) 𝑠 + 𝑡𝑢 − 𝑢2 + + c
4 3 2 2 2 3 4 4 2
[︃(︂ )︂2 ]︃ [︂ √
2𝑎31 𝑎1 𝐷12 𝜋𝑡3 𝑡 𝑠 𝑘2 𝐷2 𝜋𝐷2
(︂ )︂ ]︂
𝜋 𝜋𝑡 𝐷
𝑉𝑓 = + + − 𝑘𝐷 +𝑠 + + 𝜋𝐷(1 − 2𝑘) + sin−1 (cos 𝛼) + [ℎ − (𝑎1 + 𝑎2
4 3 2 2 2 12 4 2 4
1 − 2𝑘
𝛼 = sin−1
2(𝑓 − 𝑘)
𝑎1 = 𝑓 𝐷(1 − cos 𝛼)

𝑎2 = 𝑘𝐷 cos 𝛼

𝐷1 = 2𝑓 𝐷 sin 𝛼

𝑠 = (𝑘𝐷 sin 𝛼)2

𝑡 = 2𝑎2

𝑢 = ℎ − 𝑓 𝐷(1 − cos 𝛼)
Parameters
D [float] Diameter of the main cylindrical section, [m]
f [float] Dish-radius parameter; fD = dish radius [1/m]
k [float] knuckle-radius parameter ; kD = knuckle radius [1/m]
h [float] Height, as measured up to where the fluid ends, [m]
Returns
V [float] Volume [m^3]

References

[1]

Examples

Matching example from [1], with inputs in inches and volume in gallons.

>>> V_vertical_torispherical(D=132., f=1.0, k=0.06, h=24)/231.


904.0688283793511

fluids.geometry.V_vertical_conical_concave(D, a, h)
Calculates volume of a vertical tank with a concave conical bottom, according to [1]. No provision for the top
of the tank is made here.
𝜋𝐷2 (𝑎 + ℎ)3
(︂ )︂
𝑉 = 3ℎ + 𝑎 − , 0 ≤ ℎ < |𝑎|
12 𝑎2

𝜋𝐷2
𝑉 = (3ℎ + 𝑎), ℎ ≥ |𝑎|
12
Parameters
D [float] Diameter of the main cylindrical section, [m]
a [float] Negative distance the cone head extends inside the main cylinder, [m]

2.10. Tank and helical coil sizing (fluids.geometry) 267


Fluids Documentation, Release 0.1

h [float] Height, as measured up to where the fluid ends, [m]


Returns
V [float] Volume [m^3]

References

[1]

Examples

Matching example from [1], with inputs in inches and volume in gallons.
>>> V_vertical_conical_concave(D=113., a=-33, h=15)/231
251.15825565795188

fluids.geometry.V_vertical_ellipsoidal_concave(D, a, h)
Calculates volume of a vertical tank with a concave ellipsoidal bottom, according to [1]. No provision for the
top of the tank is made here.
𝜋𝐷2 (𝑎 + ℎ)2 (2𝑎 − ℎ)
(︂ )︂
𝑉 = 3ℎ + 2𝑎 − , 0 ≤ ℎ < |𝑎|
12 𝑎2
𝜋𝐷2
𝑉 = (3ℎ + 2𝑎), ℎ ≥ |𝑎|
12
Parameters
D [float] Diameter of the main cylindrical section, [m]
a [float] Negative distance the eppilsoid head extends inside the main cylinder, [m]
h [float] Height, as measured up to where the fluid ends, [m]
Returns
V [float] Volume [m^3]

References

[1]

Examples

Matching example from [1], with inputs in inches and volume in gallons.
>>> V_vertical_ellipsoidal_concave(D=113., a=-33, h=15)/231
44.84968851034856

fluids.geometry.V_vertical_spherical_concave(D, a, h)
Calculates volume of a vertical tank with a concave spherical bottom, according to [1]. No provision for the top
of the tank is made here.
3𝐷2 + 12𝑎2
[︂ (︂ )︂]︂
𝜋 2 𝑎 2 2 3
𝑉 = 3𝐷 ℎ + (3𝐷 + 4𝑎 ) + (𝑎 + ℎ) 4 − , 0 ≤ ℎ < |𝑎|
12 2 2𝑎(𝑎 + ℎ)
𝜋 [︁ 2 𝑎 ]︁
𝑉 = 3𝐷 ℎ + (3𝐷2 + 4𝑎2 ) , ℎ ≥ |𝑎|
12 2

268 Chapter 2. API Reference


Fluids Documentation, Release 0.1

Parameters
D [float] Diameter of the main cylindrical section, [m]
a [float] Negative distance the spherical head extends inside the main cylinder, [m]
h [float] Height, as measured up to where the fluid ends, [m]
Returns
V [float] Volume [m^3]

References

[1]

Examples

Matching example from [1], with inputs in inches and volume in gallons.

>>> V_vertical_spherical_concave(D=113., a=-33, h=15)/231


112.81405437348528

fluids.geometry.V_vertical_torispherical_concave(D, f, k, h)
Calculates volume of a vertical tank with a concave torispherical bottom, according to [1]. No provision for the
top of the tank is made here.

𝜋𝐷2 ℎ
𝑉 = − 𝑣1 (ℎ = 𝑎1 + 𝑎2 ) + 𝑣1 (ℎ = 𝑎1 + 𝑎2 − ℎ), 0 ≤ ℎ < 𝑎2
4
𝜋𝐷2 ℎ
𝑉 = − 𝑣1 (ℎ = 𝑎1 + 𝑎2 ) + 𝑣2 (ℎ = 𝑎1 + 𝑎2 − ℎ), 𝑎2 ≤ ℎ < 𝑎1 + 𝑎2
4
𝜋𝐷2 ℎ
𝑉 = − 𝑣1 (ℎ = 𝑎1 + 𝑎2 ) + 0, ℎ ≥ 𝑎1 + 𝑎2
4
[︃(︂ )︂2 ]︃ √
2𝑎31 𝑎1 𝐷12 𝜋𝑡𝑢2 𝜋𝑢3 𝑡 𝑠 𝑘2 𝐷2
(︂ )︂ [︂ (︂
𝜋 𝐷 2𝑢 − 𝑡 √︀ 2
𝑣1 = + + 𝜋𝑢 − 𝑘𝐷 + 𝑠 + − + 𝜋𝐷(1 − 2𝑘) 𝑠 + 𝑡𝑢 − 𝑢 + + c
4 3 2 2 2 3 4 4 2

𝜋ℎ2 𝐷2
(︂ )︂
4ℎ
𝑣2 = 2𝑎1 + 1 −
4 2𝑎1 3
1 − 2𝑘
𝛼 = sin−1
2(𝑓 − 𝑘)
𝑎1 = 𝑓 𝐷(1 − cos 𝛼)

𝑎2 = 𝑘𝐷 cos 𝛼

𝐷1 = 2𝑓 𝐷 sin 𝛼

𝑠 = (𝑘𝐷 sin 𝛼)2

𝑡 = 2𝑎2

𝑢 = ℎ − 𝑓 𝐷(1 − cos 𝛼)
Parameters
D [float] Diameter of the main cylindrical section, [m]

2.10. Tank and helical coil sizing (fluids.geometry) 269


Fluids Documentation, Release 0.1

f [float] Dish-radius parameter; fD = dish radius [1/m]


k [float] knuckle-radius parameter ; kD = knuckle radius [1/m]
h [float] Height, as measured up to where the fluid ends, [m]
Returns
V [float] Volume [m^3]

References

[1]

Examples

Matching example from [1], with inputs in inches and volume in gallons.

>>> V_vertical_torispherical_concave(D=113., f=0.71, k=0.081, h=15)/231


103.88569287163769

fluids.geometry.a_torispherical(D, f, k)
Calculates depth of a torispherical head according to [1].

𝑎 = 𝑎1 + 𝑎2

1 − 2𝑘
𝛼 = sin−1
2(𝑓 − 𝑘)
𝑎1 = 𝑓 𝐷(1 − cos 𝛼)

𝑎2 = 𝑘𝐷 cos 𝛼
Parameters
D [float] Diameter of the main cylindrical section, [m]
f [float] Dish-radius parameter; fD = dish radius [1/m]
k [float] knuckle-radius parameter ; kD = knuckle radius [1/m]
Returns
a [float] Depth of head [m]

References

[1]

Examples

Example from [1].

>>> a_torispherical(D=96., f=0.9, k=0.2)


25.684268924767125

270 Chapter 2. API Reference


Fluids Documentation, Release 0.1

fluids.geometry.SA_ellipsoidal_head(D, a)
Calculates the surface area of an ellipsoidal head according to [1]. Formula below is for the full shape, the result
of which is halved. The formula also does not support D being larger than a; this is ensured by simply swapping
the variables if necessary, as geometrically the result is the same. In the equations, a is the same and c is D.

𝜋𝑐2
(︂ )︂
2 1 + 𝑒1
𝑆𝐴 = 2𝜋𝑎 + ln
𝑒1 1 − 𝑒1
√︂
𝑐2
𝑒1 = 1 − 2
𝑎
Parameters
D [float] Diameter of the main cylindrical section, [m]
a [float] Distance the ellipsoidal head extends, [m]
Returns
SA [float] Surface area [m^2]

References

[1]

Examples

Spherical case

>>> SA_ellipsoidal_head(2, 1)
6.283185307179586

fluids.geometry.SA_conical_head(D, a)
Calculates the surface area of a conical head according to [1].
√︃ (︂ )︂2
𝜋𝐷 2
𝐷
𝑆𝐴 = 𝑎 +
2 2

Parameters
D [float] Diameter of the main cylindrical section, [m]
a [float] Distance the conical head extends, [m]
Returns
SA [float] Surface area [m^2]

References

[1]

2.10. Tank and helical coil sizing (fluids.geometry) 271


Fluids Documentation, Release 0.1

Examples

>>> SA_conical_head(2, 1)
4.442882938158366

fluids.geometry.SA_guppy_head(D, a)
Calculates the surface area of a guppy head according to [1]. Some work was involved in combining formulas
for the ellipse of the head, and the conic section on the sides.
𝜋𝐷 √︀ 2 𝜋𝐷
𝑆𝐴 = 𝐷 + 𝑎2 + 𝑎
4 2
Parameters
D [float] Diameter of the main cylindrical section, [m]
a [float] Distance the conical head extends, [m]
Returns
SA [float] Surface area [m^2]

References

[1]

Examples

>>> SA_guppy_head(2, 1)
6.654000019110157

fluids.geometry.SA_torispheroidal(D, fd, fk)


Calculates surface area of a torispherical head according to [1]. Somewhat involved. Equations are adapted to
be used for a full head.
𝑆𝐴 = 𝑆1 + 𝑆2

𝑆1 = 2𝜋𝐷2 𝑓𝑑 𝛼
(︂ (︂ (︂ )︂ (︂ )︂)︂)︂
𝛼 − 𝛼2 𝛼1 − 𝛼2
𝑆2 = 2𝜋𝐷2 𝑓𝑘 𝛼 − 𝛼1 + (0.5 − 𝑓𝑘 ) sin−1 − sin−1
𝑓𝑘 𝑓𝑘
⎛ √︃ ⎞
(︂ )︂2
0.5 − 𝑓𝑘 ⎠
𝛼1 = 𝑓𝑑 ⎝1 − 1 −
𝑓𝑑 − 𝑓𝑘
√︁
𝛼2 = 𝑓𝑑 − 𝑓𝑑2 − 2𝑓𝑑 𝑓𝑘 + 𝑓𝑘 − 0.25
𝑎
𝛼=
𝐷𝑖
Parameters
D [float] Diameter of the main cylindrical section, [m]
fd [float] Dish-radius parameter = f; fD = dish radius [1/m]
fk [float] knuckle-radius parameter = k; kD = knuckle radius [1/m]
Returns
SA [float] Surface area [m^2]

272 Chapter 2. API Reference


Fluids Documentation, Release 0.1

References

[1]

Examples

Example from [1].

>>> SA_torispheroidal(D=2.54, fd=1.039370079, fk=0.062362205)


6.00394283477063

fluids.geometry.V_from_h(h, D, L, horizontal=True, sideA=None, sideB=None, sideA_a=0,


sideB_a=0, sideA_f=None, sideA_k=None, sideB_f=None,
sideB_k=None)
Calculates partially full volume of a vertical or horizontal tank with different head types according to [1].
Parameters
h [float] Height of the liquid in the tank, [m]
D [float] Diameter of the cylindrical section of the tank, [m]
L [float] Length of the main cylindrical section of the tank, [m]
horizontal [bool, optional] Whether or not the tank is a horizontal or vertical tank
sideA [string, optional] The left (or bottom for vertical) head of the tank’s type; one of [None,
‘conical’, ‘ellipsoidal’, ‘torispherical’, ‘guppy’, ‘spherical’].
sideB [string, optional] The right (or top for vertical) head of the tank’s type; one of [None,
‘conical’, ‘ellipsoidal’, ‘torispherical’, ‘guppy’, ‘spherical’].
sideA_a [float, optional] The distance the head as specified by sideA extends down or to the
left from the main cylindrical section, [m]
sideB_a [float, optional] The distance the head as specified by sideB extends up or to the right
from the main cylindrical section, [m]
sideA_f [float, optional] Dish-radius parameter for side A; fD = dish radius [1/m]
sideA_k [float, optional] knuckle-radius parameter for side A; kD = knuckle radius [1/m]
sideB_f [float, optional] Dish-radius parameter for side B; fD = dish radius [1/m]
sideB_k [float, optional] knuckle-radius parameter for side B; kD = knuckle radius [1/m]
Returns
V [float] Volume up to h [m^3]

References

[1]

Examples

>>> V_from_h(h=7, D=1.5, L=5., horizontal=False, sideA='conical',


... sideB='conical', sideA_a=2., sideB_a=1.)
10.013826583317465

2.10. Tank and helical coil sizing (fluids.geometry) 273


Fluids Documentation, Release 0.1

fluids.geometry.SA_tank(D, L, sideA=None, sideB=None, sideA_a=0, sideB_a=0, sideA_f=None,


sideA_k=None, sideB_f=None, sideB_k=None, full_output=False)
Calculates the surface are of a cylindrical tank with optional heads. In the degenerate case of being provided
with only D and L, provides the surface area of a cylinder.
Parameters
D [float] Diameter of the cylindrical section of the tank, [m]
L [float] Length of the main cylindrical section of the tank, [m]
sideA [string, optional] The left (or bottom for vertical) head of the tank’s type; one of [None,
‘conical’, ‘ellipsoidal’, ‘torispherical’, ‘guppy’, ‘spherical’].
sideB [string, optional] The right (or top for vertical) head of the tank’s type; one of [None,
‘conical’, ‘ellipsoidal’, ‘torispherical’, ‘guppy’, ‘spherical’].
sideA_a [float, optional] The distance the head as specified by sideA extends down or to the
left from the main cylindrical section, [m]
sideB_a [float, optional] The distance the head as specified by sideB extends up or to the right
from the main cylindrical section, [m]
sideA_f [float, optional] Dish-radius parameter for side A; fD = dish radius [1/m]
sideA_k [float, optional] knuckle-radius parameter for side A; kD = knuckle radius [1/m]
sideB_f [float, optional] Dish-radius parameter for side B; fD = dish radius [1/m]
sideB_k [float, optional] knuckle-radius parameter for side B; kD = knuckle radius [1/m]
Returns
SA [float] Surface area of the tank [m^2]
areas [tuple, only returned if full_output == True] (sideA_SA, sideB_SA, lateral_SA)
Other Parameters
full_output [bool, optional] Returns a tuple of (sideA_SA, sideB_SA, lateral_SA) if True

Examples

Cylinder, Spheroid, Long Cones, and spheres. All checked.

>>> SA_tank(D=2, L=2)


18.84955592153876
>>> SA_tank(D=1., L=0, sideA='ellipsoidal', sideA_a=2, sideB='ellipsoidal',
... sideB_a=2)
28.480278854014387
>>> SA_tank(D=1., L=5, sideA='conical', sideA_a=2, sideB='conical',
... sideB_a=2)
22.18452243965656
>>> SA_tank(D=1., L=5, sideA='spherical', sideA_a=0.5, sideB='spherical',
... sideB_a=0.5)
18.84955592153876

fluids.geometry.sphericity(A, V)
Returns the sphericity of a particle of surface area A and volume V. Sphericity is the ratio of the surface area of
a sphere with the same volume as the particle (equivalent diameter) to the actual surface area of the particle.
1 2
A of sphere with 𝑉𝑝 𝜋 3 (6𝑉𝑝 ) 3
Ψ= =
𝐴𝑝 𝐴𝑝

274 Chapter 2. API Reference


Fluids Documentation, Release 0.1

Parameters
A [float] Surface area of particle, [m^2]
V [float] Volume of particle, [m^3]
Returns
Psi [float] Sphericity [-]

Notes

All non-spherical particles have spericities less than 1 but greater than 0. Many common geometrical shapes
have their results calculated exactly in [2].

References

[1], [2]

Examples

>>> sphericity(10., 2.)


0.767663317071005

For a cube of side length a=3, the surface area is 6*a^2=54 and volume a^3=27. Its sphericity is then:
>>> sphericity(A=54, V=27)
0.8059959770082346

fluids.geometry.aspect_ratio(Dmin, Dmax)
Returns the aspect ratio of a shape with minimum and maximum dimension, Dmin and Dmax.
𝐷𝑚𝑖𝑛
𝐴𝑅 =
𝐷𝑚𝑎𝑥
Parameters
Dmin [float] Minimum dimension, [m]
Dmax [float] Maximum dimension, [m]
Returns
a_r [float] Aspect ratio [-]

Examples

>>> aspect_ratio(.2, 2)
0.1

fluids.geometry.circularity(A, P)
Returns the circularity of a shape with area A and perimeter P.
4𝜋𝐴
𝑓𝑐𝑖𝑟𝑐 =
𝑃2
Defined to be 1 for a circle. Used to characterize particles. Any non-circular shape must have a circularity less
than one.

2.10. Tank and helical coil sizing (fluids.geometry) 275


Fluids Documentation, Release 0.1

Parameters
A [float] Area of the shape, [m^2]
P [float] Perimeter of the shape, [m]
Returns
f_circ [float] Circularity of the shape [-]

Examples

Square, side length = 2 (all squares are the same):


>>> circularity(A=(2*2), P=4*2)
0.7853981633974483

Rectangle, one side length = 1, second side length = 100


>>> D1 = 1
>>> D2 = 100
>>> A = D1*D2
>>> P = 2*D1 + 2*D2
>>> circularity(A, P)
0.030796908671598795

fluids.geometry.A_cylinder(D, L)
Returns the surface area of a cylinder.
𝜋𝐷2
𝐴 = 𝜋𝐷𝐿 + 2 ·
4
Parameters
D [float] Diameter of the cylinder, [m]
L [float] Length of the cylinder, [m]
Returns
A [float] Surface area [m^2]

Examples

>>> A_cylinder(0.01, .1)


0.0032986722862692833

fluids.geometry.V_cylinder(D, L)
Returns the volume of a cylinder.
𝜋𝐷2
𝑉 = 𝐿
4
Parameters
D [float] Diameter of the cylinder, [m]
L [float] Length of the cylinder, [m]
Returns
V [float] Volume [m^3]

276 Chapter 2. API Reference


Fluids Documentation, Release 0.1

Examples

>>> V_cylinder(0.01, .1)


7.853981633974484e-06

fluids.geometry.A_hollow_cylinder(Di, Do, L)
Returns the surface area of a hollow cylinder.

𝜋𝐷𝑜2 𝜋𝐷𝑖2
𝐴 = 𝜋𝐷𝑜 𝐿 + 𝜋𝐷𝑖 𝐿 + 2 · −2·
4 4
Parameters
Di [float] Diameter of the hollow in the cylinder, [m]
Do [float] Diameter of the exterior of the cylinder, [m]
L [float] Length of the cylinder, [m]
Returns
A [float] Surface area [m^2]

Examples

>>> A_hollow_cylinder(0.005, 0.01, 0.1)


0.004830198704894308

fluids.geometry.V_hollow_cylinder(Di, Do, L)
Returns the volume of a hollow cylinder.

𝜋𝐷𝑜2 𝜋𝐷𝑖2
𝑉 = 𝐿−𝐿
4 4
Parameters
Di [float] Diameter of the hollow in the cylinder, [m]
Do [float] Diameter of the exterior of the cylinder, [m]
L [float] Length of the cylinder, [m]
Returns
V [float] Volume [m^3]

Examples

>>> V_hollow_cylinder(0.005, 0.01, 0.1)


5.890486225480862e-06

fluids.geometry.A_multiple_hole_cylinder(Do, L, holes)
Returns the surface area of a cylinder with multiple holes. Calculation will naively return a negative value or
other impossible result if the number of cylinders added is physically impossible. Holes may be of different
shapes, but must be perpendicular to the axis of the cylinder.
𝑛 (︂
𝜋𝐷𝑜2 ∑︁ 𝜋𝐷𝑖2
)︂
𝐴 = 𝜋𝐷𝑜 𝐿 + 2 · + 𝜋𝐷𝑖 𝐿 − 2 ·
4 𝑖
4

2.10. Tank and helical coil sizing (fluids.geometry) 277


Fluids Documentation, Release 0.1

Parameters
Do [float] Diameter of the exterior of the cylinder, [m]
L [float] Length of the cylinder, [m]
holes [list] List of tuples containing (diameter, count) pairs of descriptions for each of the holes
sizes.
Returns
A [float] Surface area [m^2]

Examples

>>> A_multiple_hole_cylinder(0.01, 0.1, [(0.005, 1)])


0.004830198704894308

fluids.geometry.V_multiple_hole_cylinder(Do, L, holes)
Returns the solid volume of a cylinder with multiple cylindrical holes. Calculation will naively return a negative
value or other impossible result if the number of cylinders added is physically impossible.

𝜋𝐷𝑜2 𝜋𝐷𝑖2
𝑉 = 𝐿−𝐿
4 4
Parameters
Do [float] Diameter of the exterior of the cylinder, [m]
L [float] Length of the cylinder, [m]
holes [list] List of tuples containing (diameter, count) pairs of descriptions for each of the holes
sizes.
Returns
V [float] Volume [m^3]

Examples

>>> V_multiple_hole_cylinder(0.01, 0.1, [(0.005, 1)])


5.890486225480862e-06

fluids.geometry.pitch_angle_solver(angle=None, pitch=None, pitch_parallel=None,


pitch_normal=None)
Utility to take any two of angle, pitch, pitch_parallel, and pitch_normal and calculate the other two. This is
useful for applications with tube banks, as in shell and tube heat exchangers or air coolers and allows for a wider
range of user input.

pitch normal = pitch · sin(angle)

pitch parallel = pitch · cos(angle)


Parameters
angle [float, optional] The angle of the tube layout, [degrees]
pitch [float, optional] The shortest distance between tube centers; defined in relation to the flow
direction only, [m]

278 Chapter 2. API Reference


Fluids Documentation, Release 0.1

pitch_parallel [float, optional] The distance between tube center along a line parallel to the
flow; has been called longitudinal pitch, pp, s2, SL, and p2, [m]
pitch_normal [float, optional] The distance between tube centers in a line 90° to the line of
flow; has been called the transverse pitch, pn, s1, ST, and p1, [m]
Returns
angle [float] The angle of the tube layout, [degrees]
pitch [float] The shortest distance between tube centers; defined in relation to the flow direction
only, [m]
pitch_parallel [float] The distance between tube center along a line parallel to the flow; has
been called longitudinal pitch, pp, s2, SL, and p2, [m]
pitch_normal [float] The distance between tube centers in a line 90° to the line of flow; has
been called the transverse pitch, pn, s1, ST, and p1, [m]

Notes

For the 90 and 0 degree case, the normal or parallel pitches can be zero; given the angle and the zero value,
obviously is it not possible to calculate the pitch and a math error will be raised.
No exception will be raised if three or four inputs are provided; the other two will simply be calculated according
to the list of if statements used.
An exception will be raised if only one input is provided.

References

[1]

Examples

>>> pitch_angle_solver(pitch=1, angle=30)


(30, 1, 0.8660254037844387, 0.49999999999999994)

2.11 Jet Pump (ejector/eductor) Sizing and Rating (fluids.jet_pump)

fluids.jet_pump.liquid_jet_pump(rhop, rhos, Kp=0.0, Ks=0.1, Km=0.15, Kd=0.1,


d_nozzle=None, d_mixing=None, d_diffuser=None,
Qp=None, Qs=None, P1=None, P2=None, P5=None,
nozzle_retracted=True, max_variations=100)
Calculate the remaining two variables in a liquid jet pump, using a model presented in [1] as well as [2], [3],
and [4].
2𝐶𝑀 2 𝑅2 𝐶𝑀 2 𝑅2
2𝑅 + 1−𝑅 − 𝑅2 (1 + 𝐶𝑀 )(1 + 𝑀 )(1 + 𝐾𝑚 + 𝐾𝑑 + 𝛼2 ) − (1−𝑅)2 (1 + 𝐾𝑠 )
𝑁= (︁ )︁
2𝐶𝑀 2 𝑅2 𝐶𝑀 2 𝑅2
(1 + 𝐾𝑝 ) − 2𝑅 − 1−𝑅 + 𝑅2 (1 + 𝐶𝑀 )(1 + 𝑀 )(1 + 𝐾𝑚 + 𝐾𝑑 + 𝛼2 ) + (1 − 𝑗) (1−𝑅)2 (1 + 𝐾𝑠 )

(︂ )︂2 [︃ (︂ )︂2 ]︃
1 𝑄𝑝 𝑀𝑅
𝑃1 − 𝑃2 = 𝜌𝑝 (1 + 𝐾𝑝 ) − 𝐶(1 + 𝐾𝑠 )
2 𝐴𝑛 1−𝑅

2.11. Jet Pump (ejector/eductor) Sizing and Rating (fluids.jet_pump) 279


Fluids Documentation, Release 0.1

𝑃5 − 𝑃2
Pressure ratio = 𝑁 =
𝑃1 − 𝑃5
𝑄𝑠
Volume flow ratio = 𝑀 =
𝑄𝑝
𝑄𝑠 (𝑃5 − 𝑃2 )
Jet pump efficiency = 𝜂 = 𝑀 · 𝑁 =
𝑄𝑝 (𝑃1 − 𝑃5 )
𝐴𝑛
𝑅=
𝐴𝑚
𝜌𝑠
𝐶=
𝜌𝑝
There is no guarantee a solution will be found for the provided variable values, but every combination of two
missing variables are supported.
Parameters
rhop [float] The density of the primary (motive) fluid, [kg/m^3]
rhos [float] The density of the secondary fluid (drawn from the vacuum chamber), [kg/m^3]
Kp [float, optional] The primary nozzle loss coefficient, [-]
Ks [float, optional] The secondary inlet loss coefficient, [-]
Km [float, optional] The mixing chamber loss coefficient, [-]
Kd [float, optional] The diffuser loss coefficient, [-]
d_nozzle [float, optional] The inside diameter of the primary fluid’s nozle, [m]
d_mixing [float, optional] The diameter of the mixing chamber, [m]
d_diffuser [float, optional] The diameter of the diffuser at its exit, [m]
Qp [float, optional] The volumetric flow rate of the primary fluid, [m^3/s]
Qs [float, optional] The volumetric flow rate of the secondary fluid, [m^3/s]
P1 [float, optional] The pressure of the primary fluid entering its nozzle, [Pa]
P2 [float, optional] The pressure of the secondary fluid at the entry of the ejector, [Pa]
P5 [float, optional] The pressure at the exit of the diffuser, [Pa]
nozzle_retracted [bool, optional] Whether or not the primary nozzle’s exit is before the mixing
chamber, or somewhat inside it, [-]
max_variations [int, optional] When the initial guesses do not lead to a converged solution, try
this many more guesses at converging the problem, [-]
Returns
solution [dict] Dictionary of calculated parameters, [-]

Notes

The assumptions of the model are:


• The flows are one dimensional except in the mixing chamber.
• The mixing chamber has constant cross-sectional area.
• The mixing happens entirely in the mixing chamber, prior to entry into the diffuser.

280 Chapter 2. API Reference


Fluids Documentation, Release 0.1

• The primary nozzle is in a straight line with the middle of the mixing chamber.
• Both fluids are incompressible, and have no excess volume on mixing.
• Primary and secondary flows both enter the mixing throat with their own uniform velocity distribution; the
mixed stream leaves with a uniform velocity profile.
• If the secondary fluid is a gas, it undergoes isothermal compression in the throat and diffuser.
• If the secondary fluid is a gas or contains a bubbly gas, it is homogeneously distributed in a continuous
liquid phase.
• Heat transfer between the fluids is negligible - there is no change in density due to temperature changes
• The change in the solubility of a dissolved gas, if there is one, is negigibly changed by temperature or
pressure changes.
The model can be derived from the equations in liquid_jet_pump_ancillary and the following:
Conservation of energy at the primary nozzle, secondary inlet, and diffuser exit: .. math:

P_1 = P_3 + \frac{1}{2}\rho_p V_n^2 + K_p\left(\frac{1}{2}\rho_p V_n^2\right)


(︂ )︂
1 1
𝑃2 = 𝑃3 + 𝜌𝑠 𝑉32 + 𝐾𝑠 𝜌𝑠 𝑉32
2 2
(︂ )︂
1 1
𝑃5 = 𝑃4 + 𝜌𝑑 𝑉42 − 𝐾𝑑 𝜌𝑑 𝑉42
2 2
Continuity of the ejector:

𝜌𝑝 𝑄𝑝 + 𝜌𝑠 𝑄𝑠 = 𝜌𝑑 𝑄𝑑

References

[1], [2], [3], [4]

Examples

>>> ans = liquid_jet_pump(rhop=998., rhos=1098., Km=.186, Kd=0.12, Ks=0.11,


... Kp=0.04, d_mixing=0.045, Qs=0.01, Qp=.01, P2=133600,
... P5=200E3, nozzle_retracted=False, max_variations=10000)
>>> s = []
>>> for key, value in ans.items():
... s.append('%s: %g' %(key, value))
>>> sorted(s)
['M: 1', 'N: 0.293473', 'P1: 426256', 'P2: 133600', 'P5: 200000', 'Qp: 0.01',
˓→'Qs: 0.01', 'R: 0.247404', 'alpha: 1e-06', 'd_diffuser: 45', 'd_mixing: 0.045',

˓→'d_nozzle: 0.0223829', 'efficiency: 0.293473']

fluids.jet_pump.liquid_jet_pump_ancillary(rhop, rhos, Kp, Ks, d_nozzle=None,


d_mixing=None, Qp=None, Qs=None,
P1=None, P2=None)
Calculates the remaining variable in a liquid jet pump when solving for one if the inlet variables only and the rest
of them are known. The equation comes from conservation of energy and momentum in the mixing chamber.
The variable to be solved for must be one of d_nozzle, d_mixing, Qp, Qs, P1, or P2.
1 1
𝑃1 − 𝑃2 = 𝜌𝑝 𝑉𝑛2 (1 + 𝐾𝑝 ) − 𝜌𝑠 𝑉32 (1 + 𝐾𝑠 )
2 2

2.11. Jet Pump (ejector/eductor) Sizing and Rating (fluids.jet_pump) 281


Fluids Documentation, Release 0.1

Rearrange to express V3 in terms of Vn, and using the density ratio C, the expression becomes:
[︃ (︂ )︂2 ]︃
1 2 𝑀𝑅
𝑃1 − 𝑃2 = 𝜌𝑝 𝑉𝑛 (1 + 𝐾𝑝 ) − 𝐶(1 + 𝐾𝑠 )
2 1−𝑅

Using the primary nozzle area and flow rate:


(︂ )︂2 [︃ (︂ )︂2 ]︃
1 𝑄𝑝 𝑀𝑅
𝑃1 − 𝑃2 = 𝜌𝑝 (1 + 𝐾𝑝 ) − 𝐶(1 + 𝐾𝑠 )
2 𝐴𝑛 1−𝑅

For P, P2, Qs, and Qp, the equation can be rearranged explicitly for them. For d_mixing and d_nozzle, a bounded
solver is used searching between 1E-9 m and 20 times the other diameter which was specified.
Parameters
rhop [float] The density of the primary (motive) fluid, [kg/m^3]
rhos [float] The density of the secondary fluid (drawn from the vacuum chamber), [kg/m^3]
Kp [float] The primary nozzle loss coefficient, [-]
Ks [float] The secondary inlet loss coefficient, [-]
d_nozzle [float, optional] The inside diameter of the primary fluid’s nozle, [m]
d_mixing [float, optional] The diameter of the mixing chamber, [m]
Qp [float, optional] The volumetric flow rate of the primary fluid, [m^3/s]
Qs [float, optional] The volumetric flow rate of the secondary fluid, [m^3/s]
P1 [float, optional] The pressure of the primary fluid entering its nozzle, [Pa]
P2 [float, optional] The pressure of the secondary fluid at the entry of the ejector, [Pa]
Returns
solution [float] The parameter not specified (one of d_nozzle, d_mixing, Qp, Qs, P1, or P2),
(units of m, m, m^3/s, m^3/s, Pa, or Pa respectively)

Notes

The following SymPy code was used to obtain the analytical formulas ( they are not shown here due to their
length):
>>> from sympy import *
>>> A_nozzle, A_mixing, Qs, Qp, P1, P2, rhos, rhop, Ks, Kp = symbols('A_nozzle, A_
˓→mixing, Qs, Qp, P1, P2, rhos, rhop, Ks, Kp')

>>> R = A_nozzle/A_mixing
>>> M = Qs/Qp
>>> C = rhos/rhop
>>> rhs = rhop/2*(Qp/A_nozzle)**2*((1+Kp) - C*(1 + Ks)*((M*R)/(1-R))**2 )
>>> new = Eq(P1 - P2, rhs)
>>> #solve(new, Qp)
>>> #solve(new, Qs)
>>> #solve(new, P1)
>>> #solve(new, P2)

References

[1]

282 Chapter 2. API Reference


Fluids Documentation, Release 0.1

Examples

Calculating primary fluid nozzle inlet pressure P1:


>>> liquid_jet_pump_ancillary(rhop=998., rhos=1098., Ks=0.11, Kp=.04,
... P2=133600, Qp=0.01, Qs=0.01, d_mixing=0.045, d_nozzle=0.02238)
426434.60314398084

2.12 Mixing (fluids.mixing)

fluids.mixing.agitator_time_homogeneous(N, P, T, H, mu, rho, D=None, homogeneity=0.95)


Calculates time for a fluid mizing in a tank with an impeller to reach a specified level of homogeneity, according
to [1].
𝑃𝑔
𝑁𝑝 =
𝜌𝑁 3 𝐷5
𝜌𝐷2 𝑁
𝑅𝑒𝑖𝑚𝑝 =
𝜇
constant = 𝑁𝑝1/3 𝑅𝑒𝑖𝑚𝑝
𝐹 𝑜 = 5.2/constantfor turbulent regime
𝐹 𝑜 = (183/constant)2 for transition regime
Parameters
N [float:] Speed of impeller, [revolutions/s]
P [float] Actual power required to mix, ignoring mechanical inefficiencies [W]
T [float] Tank diameter, [m]
H [float] Tank height, [m]
mu [float] Mixture viscosity, [Pa*s]
rho [float] Mixture density, [kg/m^3]
D [float, optional] Impeller diameter [m]
homogeneity [float, optional] Fraction completion of mixing, []
Returns
t [float] Time for specified degree of homogeneity [s]

Notes

If impeller diameter is not specified, assumed to be 0.5 tank diameters.


The first example is solved forward rather than backwards here. A rather different result is obtained, but is
accurate.
No check to see if the mixture if laminar is currently implemented. This would under predict the required time.

References

[1]

2.12. Mixing (fluids.mixing) 283


Fluids Documentation, Release 0.1

Examples

>>> agitator_time_homogeneous(D=36*.0254, N=56/60., P=957., T=1.83, H=1.83, mu=0.


˓→018, rho=1020, homogeneity=.995)

15.143198226374668

>>> agitator_time_homogeneous(D=1, N=125/60., P=298., T=3, H=2.5, mu=.5, rho=980,


˓→homogeneity=.95)

67.7575069865228

fluids.mixing.Kp_helical_ribbon_Rieger(D, h, nb, pitch, width, T)


Calculates product of power number and Reynolds number for a specified geometry for a heilical ribbon mixer
in the laminar regime. One of several correlations listed in [1], it used more data than other listed correlations
and was recommended.
ℎ (︁ 𝑐 )︁−0.38 (︁ 𝑝 )︁−0.35 (︁ 𝑤 )︁0.20 0.78
𝐾𝑝 = 82.8 𝑛𝑏
𝐷 𝐷 𝐷 𝐷
Parameters
D [float] Impeller diameter [m]
h [float] Ribbon mixer height, [m]
nb [float:] Number of blades, [-]
pitch [float] Height of one turn around a helix [m]
width [float] Width of one blade [m]
T [float] Tank diameter, [m]
Returns
Kp [float] Product of Power number and Reynolds number for laminar regime []

Notes

Example is from example 9-6 in [1]. Confirmed.

References

[1], [2]

Examples

>>> Kp_helical_ribbon_Rieger(D=1.9, h=1.9, nb=2, pitch=1.9, width=.19, T=2)


357.39749163259256

fluids.mixing.time_helical_ribbon_Grenville(Kp, N)
Calculates product of time required for mixing in a helical ribbon coil in the laminar regime according to the
Grenville [2] method recommended in [1].

𝑡 = 896 × 103 𝐾𝑝−1.69 /𝑁

Parameters

284 Chapter 2. API Reference


Fluids Documentation, Release 0.1

Kp [float] Product of power number and Reynolds number for laminar regime []
N [float] Speed of impeller, [revolutions/s]
Returns
t [float] Time for homogeneity [s]

Notes

Degree of homogeneity is not specified. Example is from example 9-6 in [1]. Confirmed.

References

[1], [2]

Examples

>>> time_helical_ribbon_Grenville(357.4, 4/60.)


650.980654028894

fluids.mixing.size_tee(Q1, Q2, D, D2, n=1, pipe_diameters=5)


Calculates CoV of an optimal or specified tee for mixing at a tee according to [1]. Assumes turbulent flow. The
smaller stream in injected into the main pipe, which continues straight. COV calculation is according to [2].

𝑇 𝑂𝐷𝑂

Parameters
Q1 [float] Volumetric flow rate of larger stream [m^3/s]
Q2 [float] Volumetric flow rate of smaller stream [m^3/s]
D [float] Diameter of pipe after tee [m]
D2 [float] Diameter of mixing inlet, optional (optimally calculated if not specified) [m]
n [float] Number of jets, 1 to 4 []
pipe_diameters [float] Number of diameters along tail pipe for CoV calculation, 0 to 5 []
Returns
CoV [float] Standard deviation of dimensionless concentration [-]

Notes

Not specified if this works for liquid also, though probably not. Example is from example Example 9-6 in [1].
Low precision used in example.

References

[1], [2]

2.12. Mixing (fluids.mixing) 285


Fluids Documentation, Release 0.1

Examples

>>> size_tee(Q1=11.7, Q2=2.74, D=0.762, D2=None, n=1, pipe_diameters=5)


0.2940930233038544

fluids.mixing.COV_motionless_mixer(Ki, Q1, Q2, pipe_diameters)


Calculates CoV of a motionless mixer with a regression parameter in [1] and originally in [2].
𝐶𝑜𝑉 𝐿/𝐷
= 𝐾𝑖
𝐶𝑜𝑉0
Parameters
Ki [float] Correlation parameter specific to a mixer’s design, [-]
Q1 [float] Volumetric flow rate of larger stream [m^3/s]
Q2 [float] Volumetric flow rate of smaller stream [m^3/s]
pipe_diameters [float] Number of diameters along tail pipe for CoV calculation, 0 to 5 []
Returns
CoV [float] Standard deviation of dimensionless concentration [-]

Notes

Example 7-8.3.2 in [1], solved backwards.

References

[1], [2]

Examples

>>> COV_motionless_mixer(Ki=.33, Q1=11.7, Q2=2.74, pipe_diameters=4.74/.762)


0.0020900028665727685

fluids.mixing.K_motionless_mixer(K, L, D, fd)
Calculates loss coefficient of a motionless mixer with a regression parameter in [1] and originally in [2].
𝐿
𝐾 = 𝐾𝐿/𝑇 𝑓
𝐷
Parameters
K [float] Correlation parameter specific to a mixer’s design, [-] Also specific to laminar or
turbulent regime.
L [float] Length of the motionless mixer [m]
D [float] Diameter of pipe [m]
fd [float] Darcy friction factor [-]
Returns
K [float] Loss coefficient of mixer [-]

286 Chapter 2. API Reference


Fluids Documentation, Release 0.1

Notes

Related to example 7-8.3.2 in [1].

References

[1], [2]

Examples

>>> K_motionless_mixer(K=150, L=.762*5, D=.762, fd=.01)


7.5

2.13 Hydrology, weirs and open flow (fluids.open_flow)

fluids.open_flow.Q_weir_V_Shen(h1, angle=90)
Calculates the flow rate across a V-notch (triangular) weir from the height of the liquid above the tip of the
notch, and with the angle of the notch. Most of these type of weir are 90 degrees. Model from [1] as reproduced
in [2].
Flow rate is given by:
(︂ )︂
𝜃 √
𝑄 = 𝐶 tan 𝑔(ℎ1 + 𝑘)2.5
2

Parameters
h1 [float] Height of the fluid above the notch [m]
angle [float, optional] Angle of the notch [degrees]
Returns
Q [float] Volumetric flow rate across the weir [m^3/s]

Notes

angles = [20, 40, 60, 80, 100] Cs = [0.59, 0.58, 0.575, 0.575, 0.58] k = [0.0028, 0.0017, 0.0012, 0.001, 0.001]
The following limits apply to the use of this equation:
h1 >= 0.05 m h2 > 0.45 m h1/h2 <= 0.4 m b > 0.9 m
(︂ )︂
ℎ1 𝜃
tan <2
𝑏 2

Flows are lower than obtained by the curves at http://www.lmnoeng.com/Weirs/vweir.php.

References

[1], [2]

2.13. Hydrology, weirs and open flow (fluids.open_flow) 287


Fluids Documentation, Release 0.1

Examples

>>> Q_weir_V_Shen(0.6, angle=45)


0.21071725775478228

fluids.open_flow.Q_weir_rectangular_Kindsvater_Carter(h1, h2, b)
Calculates the flow rate across rectangular weir from the height of the liquid above the crest of the notch, the
liquid depth beneath it, and the width of the notch. Model from [1] as reproduced in [2].
Flow rate is given by:
(︂ )︂
ℎ1 √
𝑄 = 0.554 1 − 0.0035 (𝑏 + 0.0025) 𝑔(ℎ1 + 0.0001)1.5
ℎ2

Parameters
h1 [float] Height of the fluid above the crest of the weir [m]
h2 [float] Height of the fluid below the crest of the weir [m]
b [float] Width of the rectangular flow section of the weir [m]
Returns
Q [float] Volumetric flow rate across the weir [m^3/s]

Notes

The following limits apply to the use of this equation:


b/b1 0.2 h1/h2 < 2 b > 0.15 m h1 > 0.03 m h2 > 0.1 m

References

[1], [2]

Examples

>>> Q_weir_rectangular_Kindsvater_Carter(0.2, 0.5, 1)


0.15545928949179422

fluids.open_flow.Q_weir_rectangular_SIA(h1, h2, b, b1)


Calculates the flow rate across rectangular weir from the height of the liquid above the crest of the notch, the
liquid depth beneath it, and the width of the notch. Model from [1] as reproduced in [2].
Flow rate is given by:
[︃ )︂2 ]︃ [︃ )︂4 (︂ )︂2 ]︃
0.00626 − 0.00519(𝑏/𝑏1 )2
(︂ (︂
𝑏 𝑏 ℎ1 √
𝑄 = 0.544 1 + 0.064 + 1 + 0.5 𝑏 𝑔ℎ1.5
𝑏1 ℎ1 + 0.0016 𝑏1 ℎ1 + ℎ2

Parameters
h1 [float] Height of the fluid above the crest of the weir [m]
h2 [float] Height of the fluid below the crest of the weir [m]
b [float] Width of the rectangular flow section of the weir [m]

288 Chapter 2. API Reference


Fluids Documentation, Release 0.1

b1 [float] Width of the full section of the channel [m]


Returns
Q [float] Volumetric flow rate across the weir [m^3/s]

Notes

The following limits apply to the use of this equation:


b/b1 0.2 h1/h2 < 2 b > 0.15 m h1 > 0.03 m h2 > 0.1 m

References

[1], [2]

Examples

>>> Q_weir_rectangular_SIA(0.2, 0.5, 1, 2)


1.0408858453811165

fluids.open_flow.Q_weir_rectangular_full_Ackers(h1, h2, b)
Calculates the flow rate across a full-channel rectangular weir from the height of the liquid above the crest of the
weir, the liquid depth beneath it, and the width of the channel. Model from [1] as reproduced in [2], confirmed
with [3].
Flow rate is given by:
(︂ )︂
ℎ1 √
𝑄 = 0.564 1 + 0.150 𝑏 𝑔(ℎ1 + 0.001)1.5
ℎ2

Parameters
h1 [float] Height of the fluid above the crest of the weir [m]
h2 [float] Height of the fluid below the crest of the weir [m]
b [float] Width of the channel section [m]
Returns
Q [float] Volumetric flow rate across the weir [m^3/s]

Notes

The following limits apply to the use of this equation:


h1 > 0.02 m h2 > 0.15 m h1/h2 2.2

References

[1], [2], [3]

2.13. Hydrology, weirs and open flow (fluids.open_flow) 289


Fluids Documentation, Release 0.1

Examples

Example as in [3], matches. However, example is unlikely in practice.


>>> Q_weir_rectangular_full_Ackers(h1=0.9, h2=0.6, b=5)
9.251938159899948

fluids.open_flow.Q_weir_rectangular_full_SIA(h1, h2, b)
Calculates the flow rate across a full-channel rectangular weir from the height of the liquid above the crest of
the weir, the liquid depth beneath it, and the width of the channel. Model from [1] as reproduced in [2].
Flow rate is given by:
)︂2
2√
(︂ )︂ (︂
0.000615 √ ℎ1 √
𝑄= 2 0.615 + 𝑏 𝑔ℎ1 + 0.5 𝑏 𝑔ℎ1.5
1
3 ℎ1 + 0.0016 ℎ1 + ℎ2
Parameters
h1 [float] Height of the fluid above the crest of the weir [m]
h2 [float] Height of the fluid below the crest of the weir [m]
b [float] Width of the channel section [m]
Returns
Q [float] Volumetric flow rate across the weir [m^3/s]

Notes

The following limits apply to the use of this equation:


0.025 < h < 0.8 m b > 0.3 m h2 > 0.3 m h1/h2 < 1

References

[1], [2]

Examples

Example compares terribly with the Ackers expression - probable error in [2]. DO NOT USE.
>>> Q_weir_rectangular_full_SIA(h1=0.3, h2=0.4, b=2)
1.1875825055400384

fluids.open_flow.Q_weir_rectangular_full_Rehbock(h1, h2, b)
Calculates the flow rate across a full-channel rectangular weir from the height of the liquid above the crest of
the weir, the liquid depth beneath it, and the width of the channel. Model from [1] as reproduced in [2].
Flow rate is given by:
2√
(︂ )︂
ℎ1 √
𝑄= 2 0.602 + 0.0832 𝑏 𝑔(ℎ1 + 0.00125)1.5
3 ℎ2
Parameters
h1 [float] Height of the fluid above the crest of the weir [m]
h2 [float] Height of the fluid below the crest of the weir [m]

290 Chapter 2. API Reference


Fluids Documentation, Release 0.1

b [float] Width of the channel section [m]


Returns
Q [float] Volumetric flow rate across the weir [m^3/s]

Notes

The following limits apply to the use of this equation:


0.03 m < h1 < 0.75 m b > 0.3 m h2 > 0.3 m h1/h2 < 1

References

[1], [2]

Examples

>>> Q_weir_rectangular_full_Rehbock(h1=0.3, h2=0.4, b=2)


0.6486856330601333

fluids.open_flow.Q_weir_rectangular_full_Kindsvater_Carter(h1, h2, b)
Calculates the flow rate across a full-channel rectangular weir from the height of the liquid above the crest of
the weir, the liquid depth beneath it, and the width of the channel. Model from [1] as reproduced in [2].
Flow rate is given by:

2√
(︂ )︂
ℎ1 √
𝑄= 2 0.602 + 0.0832 𝑏 𝑔(ℎ1 + 0.00125)1.5
3 ℎ2

Parameters
h1 [float] Height of the fluid above the crest of the weir [m]
h2 [float] Height of the fluid below the crest of the weir [m]
b [float] Width of the channel section [m]
Returns
Q [float] Volumetric flow rate across the weir [m^3/s]

Notes

The following limits apply to the use of this equation:


h1 > 0.03 m b > 0.15 m h2 > 0.1 m h1/h2 < 2

References

[1], [2]

Examples

2.13. Hydrology, weirs and open flow (fluids.open_flow) 291


Fluids Documentation, Release 0.1

>>> Q_weir_rectangular_full_Kindsvater_Carter(h1=0.3, h2=0.4, b=2)


0.641560300081563

fluids.open_flow.V_Manning(Rh, S, n)
Predicts the average velocity of a flow across an open channel of hydraulic radius Rh and slope S, given the
Manning roughness coefficient n.
Flow rate is given by:
1 2/3 0.5
𝑉 = 𝑅 𝑆
𝑛 ℎ
Parameters
Rh [float] Hydraulic radius of the channel, Flow Area/Wetted perimeter [m]
S [float] Slope of the channel, m/m [-]
n [float] Manning roughness coefficient [s/m^(1/3)]
Returns
V [float] Average velocity of the channel [m/s]

Notes

This is equation is often given in imperial units multiplied by 1.49.

References

[1], [2]

Examples

Example is from [2], matches.

>>> V_Manning(0.2859, 0.005236, 0.03)


1.0467781958118971

fluids.open_flow.n_Manning_to_C_Chezy(n, Rh)
Converts a Manning roughness coefficient to a Chezy coefficient, given the hydraulic radius of the channel.
1 1/6
𝐶= 𝑅
𝑛 ℎ
Parameters
n [float] Manning roughness coefficient [s/m^(1/3)]
Rh [float] Hydraulic radius of the channel, Flow Area/Wetted perimeter [m]
Returns
C [float] Chezy coefficient [m^0.5/s]

References

[1]

292 Chapter 2. API Reference


Fluids Documentation, Release 0.1

Examples

Custom example, checked.

>>> n_Manning_to_C_Chezy(0.05, Rh=5)


26.15320972023661

fluids.open_flow.C_Chezy_to_n_Manning(C, Rh)
Converts a Chezy coefficient to a Manning roughness coefficient, given the hydraulic radius of the channel.
1 1/6
𝑛= 𝑅
𝐶 ℎ
Parameters
C [float] Chezy coefficient [m^0.5/s]
Rh [float] Hydraulic radius of the channel, Flow Area/Wetted perimeter [m]
Returns
n [float] Manning roughness coefficient [s/m^(1/3)]

References

[1]

Examples

Custom example, checked.

>>> C_Chezy_to_n_Manning(26.15, Rh=5)


0.05000613713238358

fluids.open_flow.V_Chezy(Rh, S, C)
Predicts the average velocity of a flow across an open channel of hydraulic radius Rh and slope S, given the
Chezy coefficient C.
Flow rate is given by:
√︀
𝑉 =𝐶 𝑆𝑅ℎ

Parameters
Rh [float] Hydraulic radius of the channel, Flow Area/Wetted perimeter [m]
S [float] Slope of the channel, m/m [-]
C [float] Chezy coefficient [m^0.5/s]
Returns
V [float] Average velocity of the channel [m/s]

References

[1], [2], [3]

2.13. Hydrology, weirs and open flow (fluids.open_flow) 293


Fluids Documentation, Release 0.1

Examples

Custom example, checked.

>>> V_Chezy(Rh=5, S=0.001, C=26.153)


1.8492963648371776

2.14 Packed bed pressure drop (fluids.packed_bed)

fluids.packed_bed.dP_packed_bed(dp, voidage, vs, rho, mu, L=1, Dt=None, sphericity=None,


Method=None, AvailableMethods=False)
This function handles choosing which pressure drop in a packed bed correlation is used. Automatically select
which correlation to use if none is provided. Returns None if insufficient information is provided.
Preferred correlations are ‘Erdim, Akgiray & Demir’ when tube diameter is not provided, and ‘Harrison, Brun-
ner & Hecker’ when tube diameter is provided. If you are using a particles in a narrow tube between 2 and 3
particle diameters, expect higher than normal voidages (0.4-0.5) and used the method ‘Guo, Sun, Zhang, Ding
& Liu’.
Parameters
dp [float] Particle diameter of spheres [m]
voidage [float] Void fraction of bed packing [-]
vs [float] Superficial velocity of the fluid (volumetric flow rate/cross-sectional area) [m/s]
rho [float] Density of the fluid [kg/m^3]
mu [float] Viscosity of the fluid, [Pa*s]
L [float, optional] Length the fluid flows in the packed bed [m]
Dt [float, optional] Diameter of the tube, [m]
sphericity [float, optional] Sphericity of the particles [-]
Returns
dP [float] Pressure drop across the bed [Pa]
methods [list, only returned if AvailableMethods == True] List of methods which can be used
to calculate dP with the given inputs
Other Parameters
Method [string, optional] A string of the function name to use, as in the dictionary
packed_beds_correlations
AvailableMethods [bool, optional] If True, function will consider which methods which can be
used to calculate dP with the given inputs and return them as a list

Examples

>>> dP_packed_bed(dp=8E-4, voidage=0.4, vs=1E-3, rho=1E3, mu=1E-3)


1438.2826958844414
>>> dP_packed_bed(dp=8E-4, voidage=0.4, vs=1E-3, rho=1E3, mu=1E-3, Dt=0.01)
1255.1625662548427
(continues on next page)

294 Chapter 2. API Reference


Fluids Documentation, Release 0.1

(continued from previous page)


>>> dP_packed_bed(dp=0.05, voidage=0.492, vs=0.1, rho=1E3, mu=1E-3, Dt=0.015,
˓→Method='Guo, Sun, Zhang, Ding & Liu')

18782.499710673364

fluids.packed_bed.Ergun(dp, voidage, vs, rho, mu, L=1)


Calculates pressure drop across a packed bed of spheres using a correlation developed in [1], as shown in [2]
and [3]. Eighteenth most accurate correlation overall in the review of [2].
Most often presented in the following form:

150𝜇(1 − 𝜖)2 𝑣𝑠 𝐿 1.75(1 − 𝜖)𝜌𝑣𝑠2 𝐿


∆𝑃 = +
𝜖3 𝑑2𝑝 𝜖3 𝑑 𝑝

It is also often presented with a term for sphericity, which is multiplied by particle diameter everywhere in the
equation. However, this is highly empirical and better correlations for beds of differently-shaped particles exist.
To use sphericity in this model, multiple the input particle diameter by the spericity separately.
In the review of [2], it is expressed in terms of a parameter fp, shown below. This is a convenient means of
expressing all forms of pressure drop in packed beds correlations in a way that allows for easy comparison.

(1 − 𝜖)2
(︂ (︂ )︂)︂
𝑅𝑒
𝑓𝑝 = 150 + 1.75
1−𝜖 𝜖3 𝑅𝑒

∆𝑃 𝑑𝑝
𝑓𝑝 =
𝜌𝑣𝑠2 𝐿
𝜌𝑣𝑠 𝑑𝑝
𝑅𝑒 =
𝜇
Parameters
dp [float] Particle diameter of spheres [m]
voidage [float] Void fraction of bed packing [-]
vs [float] Superficial velocity of the fluid (volumetric flow rate/cross-sectional area)[m/s]
rho [float] Density of the fluid [kg/m^3]
mu [float] Viscosity of the fluid, [Pa*s]
L [float, optional] Length the fluid flows in the packed bed [m]
Returns
dP [float] Pressure drop across the bed [Pa]

Notes

The first term in this equation represents laminar loses, and the second, turbulent loses. Developed with data
from spheres, sand, and pulverized coke. Fluids tested were carbon dioxide, nitrogen, methane, and hydrogen.
Validity range shown in [3] is 1 < 𝑅𝑒𝐸𝑟𝑔 < 2300. Over predicts pressure drop for 𝑅𝑒𝐸𝑟𝑔 > 700.

References

[1], [2], [3]

2.14. Packed bed pressure drop (fluids.packed_bed) 295


Fluids Documentation, Release 0.1

Examples

>>> Ergun(dp=8E-4, voidage=0.4, vs=1E-3, rho=1E3, mu=1E-3)


1338.8671874999995

fluids.packed_bed.Kuo_Nydegger(dp, voidage, vs, rho, mu, L=1)


Calculates pressure drop across a packed bed of spheres using a correlation developed in [1], as shown in [2]
and [3]. Thirty-eighth most accurate correlation overall in the review of [2].
(︃ )︂0.87 )︃
(1 − 𝜖)2
(︂
𝑅𝑒
𝑓𝑝 = 276.23 + 5.05
1−𝜖 𝜖3 𝑅𝑒

∆𝑃 𝑑𝑝
𝑓𝑝 =
𝜌𝑣𝑠2 𝐿
𝜌𝑣𝑠 𝑑𝑝
𝑅𝑒 =
𝜇
Parameters
dp [float] Particle diameter of spheres [m]
voidage [float] Void fraction of bed packing [-]
vs [float] Superficial velocity of the fluid (volumetric flow rate/cross-sectional area)[m/s]
rho [float] Density of the fluid [kg/m^3]
mu [float] Viscosity of the fluid, [Pa*s]
L [float, optional] Length the fluid flows in the packed bed [m]
Returns
dP [float] Pressure drop across the bed [Pa]

Notes

Validity range shown in [2] as for a range of 460 < 𝑅𝑒 < 14600. 0.3760 < 𝜖 < 0.3901. Developed with data
from rough granular ball propellants beds, with air.

References

[1], [2], [3]

Examples

>>> Kuo_Nydegger(dp=8E-1, voidage=0.4, vs=1E-3, rho=1E3, mu=1E-3)


0.025651460973648624

fluids.packed_bed.Jones_Krier(dp, voidage, vs, rho, mu, L=1)


Calculates pressure drop across a packed bed of spheres using a correlation developed in [1], also shown in [2].
Tenth most accurate correlation overall in the review of [2].
(︃ )︂0.87 )︃
(1 − 𝜖)2
(︂
𝑅𝑒
𝑓𝑝 = 150 + 3.89
1−𝜖 𝜖3 𝑅𝑒

296 Chapter 2. API Reference


Fluids Documentation, Release 0.1

∆𝑃 𝑑𝑝
𝑓𝑝 =
𝜌𝑣𝑠2 𝐿
𝜌𝑣𝑠 𝑑𝑝
𝑅𝑒 =
𝜇
Parameters
dp [float] Particle diameter of spheres [m]
voidage [float] Void fraction of bed packing [-]
vs [float] Superficial velocity of the fluid (volumetric flow rate/cross-sectional area)[m/s]
rho [float] Density of the fluid [kg/m^3]
mu [float] Viscosity of the fluid, [Pa*s]
L [float, optional] Length the fluid flows in the packed bed [m]
Returns
dP [float] Pressure drop across the bed [Pa]

Notes

Validity range shown in [1] as for a range of 733 < 𝑅𝑒 < 126, 670. 0.3804 < 𝜖 < 0.4304. Developed from
data of spherical glass beads.

References

[1], [2]

Examples

>>> Jones_Krier(dp=8E-4, voidage=0.4, vs=1E-3, rho=1E3, mu=1E-3)


1362.2719449873746

fluids.packed_bed.Carman(dp, voidage, vs, rho, mu, L=1)


Calculates pressure drop across a packed bed of spheres using a correlation developed in [1], as shown in [2].
Fifth most accurate correlation overall in the review of [2]. Also shown in [3].
(︃ )︂0.9 )︃
(1 − 𝜖)2
(︂
𝑅𝑒
𝑓𝑝 = 180 + 2.871
1−𝜖 𝜖3 𝑅𝑒

∆𝑃 𝑑𝑝
𝑓𝑝 =
𝜌𝑣𝑠2 𝐿
𝜌𝑣𝑠 𝑑𝑝
𝑅𝑒 =
𝜇
Parameters
dp [float] Particle diameter of spheres [m]
voidage [float] Void fraction of bed packing [-]
vs [float] Superficial velocity of the fluid (volumetric flow rate/cross-sectional area)[m/s]
rho [float] Density of the fluid [kg/m^3]

2.14. Packed bed pressure drop (fluids.packed_bed) 297


Fluids Documentation, Release 0.1

mu [float] Viscosity of the fluid, [Pa*s]


L [float, optional] Length the fluid flows in the packed bed [m]
Returns
dP [float] Pressure drop across the bed [Pa]

Notes

Valid in [1], [2], and [3] for a range of 300 < 𝑅𝑒𝐸𝑟𝑔 < 60, 000.

References

[1], [2], [3]

Examples

>>> Carman(dp=8E-4, voidage=0.4, vs=1E-3, rho=1E3, mu=1E-3)


1614.721678121775

fluids.packed_bed.Hicks(dp, voidage, vs, rho, mu, L=1)


Calculates pressure drop across a packed bed of spheres using a correlation developed in [1], as shown in [2].
Twenty-third most accurate correlation overall in the review of [2]. Also shown in [3].

(1 − 𝜖)1.2
𝑓𝑝 = 6.8
𝑅𝑒0.2 𝜖3
∆𝑃 𝑑𝑝
𝑓𝑝 =
𝜌𝑣𝑠2 𝐿
𝜌𝑣𝑠 𝑑𝑝
𝑅𝑒 =
𝜇
Parameters
dp [float] Particle diameter of spheres [m]
voidage [float] Void fraction of bed packing [-]
vs [float] Superficial velocity of the fluid (volumetric flow rate/cross-sectional area)[m/s]
rho [float] Density of the fluid [kg/m^3]
mu [float] Viscosity of the fluid, [Pa*s]
L [float, optional] Length the fluid flows in the packed bed [m]
Returns
dP [float] Pressure drop across the bed [Pa]

Notes

Valid in [1], [2], and [3] for a range of 300 < 𝑅𝑒𝐸𝑟𝑔 < 60, 000.

298 Chapter 2. API Reference


Fluids Documentation, Release 0.1

References

[1], [2], [3]

Examples

>>> Hicks(dp=0.01, voidage=0.4, vs=1E-3, rho=1E3, mu=1E-3)


3.631703956680737

fluids.packed_bed.Brauer(dp, voidage, vs, rho, mu, L=1)


Calculates pressure drop across a packed bed of spheres using a correlation developed in [1], as shown in [2].
Seventh most accurate correlation overall in the review of [2]. Also shown in [3]_.
(︃ )︂0.9 )︃
(1 − 𝜖)2
(︂
𝑅𝑒
𝑓𝑝 = 160 + 3
1−𝜖 𝜖3 𝑅𝑒

∆𝑃 𝑑𝑝
𝑓𝑝 =
𝜌𝑣𝑠2 𝐿
𝜌𝑣𝑠 𝑑𝑝
𝑅𝑒 =
𝜇
Parameters
dp [float] Particle diameter of spheres [m]
voidage [float] Void fraction of bed packing [-]
vs [float] Superficial velocity of the fluid (volumetric flow rate/cross-sectional area)[m/s]
rho [float] Density of the fluid [kg/m^3]
mu [float] Viscosity of the fluid, [Pa*s]
L [float, optional] Length the fluid flows in the packed bed [m]
Returns
dP [float] Pressure drop across the bed [Pa]

Notes

Original has not been reviewed. In [2], is stated as for a range of 2 < 𝑅𝑒𝐸𝑟𝑔 < 20, 000. In [3]_, is stated as for
a range of 0.01 < 𝑅𝑒𝐸𝑟𝑔 < 40, 000.

References

[1], [2], [2]

Examples

>>> Brauer(dp=8E-4, voidage=0.4, vs=1E-3, rho=1E3, mu=1E-3)


1441.5479196020563

2.14. Packed bed pressure drop (fluids.packed_bed) 299


Fluids Documentation, Release 0.1

fluids.packed_bed.KTA(dp, voidage, vs, rho, mu, L=1)


Calculates pressure drop across a packed bed of spheres using a correlation developed in [1], as shown in [2].
Third most accurate correlation overall in the review of [2].
(︃ )︂0.9 )︃
(1 − 𝜖)2
(︂
𝑅𝑒
𝑓𝑝 = 160 + 3
1−𝜖 𝜖3 𝑅𝑒

∆𝑃 𝑑𝑝
𝑓𝑝 =
𝜌𝑣𝑠2 𝐿
𝜌𝑣𝑠 𝑑𝑝
𝑅𝑒 =
𝜇
Parameters
dp [float] Particle diameter of spheres [m]
voidage [float] Void fraction of bed packing [-]
vs [float] Superficial velocity of the fluid (volumetric flow rate/cross-sectional area)[m/s]
rho [float] Density of the fluid [kg/m^3]
mu [float] Viscosity of the fluid, [Pa*s]
L [float, optional] Length the fluid flows in the packed bed [m]
Returns
dP [float] Pressure drop across the bed [Pa]

Notes

Developed for gas flow through pebbles in nuclear reactors.


In [2], stated as for a range of 1 < 𝑅𝐸𝐸𝑟𝑔 < 100, 000. In [1], a limit on porosity is stated as 0.36 < 𝜖 < 0.42.

References

[1], [2]

Examples

>>> KTA(dp=8E-4, voidage=0.4, vs=1E-3, rho=1E3, mu=1E-3)


1440.409277034248

fluids.packed_bed.Erdim_Akgiray_Demir(dp, voidage, vs, rho, mu, L=1)


Calculates pressure drop across a packed bed of spheres using a correlation developed in [1], claiming to be the
best model to date.

𝑓𝑣 = 160 + 2.81𝑅𝑒0.904
𝐸𝑟𝑔

∆𝑃 𝑑2𝑝 𝜖3
𝑓𝑣 =
𝜇𝑣𝑠 𝐿 (1 − 𝜖)2
𝜌𝑣𝑠 𝑑𝑝
𝑅𝑒𝐸𝑟𝑔 =
𝜇(1 − 𝜖)
Parameters

300 Chapter 2. API Reference


Fluids Documentation, Release 0.1

dp [float] Particle diameter of spheres [m]


voidage [float] Void fraction of bed packing [-]
vs [float] Superficial velocity of the fluid (volumetric flow rate/cross-sectional area)[m/s]
rho [float] Density of the fluid [kg/m^3]
mu [float] Viscosity of the fluid, [Pa*s]
L [float, optional] Length the fluid flows in the packed bed [m]
Returns
dP [float] Pressure drop across the bed [Pa]

Notes

Developed with data in the range of:

2 < 𝑅𝑒𝐸𝑟𝑔 < 3582


4 < 𝑑𝑡 /𝑑𝑝 < 34.1
0.377 < 𝜖 < 0.470

References

[1]

Examples

>>> Erdim_Akgiray_Demir(dp=8E-4, voidage=0.4, vs=1E-3, rho=1E3, mu=1E-3)


1438.2826958844414

fluids.packed_bed.Fahien_Schriver(dp, voidage, vs, rho, mu, L=1)


Calculates pressure drop across a packed bed of spheres using a correlation developed in [1], as shown in [2].
Second most accurate correlation overall in the review of [2].
(︂ (︂ )︂)︂
𝑓1𝐿 𝑓1𝑇 1−𝜖
𝑓𝑝 = 𝑞 + (1 − 𝑞) 𝑓2 +
𝑅𝑒𝐸𝑟𝑔 𝑅𝑒𝐸𝑟𝑔 𝜖3
(︂ 2 )︂
𝜖 (1 − 𝜖)
𝑞 = exp − 𝑅𝑒𝐸𝑟𝑔
12.6
136
𝑓1𝐿 =
(1 − 𝜖)0.38
29
𝑓1𝑇 =
(1 − 𝜖)1.45 𝜖2
1.87𝜖0.75
𝑓2 =
(1 − 𝜖)0.26
∆𝑃 𝑑𝑝
𝑓𝑝 =
𝜌𝑣𝑠2 𝐿
𝜌𝑣𝑠 𝑑𝑝
𝑅𝑒𝐸𝑟𝑔 =
𝜇(1 − 𝜖)
Parameters

2.14. Packed bed pressure drop (fluids.packed_bed) 301


Fluids Documentation, Release 0.1

dp [float] Particle diameter of spheres [m]


voidage [float] Void fraction of bed packing [-]
vs [float] Superficial velocity of the fluid (volumetric flow rate/cross-sectional area)[m/s]
rho [float] Density of the fluid [kg/m^3]
mu [float] Viscosity of the fluid, [Pa*s]
L [float, optional] Length the fluid flows in the packed bed [m]
Returns
dP [float] Pressure drop across the bed [Pa]

Notes

No range of validity available.

References

[1], [2]

Examples

>>> Fahien_Schriver(dp=8E-4, voidage=0.4, vs=1E-3, rho=1E3, mu=1E-3)


1470.6175541844711

fluids.packed_bed.Tallmadge(dp, voidage, vs, rho, mu, L=1)


Calculates pressure drop across a packed bed of spheres using a correlation developed in [1], as shown in [2]
and [3].
(︃ )︂5/6 )︃
(1 − 𝜖)2
(︂
𝑅𝑒
𝑓𝑝 = 150 + 4.2
1−𝜖 𝜖3 𝑅𝑒

∆𝑃 𝑑𝑝
𝑓𝑝 =
𝜌𝑣𝑠2 𝐿
𝜌𝑣𝑠 𝑑𝑝
𝑅𝑒 =
𝜇
Parameters
dp [float] Particle diameter of spheres [m]
voidage [float] Void fraction of bed packing [-]
vs [float] Superficial velocity of the fluid (volumetric flow rate/cross-sectional area)[m/s]
rho [float] Density of the fluid [kg/m^3]
mu [float] Viscosity of the fluid, [Pa*s]
L [float, optional] Length the fluid flows in the packed bed [m]
Returns
dP [float] Pressure drop across the bed [Pa]

302 Chapter 2. API Reference


Fluids Documentation, Release 0.1

Notes

The validity range shown in [2] is a range of 0.1 < 𝑅𝑒 < 100000.

References

[1], [2], [3]

Examples

>>> Tallmadge(dp=8E-4, voidage=0.4, vs=1E-3, rho=1E3, mu=1E-3)


1365.2739144209424

fluids.packed_bed.Idelchik(dp, voidage, vs, rho, mu, L=1)


Calculates pressure drop across a packed bed of spheres as in [2], originally in [1].
(︂ )︂
∆𝑃 0.765 30 3
𝑑 𝑝 = + + 0.3
𝐿𝜌𝑣𝑠2 𝜖4.2 𝑅𝑒𝑙 𝑅𝑒0.7
𝑙

𝑅𝑒𝑙 = (0.45/𝜖0.5 )𝑅𝑒𝐸𝑟𝑔


𝜌𝑣𝑠 𝐷𝑝
𝑅𝑒𝐸𝑟𝑔 =
𝜇(1 − 𝜖)
Parameters
dp [float] Particle diameter of spheres [m]
voidage [float] Void fraction of bed packing [-]
vs [float] Superficial velocity of the fluid (volumetric flow rate/cross-sectional area)[m/s]
rho [float] Density of the fluid [kg/m^3]
mu [float] Viscosity of the fluid, [Pa*s]
L [float, optional] Length the fluid flows in the packed bed [m]
Returns
dP [float] Pressure drop across the bed [Pa]

Notes

0.001 < 𝑅𝑒𝐸𝑟𝑔 < 1000 This equation is valid for void fractions between 0.3 and 0.8. Cited as by Bernshtein.

References

[1], [2]

2.14. Packed bed pressure drop (fluids.packed_bed) 303


Fluids Documentation, Release 0.1

Examples

>>> Idelchik(dp=8E-4, voidage=0.4, vs=1E-3, rho=1E3, mu=1E-3)


1571.909125999067

fluids.packed_bed.Harrison_Brunner_Hecker(dp, voidage, vs, rho, mu, L=1, Dt=None)


Calculates pressure drop across a packed bed of spheres using a correlation developed in [1], also shown in [2].
Fourth most accurate correlation overall in the review of [2]. Applies a wall correction if diameter of tube is
provided.
(︃ )︂5/6 )︃
(1 − 𝜖)2
(︂
𝑅𝑒
𝑓𝑝 = 119.8𝐴 + 4.63𝐵
1−𝜖 𝜖3 𝑅𝑒
(︂ )︂2
𝑑𝑝
𝐴= 1+𝜋
6(1 − 𝜖)𝐷𝑡
2
(︂ )︂
𝜋 𝑑𝑝 0.5𝑑𝑝
𝐵 =1− 1−
24𝐷𝑡 𝐷𝑡
∆𝑃 𝑑𝑝
𝑓𝑝 =
𝜌𝑣𝑠2 𝐿
𝜌𝑣𝑠 𝑑𝑝
𝑅𝑒 =
𝜇
Parameters
dp [float] Particle diameter of spheres [m]
voidage [float] Void fraction of bed packing [-]
vs [float] Superficial velocity of the fluid (volumetric flow rate/cross-sectional area)[m/s]
rho [float] Density of the fluid [kg/m^3]
mu [float] Viscosity of the fluid, [Pa*s]
L [float, optional] Length the fluid flows in the packed bed [m]
Dt [float, optional] Diameter of the tube, [m]
Returns
dP [float] Pressure drop across the bed [Pa]

Notes

Uses data from other sources only. Correlation will underestimate pressure drop if tube diameter is not provided.
Limits are specified in [1] as: .. math:

0.72 < Re < 7700 \\


8.3 < d_t/d_p < 50 \\
0.33 < \epsilon < 0.88

References

[1], [2]

304 Chapter 2. API Reference


Fluids Documentation, Release 0.1

Examples

>>> Harrison_Brunner_Hecker(dp=8E-4, voidage=0.4, vs=1E-3, rho=1E3, mu=1E-3,


˓→Dt=1E-2)

1255.1625662548427

fluids.packed_bed.Montillet_Akkari_Comiti(dp, voidage, vs, rho, mu, L=1, Dt=None)


Calculates pressure drop across a packed bed of spheres as in [2], originally in [1]. Wall effect adjustment is
used if Dt is provided.
)︂0.20 (︂
𝜖3
(︂ )︂
∆𝑃 𝐷𝑐 1000 60
𝐷𝑝 =𝑎 + + 12
𝐿𝜌𝑉𝑠2 (1 − 𝜖) 𝐷𝑝 𝑅𝑒𝑝 𝑅𝑒0.5
𝑝

𝜌𝑣𝑠 𝐷𝑝
𝑅𝑒𝑝 =
𝜇
Parameters
dp [float] Particle diameter of spheres [m]
voidage [float] Void fraction of bed packing [-]
vs [float] Superficial velocity of the fluid (volumetric flow rate/cross-sectional area)[m/s]
rho [float] Density of the fluid [kg/m^3]
mu [float] Viscosity of the fluid, [Pa*s]
L [float, optional] Length the fluid flows in the packed bed [m]
Dt [float, optional] Diameter of the tube, [m]
Returns
dP [float] Pressure drop across bed [Pa]

Notes

10 < 𝑅𝐸𝑝 < 2500 if Dc/D > 50, set to 2.2. a = 0.061 for epsilon < 0.4, 0.050 for > 0.4.

References

[1], [2]

Examples

Custom example:

>>> Montillet_Akkari_Comiti(dp=0.0008, voidage=0.4, L=0.5, vs=0.00132629120,


˓→rho=1000., mu=1.00E-003)

1148.1905244077548

fluids.packed_bed.Guo_Sun(dp, voidage, vs, rho, mu, Dt, L=1)


Calculates pressure drop across a packed bed of spheres using a correlation developed in [1]. This is valid for
highly-packed particles at particle/tube diameter ratios between 2 and 3, where a ring packing structure occurs.

2.14. Packed bed pressure drop (fluids.packed_bed) 305


Fluids Documentation, Release 0.1

If a packing ratio is so low, it is important to use this model because in some cases its predictions are as low as
half those of other models!
(︂ )︂
𝑑𝑝
𝑓𝑣 = 180 + 9.5374 − 2.8054 𝑅𝑒0.97𝐸𝑟𝑔
𝐷𝑡

∆𝑃 𝑑2𝑝 𝜖3
𝑓𝑣 =
𝜇𝑣𝑠 𝐿 (1 − 𝜖)2
𝜌𝑣𝑠 𝑑𝑝
𝑅𝑒𝐸𝑟𝑔 =
𝜇(1 − 𝜖)
Parameters
dp [float] Particle diameter of spheres [m]
voidage [float] Void fraction of bed packing [-]
vs [float] Superficial velocity of the fluid (volumetric flow rate/cross-sectional area)[m/s]
rho [float] Density of the fluid [kg/m^3]
mu [float] Viscosity of the fluid, [Pa*s]
Dt [float] Diameter of the tube, [m]
L [float, optional] Length the fluid flows in the packed bed [m]
Returns
dP [float] Pressure drop across the bed [Pa]

Notes

Developed with data in the range of:

100 < 𝑅𝑒𝑚 < 33000


2 < 𝑑𝑡 /𝑑𝑝 < 31
0.476 < 𝜖 < 0.492

References

[1]

Examples

>>> Guo_Sun(dp=14.2E-3, voidage=0.492, vs=0.6, rho=1E3, mu=1E-3, Dt=40.9E-3)


42019.529911473706

fluids.packed_bed.voidage_Benyahia_Oneil(Dpe, Dt, sphericity)


Calculates voidage of a bed of arbitraryily shaped uniform particles packed into a bed or tube of diameter Dt,
with equivalent sphere diameter Dp. Shown in [1], and cited by various authors. Correlations exist also for
spheres, solid cylinders, hollow cylinders, and 4-hole cylinders. Based on a series of physical measurements.
0.2024 1.0814
𝜖 = 0.1504 + + (︁ )︁2
𝜑 𝑑𝑡
𝑑𝑝𝑒 + 0.1226

Parameters

306 Chapter 2. API Reference


Fluids Documentation, Release 0.1

Dpe [float] Equivalent spherical particle diameter (diameter of a sphere with the same volume),
[m]
Dt [float] Diameter of the tube, [m]
sphericity [float] Sphericity of particles in bed []
Returns
voidage [float] Void fraction of bed packing []

Notes

Average error of 5.2%; valid 1.5 < dtube/dp < 50 and 0.42 < sphericity < 1

References

[1]

Examples

>>> voidage_Benyahia_Oneil(Dpe=1E-3, Dt=1E-2, sphericity=.8)


0.41395363849210065

fluids.packed_bed.voidage_Benyahia_Oneil_spherical(Dp, Dt)
Calculates voidage of a bed of spheres packed into a bed or tube of diameter Dt, with sphere diameters Dp.
Shown in [1], and cited by various authors. Correlations exist also for solid cylinders, hollow cylinders, and
4-hole cylinders. Based on a series of physical measurements.
1.740
𝜖 = 0.390 + (︁ )︁2
𝑑𝑐𝑦𝑙
𝑑𝑝 + 1.140

Parameters
Dp [float] Spherical particle diameter, [m]
Dt [float] Diameter of the tube, [m]
Returns
voidage [float] Void fraction of bed packing []

Notes

Average error 1.5%, 1.5 < ratio < 50.

References

[1]

Examples

2.14. Packed bed pressure drop (fluids.packed_bed) 307


Fluids Documentation, Release 0.1

>>> voidage_Benyahia_Oneil_spherical(Dp=.001, Dt=.05)


0.3906653157443224

fluids.packed_bed.voidage_Benyahia_Oneil_cylindrical(Dpe, Dt, sphericity)


Calculates voidage of a bed of cylindrical uniform particles packed into a bed or tube of diameter Dt, with
equivalent sphere diameter Dpe. Shown in [1], and cited by various authors. Correlations exist also for spheres,
solid cylinders, hollow cylinders, and 4-hole cylinders. Based on a series of physical measurements.
1.703
𝜖 = 0.373 + (︁ )︁2
𝑑𝑐𝑦𝑙
𝑑𝑝 + 0.611

Parameters
Dpe [float] Equivalent spherical particle diameter (diameter of a sphere with the same volume),
[m]
Dt [float] Diameter of the tube, [m]
sphericity [float] Sphericity of particles in bed []
Returns
voidage [float] Void fraction of bed packing []

Notes

Average error 1.6%; 1.7 < ratio < 26.3.

References

[1]

Examples

>>> voidage_Benyahia_Oneil_cylindrical(Dpe=.01, Dt=.1, sphericity=.6)


0.38812523109607894

2.15 Packing & demister pressure drop (fluids.packed_tower)

This module contains correlations and functions for calculating pressure drop from packings and demisters; separation
efficiency of demisters; demister pressure drop; and demister geometry.
For reporting bugs, adding feature requests, or submitting pull requests, please use the GitHub issue tracker or contact
the author at [email protected].

• Packing Pressure Drop


• Packing Flooding
• Demister Pressure Drop
• Demister Separation Efficiency

308 Chapter 2. API Reference


Fluids Documentation, Release 0.1

• Demister Geometry

2.15.1 Packing Pressure Drop

fluids.packed_tower.Robbins(L, G, rhol, rhog, mul, H=1.0, Fpd=24.0)


Calculates pressure drop across a packed column, using the Robbins equation.
Pressure drop is given by:

∆𝑃 = 𝐶3 𝐺2𝑓 10𝐶4 𝐿𝑓 + 0.4[𝐿𝑓 /20000]0.1 [𝐶3 𝐺2𝑓 10𝐶4 𝐿𝑓 ]4

𝐺𝑓 = 𝐺[0.075/𝜌𝑔 ]0.5 [𝐹𝑝𝑑 /20]0.5 = 986𝐹𝑠 [𝐹𝑝𝑑 /20]0.5

𝐿𝑓 = 𝐿[62.4/𝜌𝐿 ][𝐹𝑝𝑑 /20]0.5 𝜇0.1

𝐹𝑠 = 𝑉𝑠 𝜌0.5
𝑔

Parameters
L [float] Specific liquid mass flow rate [kg/s/m^2]
G [float] Specific gas mass flow rate [kg/s/m^2]
rhol [float] Density of liquid [kg/m^3]
rhog [float] Density of gas [kg/m^3]
mul [float] Viscosity of liquid [Pa*s]
H [float] Height of packing [m]
Fpd [float] Robbins packing factor (tabulated for packings) [1/ft]
Returns
dP [float] Pressure drop across packing [Pa]

Notes

Perry’s displayed equation has a typo in a superscript. This model is based on the example in Perry’s.

References

[1]

Examples

>>> Robbins(L=12.2, G=2.03, rhol=1000., rhog=1.1853, mul=0.001, H=2.0, Fpd=24.0)


619.6624593438102

fluids.packed_tower.Stichlmair_dry(Vg, rhog, mug, voidage, specific_area, C1, C2, C3,


H=1.0)
Calculates dry pressure drop across a packed column, using the Stichlmair [1] correlation. Uses three regressed
constants for each type of packing, and voidage and specific area.

2.15. Packing & demister pressure drop (fluids.packed_tower) 309


Fluids Documentation, Release 0.1

Pressure drop is given by:


3 1−𝜖 𝐻 2
∆𝑃𝑑𝑟𝑦 = 𝑓0 𝜌𝐺 𝑉 𝑔
4 𝜖4.65 𝑑𝑝

𝐶1 𝐶2
𝑓0 = + + 𝐶3
𝑅𝑒𝑔 𝑅𝑒0.5
𝑔

6(1 − 𝜖)
𝑑𝑝 =
𝑎
Parameters
Vg [float] Superficial velocity of gas, Q/A [m/s]
rhog [float] Density of gas [kg/m^3]
mug [float] Viscosity of gas [Pa*s]
voidage [float] Voidage of bed of packing material []
specific_area [float] Specific area of the packing material [m^2/m^3]
C1 [float] Packing-specific constant []
C2 [float] Packing-specific constant []
C3 [float] Packing-specific constant []
H [float, optional] Height of packing [m]
Returns
dP_dry [float] Pressure drop across dry packing [Pa]

Notes

This model is used by most process simulation tools. If H is not provided, it defaults to 1. If Z is not provided,
it defaults to 1.

References

[1]

Examples

>>> Stichlmair_dry(Vg=0.4, rhog=5., mug=5E-5, voidage=0.68,


... specific_area=260., C1=32., C2=7, C3=1)
236.80904286559885

fluids.packed_tower.Stichlmair_wet(Vg, Vl, rhog, rhol, mug, voidage, specific_area, C1, C2,


C3, H=1)
Calculates dry pressure drop across a packed column, using the Stichlmair [1] correlation. Uses three regressed
constants for each type of packing, and voidage and specific area. This model is for irrigated columns only.
Pressure drop is given by:
(︂ )︂(2+𝑐)/3 (︂ )︂4.65
∆𝑃𝑖𝑟𝑟 ∆𝑃𝑑𝑟𝑦 1 − 𝜖 + ℎ𝑇 𝜖
=
𝐻 𝐻 1−𝜖 𝜖 − ℎ𝑇

310 Chapter 2. API Reference


Fluids Documentation, Release 0.1

[︃ (︂ )︂2 ]︃
∆𝑃 𝑖𝑟𝑟
ℎ𝑇 = ℎ0 1 + 20
𝐻𝜌𝐿 𝑔

𝑉𝐿2 𝑎
𝐹 𝑟𝐿 =
𝑔𝜖4.65
1/3
ℎ0 = 0.555𝐹 𝑟𝐿
−𝐶1 /𝑅𝑒𝑔 − 𝐶2 /(2𝑅𝑒0.5
𝑔 )
𝑐=
𝑓0
3 1−𝜖 𝐻 2
∆𝑃𝑑𝑟𝑦 = 𝑓0 𝜌𝐺 𝑉 𝑔
4 𝜖4.65 𝑑𝑝
𝐶1 𝐶2
𝑓0 = + + 𝐶3
𝑅𝑒𝑔 𝑅𝑒0.5
𝑔

6(1 − 𝜖)
𝑑𝑝 =
𝑎
Parameters
Vg [float] Superficial velocity of gas, Q/A [m/s]
Vl [float] Superficial velocity of liquid, Q/A [m/s]
rhog [float] Density of gas [kg/m^3]
rhol [float] Density of liquid [kg/m^3]
mug [float] Viscosity of gas [Pa*s]
voidage [float] Voidage of bed of packing material []
specific_area [float] Specific area of the packing material [m^2/m^3]
C1 [float] Packing-specific constant []
C2 [float] Packing-specific constant []
C3 [float] Packing-specific constant []
H [float, optional] Height of packing [m]
Returns
dP [float] Pressure drop across irrigated packing [Pa]

Notes

This model is used by most process simulation tools. If H is not provided, it defaults to 1. If Z is not provided,
it defaults to 1. A numerical solver is used and needed by this model. Its initial guess is the dry pressure drop.
Convergence problems may occur. The model as described in [1] appears to have a typo, and could not match
the example. As described in [2], however, the model works.

References

[1], [2]

2.15. Packing & demister pressure drop (fluids.packed_tower) 311


Fluids Documentation, Release 0.1

Examples

Example is from [1], matches.


>>> Stichlmair_wet(Vg=0.4, Vl = 5E-3, rhog=5., rhol=1200., mug=5E-5,
... voidage=0.68, specific_area=260., C1=32., C2=7., C3=1.)
539.8768237253518

2.15.2 Packing Flooding

fluids.packed_tower.Stichlmair_flood(Vl, rhog, rhol, mug, voidage, specific_area, C1, C2, C3,


H=1.0)
Calculates gas rate for flooding of a packed column, using the Stichlmair [1] correlation. Uses three regressed
constants for each type of packing, and voidage and specific area.
Pressure drop is given by:
(︂ )︂(2+𝑐)/3 (︂ )︂4.65
∆𝑃𝑖𝑟𝑟 ∆𝑃𝑑𝑟𝑦 1 − 𝜖 + ℎ𝑇 𝜖
=
𝐻 𝐻 1−𝜖 𝜖 − ℎ𝑇
[︃ (︂ )︂2 ]︃
∆𝑃 𝑖𝑟𝑟
ℎ𝑇 = ℎ0 1 + 20
𝐻𝜌𝐿 𝑔
𝑉𝐿2 𝑎
𝐹 𝑟𝐿 =
𝑔𝜖4.65
1/3
ℎ0 = 0.555𝐹 𝑟𝐿
−𝐶1 /𝑅𝑒𝑔 − 𝐶2 /(2𝑅𝑒0.5
𝑔 )
𝑐=
𝑓0
3 1−𝜖 𝐻
∆𝑃𝑑𝑟𝑦 = 𝑓0 4.65 𝜌𝐺 𝑉𝑔2
4 𝜖 𝑑𝑝
𝐶1 𝐶2
𝑓0 = + + 𝐶3
𝑅𝑒𝑔 𝑅𝑒0.5
𝑔
6(1 − 𝜖)
𝑑𝑝 =
𝑎
Parameters
Vl [float] Superficial velocity of liquid, Q/A [m/s]
rhog [float] Density of gas [kg/m^3]
rhol [float] Density of liquid [kg/m^3]
mug [float] Viscosity of gas [Pa*s]
voidage [float] Voidage of bed of packing material []
specific_area [float] Specific area of the packing material [m^2/m^3]
C1 [float] Packing-specific constant []
C2 [float] Packing-specific constant []
C3 [float] Packing-specific constant []
H [float, optional] Height of packing [m]
Returns
Vg [float] Superficial velocity of gas, Q/A [m/s]

312 Chapter 2. API Reference


Fluids Documentation, Release 0.1

Notes

A numerical solver is used to solve this model.

References

[1]

Examples

Example is from [1], matches.

>>> Stichlmair_flood(Vl = 5E-3, rhog=5., rhol=1200., mug=5E-5,


... voidage=0.68, specific_area=260., C1=32., C2=7., C3=1.)
0.6394323542746928

2.15.3 Demister Pressure Drop

fluids.packed_tower.dP_demister_dry_Setekleiv_Svendsen(S, voidage, vs, rho, mu,


L=1)
Calculates dry pressure drop across a demister, using the correlation in [1]. This model is for dry demisters with
no holdup only.
)︂0.75
∆𝑃 𝜖2 𝜇𝑓 𝜖𝑆 2 𝐿
(︂
565 74.9
= 10.29 − − + 45.33
𝜌𝑓 𝑣 2 69.6𝑆𝐿 − (𝑆𝐿)2 − 779 160.9 − 4.85𝑆𝐿 𝜌𝑓 𝑣

Parameters
S [float] Specific area of the demister, normally ~250-1000 [m^2/m^3]
voidage [float] Voidage of bed of the demister material, normally ~0.98 []
vs [float] Superficial velocity of fluid, Q/A [m/s]
rho [float] Density of fluid [kg/m^3]
mu [float] Viscosity of fluid [Pa*s]
L [float, optional] Length of the demister [m]
Returns
dP [float] Pressure drop across a dry demister [Pa]

Notes

Useful at startup and in modeling. Dry pressure drop is normally negligible compared to wet pressure drop.
Coefficients obtained by evolutionary programming and may not fit data outside of the limits of the variables.

References

[1]

2.15. Packing & demister pressure drop (fluids.packed_tower) 313


Fluids Documentation, Release 0.1

Examples

>>> dP_demister_dry_Setekleiv_Svendsen(S=250, voidage=.983, vs=1.2, rho=10, mu=3E-


˓→5, L=1)

320.3280788941329

fluids.packed_tower.dP_demister_dry_Setekleiv_Svendsen_lit(S, voidage, vs, rho,


mu, L=1)
Calculates dry pressure drop across a demister, using the correlation in [1]. This model is for dry demisters with
no holdup only. Developed with literature data included as well as their own experimental data.
)︂0.75
∆𝑃 𝜖2 𝜇𝑓 𝜖𝑆 2 𝐿
(︂
320 52.4
2
= 7.3 − 2
− + 27.2
𝜌𝑓 𝑣 69.6𝑆𝐿 − (𝑆𝐿) − 779 161 − 4.85𝑆𝐿 𝜌𝑓 𝑣

Parameters
S [float] Specific area of the demister, normally ~250-1000 [m^2/m^3]
voidage [float] Voidage of bed of the demister material, normally ~0.98 []
vs [float] Superficial velocity of fluid, Q/A [m/s]
rho [float] Density of fluid [kg/m^3]
mu [float] Viscosity of fluid [Pa*s]
L [float, optional] Length of the demister [m]
Returns
dP [float] Pressure drop across a dry demister [Pa]

Notes

Useful at startup and in modeling. Dry pressure drop is normally negligible compared to wet pressure drop.
Coefficients obtained by evolutionary programming and may not fit data outside of the limits of the variables.

References

[1]

Examples

>>> dP_demister_dry_Setekleiv_Svendsen_lit(S=250, voidage=.983, vs=1.2, rho=10,


˓→mu=3E-5, L=1)

209.083848658307

fluids.packed_tower.dP_demister_wet_ElDessouky(vs, voidage, d_wire, L=1)


Calculates wet pressure drop across a demister, using the correlation in [1]. Uses only their own experimental
data.
∆𝑃
= 0.002357(1 − 𝜖)0.375798 (𝑉 )0.81317 (𝑑𝑤 )−1.56114147
𝐿
Parameters
vs [float] Superficial velocity of fluid, Q/A [m/s]

314 Chapter 2. API Reference


Fluids Documentation, Release 0.1

voidage [float] Voidage of bed of the demister material, normally ~0.98 []


d_wire [float] Diameter of mesh wire,[m]
L [float, optional] Length of the demister [m]
Returns
dP [float] Pressure drop across a dry demister [Pa]

Notes

No dependency on the liquid properties is included here. Because of the exponential nature of the correlation,
the limiting pressure drop as V is lowered is 0 Pa. A dry pressure drop correlation should be compared with
results from this at low velocities, and the larger of the two pressure drops used.
The correlation in [1] was presented as follows, with wire diameter in units of mm, density in kg/m^3, V in m/s,
and dP in Pa/m.

∆𝑃 = 3.88178(𝜌𝑚𝑒𝑠ℎ )0.375798 (𝑉 )0.81317 (𝑑𝑤 )−1.56114147

Here, the correlation is converted to base SI units and to use voidage; not all demisters are stainless steel as in
[1]. A density of 7999 kg/m^3 was used in the conversion.
In [1], V ranged from 0.98-7.5 m/s, rho from 80.317-208.16 kg/m^3, depth from 100 to 200 mm, wire diameter
of 0.2mm to 0.32 mm, and particle diameter from 1 to 5 mm.

References

[1]

Examples

>>> dP_demister_wet_ElDessouky(6, 0.978, 0.00032)


688.9216420105029

2.15.4 Demister Separation Efficiency

fluids.packed_tower.separation_demister_ElDessouky(vs, voidage, d_wire, d_drop)


Calculates droplet removal by a demister as a fraction from 0 to 1, using the correlation in [1]. Uses only their
own experimental data.

𝜂 = 0.85835(𝑑𝑤 )−0.28264 (1 − 𝜖)0.099625 (𝑉 )0.106878 (𝑑𝑝 )0.383197

Parameters
vs [float] Superficial velocity of fluid, Q/A [m/s]
voidage [float] Voidage of bed of the demister material, normally ~0.98 []
d_wire [float] Diameter of mesh wire,[m]
d_drop [float] Drop diameter, [m]
Returns
eta [float] Fraction droplets removed by mass [-]

2.15. Packing & demister pressure drop (fluids.packed_tower) 315


Fluids Documentation, Release 0.1

Notes

No dependency on the liquid properties is included here. Because of the exponential nature of the correlation,
for smaller diameters separation quickly lowers. This correlation can predict a separation larger than 1 for higher
velocities, lower voidages, lower wire diameters, and large droplet sizes. This function truncates these larger
values to 1.
The correlation in [1] was presented as follows, with wire diameter in units of mm, density in kg/m^3, V in m/s,
separation in %, and particle diameter in mm.

𝜂 = 17.5047(𝑑𝑤 )−0.28264 (𝜌𝑚𝑒𝑠ℎ )0.099625 (𝑉 )0.106878 (𝑑𝑝 )0.383197

Here, the correlation is converted to base SI units and to use voidage; not all demisters are stainless steel as in
[1]. A density of 7999 kg/m^3 was used in the conversion.
In [1], V ranged from 0.98-7.5 m/s, rho from 80.317-208.16 kg/m^3, depth from 100 to 200 mm, wire diameter
of 0.2 mm to 0.32 mm, and particle diameter from 1 to 5 mm.

References

[1]

Examples

>>> separation_demister_ElDessouky(1.35, 0.974, 0.0002, 0.005)


0.8982892997640582

2.15.5 Demister Geometry

fluids.packed_tower.voidage_experimental(m, rho, D, H)
Calculates voidage of a bed or mesh given an experimental weight and fixed density, diameter, and height, as
shown in [1]. The formula is also self-evident.
𝑚𝑚𝑒𝑠ℎ
𝜋 2
4 𝑑𝑐𝑜𝑙𝑢𝑚𝑛 𝐿𝑚𝑒𝑠ℎ
𝜖=1−
𝜌𝑚𝑎𝑡𝑒𝑟𝑖𝑎𝑙
Parameters
m [float] Mass of mesh or bed particles weighted, [kg]
rho [float] Density of solid particles or mesh [kg/m^3]
D [float] Diameter of the cylindrical bed [m]
H [float] Height of the demister or bed [m]
Returns
voidage [float] Voidage of bed of the material []

Notes

Should be trusted over manufacturer data.

316 Chapter 2. API Reference


Fluids Documentation, Release 0.1

References

[1]

Examples

>>> voidage_experimental(m=126, rho=8000, D=1, H=1)


0.9799464771704212

fluids.packed_tower.specific_area_mesh(voidage, d)
Calculates the specific area of a wire mesh, as used in demisters or filters. Shown in [1], and also self-evident
and non-empirical. Makes the ideal assumption that wires never touch.
4(1 − 𝜖)
𝑆=
𝑑𝑤𝑖𝑟𝑒
Parameters
voidage [float] Voidage of the mesh []
d [float] Diameter of the wires making the mesh, [m]
Returns
S [float] Specific area of the mesh [m^2/m^3]

Notes

Should be preferred over manufacturer data. Can also be used to show that manufacturer’s data is inconsistent
with their claimed voidage and wire diameter.

References

[1]

Examples

>>> specific_area_mesh(voidage=.934, d=3e-4)


879.9999999999994

2.16 Particle Size Distributions (fluids.particle_size_distribution)

This module contains particle distribution characterization, fitting, interpolating, and manipulation functions. It may
be used with discrete particle size distributions, or with statistical ones with parameters specified.
For reporting bugs, adding feature requests, or submitting pull requests, please use the GitHub issue tracker or contact
the author at [email protected].

• Particle Size Distribution Base Class


• Discrete Particle Size Distributions

2.16. Particle Size Distributions (fluids.particle_size_distribution) 317


Fluids Documentation, Release 0.1

• Statistical Particle Size Distributions


• Helper functions: Lognormal Distribution
• Helper functions: Gates Gaudin Schuhman Distribution
• Helper functions: Rosin Rammler Distribution
• Sieves
• Point Spacing

2.16.1 Particle Size Distribution Base Class

class fluids.particle_size_distribution.ParticleSizeDistributionContinuous
Bases: object
Base class representing a continuous particle size distribution specified by a mathematical/statistical function.
This class holds the common methods only.

Notes

Although the stated units of input are in meters, this class is actually independent of the units provided; all
results will be consistent with the provided unit.

References

[R6899669cf6c8-1]

Examples

Example problem from [R6899669cf6c8-1].

>>> psd = PSDLognormal(s=0.5, d_characteristic=5E-6)

Attributes
vssa The volume-specific surface area of a particle size distribution.

Methods

cdf(self, d[, n]) Computes the cumulative distribution density func-


tion of a continuous particle size distribution at a
specified particle diameter, an optionally in a spec-
ified basis.
cdf_discrete(self, ds[, n]) Computes the cumulative distribution functions for a
list of specified particle diameters.
delta_cdf(self, d_min, d_max[, n]) Computes the difference in cumulative distribution
function between two particle size diameters.
dn(self, fraction[, n]) Computes the diameter at which a specified fraction
of the distribution falls under.
Continued on next page

318 Chapter 2. API Reference


Fluids Documentation, Release 0.1

Table 5 – continued from previous page


ds_discrete(self[, d_min, d_max, pts, . . . ]) Create a particle spacing mesh to perform calcula-
tions with, according to one of several ways.
fractions_discrete(self, ds[, n]) Computes the fractions of the cumulative distribution
functions which lie between the specified specified
particle diameters.
mean_size(self, p, q) Calculates the mean particle size according to
moment-ratio notation.
mean_size_ISO(self, k, r) Calculates the mean particle size according to mo-
ment notation (ISO).
pdf(self, d[, n]) Computes the probability density function of a con-
tinuous particle size distribution at a specified parti-
cle diameter, an optionally in a specified basis.
plot_cdf(self[, n, d_min, d_max, pts, method]) Plot the cumulative distribution function of the parti-
cle size distribution.
plot_pdf(self[, n, d_min, d_max, pts, . . . ]) Plot the probability density function of the particle
size distribution.

cdf(self, d, n=None)
Computes the cumulative distribution density function of a continuous particle size distribution at a speci-
fied particle diameter, an optionally in a specified basis. The evaluation function varies with the distribution
chosen.
∫︁ 𝑑
𝑄𝑛 (𝑑) = 𝑞𝑛 (𝑑)
0

Parameters
d [float] Particle size diameter, [m]
n [int, optional] None (for the order specified when the distribution was created), 0 (num-
ber), 1 (length), 2 (area), 3 (volume/mass), or any integer, [-]
Returns
cdf [float] The cumulative distribution function at the specified diameter and order, [-]

Notes

Analytical integrals can be found for most distributions even when order conversions are necessary.

Examples

>>> psd = PSDLognormal(s=0.5, d_characteristic=5E-6, order=3)


>>> for n in (0, 1, 2, 3):
... print(psd.cdf(5e-6, n))
0.933192798731
0.841344746069
0.691462461274
0.5

cdf_discrete(self, ds, n=None)


Computes the cumulative distribution functions for a list of specified particle diameters.
Parameters

2.16. Particle Size Distributions (fluids.particle_size_distribution) 319


Fluids Documentation, Release 0.1

ds [list[float]] Particle size diameters, [m]


n [int, optional] None (for the order specified when the distribution was created), 0 (num-
ber), 1 (length), 2 (area), 3 (volume/mass), or any integer, [-]
Returns
cdfs [float] The cumulative distribution functions at the specified diameters and order, [-]

Examples

>>> psd = PSDLognormal(s=0.5, d_characteristic=5E-6, order=3)


>>> psd.cdf_discrete([1e-6, 1e-5, 1e-4, 1e-3])
[0.0006434710129138987, 0.9171714809983015, 0.9999999989602018, 1.0]

delta_cdf(self, d_min, d_max, n=None)


Computes the difference in cumulative distribution function between two particle size diameters.

∆𝑄𝑛 = 𝑄𝑛 (𝑑𝑚𝑎𝑥 ) − 𝑄𝑛 (𝑑𝑚𝑖𝑛 )

Parameters
d_min [float] Lower particle size diameter, [m]
d_max [float] Upper particle size diameter, [m]
n [int, optional] None (for the order specified when the distribution was created), 0 (num-
ber), 1 (length), 2 (area), 3 (volume/mass), or any integer, [-]
Returns
delta_cdf [float] The difference in the cumulative distribution function for the two diameters
specified, [-]

Examples

>>> psd = PSDLognormal(s=0.5, d_characteristic=5E-6, order=3)


>>> psd.delta_cdf(1e-6, 1e-5)
0.9165280099853876

dn(self, fraction, n=None)


Computes the diameter at which a specified fraction of the distribution falls under. Utilizes a bounded
solver to search for the desired diameter.
Parameters
fraction [float] Fraction of the distribution which should be under the calculated diameter,
[-]
n [int, optional] None (for the order specified when the distribution was created), 0 (num-
ber), 1 (length), 2 (area), 3 (volume/mass), or any integer, [-]
Returns
d [float] Particle size diameter, [m]

320 Chapter 2. API Reference


Fluids Documentation, Release 0.1

Examples

>>> psd = PSDLognormal(s=0.5, d_characteristic=5E-6, order=3)


>>> psd.dn(.5)
5e-06
>>> psd.dn(1)
0.00029474365335233776
>>> psd.dn(0)
0.0

ds_discrete(self, d_min=None, d_max=None, pts=20, limit=1e-09, method=’logarithmic’)


Create a particle spacing mesh to perform calculations with, according to one of several ways. The allow-
able meshes are ‘linear’, ‘logarithmic’, a geometric series specified by a Renard number such as ‘R10’, or
the meshes available in one of several sieve standards.
Parameters
d_min [float, optional] The minimum diameter at which the mesh starts, [m]
d_max [float, optional] The maximum diameter at which the mesh ends, [m]
pts [int, optional] The number of points to return for the mesh (note this is not respected by
sieve meshes), [-]
limit [float] If d_min or d_max is not specified, it will be calculated as the dn at which this
limit or 1-limit exists (this is ignored for Renard numbers), [-]
method [str, optional] Either ‘linear’, ‘logarithmic’, a Renard number like ‘R10’ or ‘R5’
or’R2.5’, or one of the sieve standards ‘ISO 3310-1 R40/3’, ‘ISO 3310-1 R20’, ‘ISO
3310-1 R20/3’, ‘ISO 3310-1’, ‘ISO 3310-1 R10’, ‘ASTM E11’, [-]
Returns
ds [list[float]] The generated mesh diameters, [m]

Notes

Note that when specifying a Renard series, only one of d_min or d_max can be respected! Provide only
one of those numbers.
Note that when specifying a sieve standard the number of points is not respected!

References

[1], [2]
fractions_discrete(self, ds, n=None)
Computes the fractions of the cumulative distribution functions which lie between the specified specified
particle diameters. The first diameter contains the cdf from 0 to it.
Parameters
ds [list[float]] Particle size diameters, [m]
n [int, optional] None (for the order specified when the distribution was created), 0 (num-
ber), 1 (length), 2 (area), 3 (volume/mass), or any integer, [-]
Returns

2.16. Particle Size Distributions (fluids.particle_size_distribution) 321


Fluids Documentation, Release 0.1

fractions [float] The differences in the cumulative distribution functions at the specified
diameters and order, [-]

Examples

>>> psd = PSDLognormal(s=0.5, d_characteristic=5E-6, order=3)


>>> psd.fractions_discrete([1e-6, 1e-5, 1e-4, 1e-3])
[0.0006434710129138987, 0.9165280099853876, 0.08282851796190027, 1.
˓→039798247504109e-09]

mean_size(self, p, q)
Calculates the mean particle size according to moment-ratio notation. This is the more common and often
convenient definition.
∑︀ 𝑝
¯ 𝑝,𝑞 (𝑝−𝑞) = ∑︀𝑖 𝑛𝑖 𝐷𝑖𝑞
[︀ ]︀
𝐷
𝑛𝑖 𝐷𝑖
[︂ ∑︀ 𝑝 ]︂ 𝑖
[︀
¯ 𝑝,𝑝 = exp
]︀ 𝑛𝑖 𝐷𝑖 ln 𝐷𝑖
𝑖∑︀
𝐷 𝑝 , if p = q
𝑖 𝑛𝑖 𝐷𝑖

Note that 𝑛𝑖 in the above equation is replaceable with the fraction of particles in that bin.
Parameters
p [int] Power and/or subscript of D moment in the above equations, [-]
q [int] Power and/or subscript of D moment in the above equations, [-]
Returns
d_pq [float] Mean particle size according to the specified p and q, [m]

Notes

The following is a list of common names for specific mean diameters.


• D[-3, 0]: arithmetic harmonic mean volume diameter
• D[-2, 1]: size-weighted harmonic mean volume diameter
• D[-1, 2]: area-weighted harmonic mean volume diameter
• D[-2, 0]: arithmetic harmonic mean area diameter
• D[-1, 1]: size-weighted harmonic mean area diameter
• D[-1, 0]: arithmetic harmonic mean diameter
• D[0, 0]: arithmetic geometric mean diameter
• D[1, 1]: size-weighted geometric mean diameter
• D[2, 2]: area-weighted geometric mean diameter
• D[3, 3]: volume-weighted geometric mean diameter
• D[1, 0]: arithmetic mean diameter
• D[2, 1]: size-weighted mean diameter
• D[3, 2]: area-weighted mean diameter, Sauter mean diameter
• D[4, 3]: volume-weighted mean diameter, De Brouckere diameter

322 Chapter 2. API Reference


Fluids Documentation, Release 0.1

• D[2, 0]: arithmetic mean area diameter


• D[3, 1]: size-weighted mean area diameter
• D[4, 2]: area-weighted mean area diameter
• D[5, 3]: volume-weighted mean area diameter
• D[3, 0]: arithmetic mean volume diameter
• D[4, 1]: size-weighted mean volume diameter
• D[5, 2]: area-weighted mean volume diameter
• D[6, 3]: volume-weighted mean volume diameter
This notation was first introduced in [1].
The sum of p and q is called the order of the mean size [3].

¯ 𝑝,𝑞 ≡ 𝐷
𝐷 ¯ 𝑞,𝑝

References

[1], [2], [3]

Examples

>>> psd = PSDLognormal(s=0.5, d_characteristic=5E-6)


>>> psd.mean_size(3, 2)
4.412484512922977e-06

Note that for the case where p == q, a different set of formulas are required - which do not have analytical
results for many distributions. Therefore, a close numerical approximation is used instead, to perturb the
values of p and q so they are 1E-9 away from each other. This leads only to slight errors, as in the example
below where the correct answer is 5E-6.

>>> psd.mean_size(3, 3)
4.9999999304923345e-06

mean_size_ISO(self, k, r)
Calculates the mean particle size according to moment notation (ISO). This system is related to the
moment-ratio notation as follows; see the mean_size method for the full formulas.

¯𝑝−𝑞,𝑞 ≡ 𝑥
𝑥 ¯ 𝑝,𝑞
¯𝑘+𝑟,𝑟 ≡ 𝐷

Parameters
k [int] Power and/or subscript of D moment in the above equations, [-]
r [int] Power and/or subscript of D moment in the above equations, [-]
Returns
x_kr [float] Mean particle size according to the specified k and r in the ISO series, [m]

2.16. Particle Size Distributions (fluids.particle_size_distribution) 323


Fluids Documentation, Release 0.1

Notes

The following is a list of common names for specific mean diameters in the ISO naming convention.
• x[-3, 0]: arithmetic harmonic mean volume diameter
• x[-3, 1]: size-weighted harmonic mean volume diameter
• x[-3, 2]: area-weighted harmonic mean volume diameter
• x[-2, 0]: arithmetic harmonic mean area diameter
• x[-2, 1]: size-weighted harmonic mean area diameter
• x[-1, 0]: arithmetic harmonic mean diameter
• x[0, 0]: arithmetic geometric mean diameter
• x[0, 1]: size-weighted geometric mean diameter
• x[0, 2]: area-weighted geometric mean diameter
• x[0, 3]: volume-weighted geometric mean diameter
• x[1, 0]: arithmetic mean diameter
• x[1, 1]: size-weighted mean diameter
• x[1, 2]: area-weighted mean diameter, Sauter mean diameter
• x[1, 3]: volume-weighted mean diameter, De Brouckere diameter
• x[2, 0]: arithmetic mean area diameter
• x[1, 1]: size-weighted mean area diameter
• x[2, 2]: area-weighted mean area diameter
• x[2, 3]: volume-weighted mean area diameter
• x[3, 0]: arithmetic mean volume diameter
• x[3, 1]: size-weighted mean volume diameter
• x[3, 2]: area-weighted mean volume diameter
• x[3, 3]: volume-weighted mean volume diameter
When working with continuous distributions, the ISO series must be used to perform the actual calcula-
tions.

References

[1]

Examples

>>> psd = PSDLognormal(s=0.5, d_characteristic=5E-6)


>>> psd.mean_size_ISO(1, 2)
4.412484512922977e-06

324 Chapter 2. API Reference


Fluids Documentation, Release 0.1

pdf(self, d, n=None)
Computes the probability density function of a continuous particle size distribution at a specified particle
diameter, an optionally in a specified basis. The evaluation function varies with the distribution chosen.
The interconversion between distribution orders is performed using the following formula [1]:

𝑥(𝑠−𝑟) 𝑞𝑟 (𝑑)𝑑𝑑
𝑞𝑠 (𝑑) = ∫︀ ∞ (𝑠−𝑟)
0
𝑑 𝑞𝑟 (𝑑)𝑑𝑑

Parameters
d [float] Particle size diameter, [m]
n [int, optional] None (for the order specified when the distribution was created), 0 (num-
ber), 1 (length), 2 (area), 3 (volume/mass), or any integer, [-]
Returns
pdf [float] The probability density function at the specified diameter and order, [-]

Notes

The pdf order conversions are typically available analytically after some work. They have been verified
numerically. See the various functions with names ending with ‘basis_integral’ for the formulations. The
distributions normally do not have analytical limits for diameters of 0 or infinity, but large values suffice
to capture the area of the integral.

References

[1]

Examples

>>> psd = PSDLognormal(s=0.5, d_characteristic=5E-6, order=3)


>>> psd.pdf(1e-5)
30522.765209509154
>>> psd.pdf(1e-5, n=3)
30522.765209509154
>>> psd.pdf(1e-5, n=0)
1238.661379483343

plot_cdf(self, n=(0, 1, 2, 3), d_min=None, d_max=None, pts=500, method=’logarithmic’)


Plot the cumulative distribution function of the particle size distribution. The plotted range can be specified
using d_min and d_max, or estimated automatically. One or more order can be plotted, by providing an
iterable of ints as the value of n or just one int.
Parameters
n [tuple(int) or int, optional] None (for the order specified when the distribution was cre-
ated), 0 (number), 1 (length), 2 (area), 3 (volume/mass), or any integer; as many as desired
may be specified, [-]
d_min [float, optional] Lower particle size diameter, [m]
d_max [float, optional] Upper particle size diameter, [m]
pts [int, optional] The number of points for values to be calculated, [-]

2.16. Particle Size Distributions (fluids.particle_size_distribution) 325


Fluids Documentation, Release 0.1

method [str, optional] Either ‘linear’, ‘logarithmic’, a Renard number like ‘R10’ or ‘R5’
or’R2.5’, or one of the sieve standards ‘ISO 3310-1 R40/3’, ‘ISO 3310-1 R20’, ‘ISO
3310-1 R20/3’, ‘ISO 3310-1’, ‘ISO 3310-1 R10’, ‘ASTM E11’, [-]
plot_pdf(self, n=(0, 1, 2, 3), d_min=None, d_max=None, pts=500, normalized=False,
method=’linear’)
Plot the probability density function of the particle size distribution. The plotted range can be specified
using d_min and d_max, or estimated automatically. One or more order can be plotted, by providing an
iterable of ints as the value of n or just one int.
Parameters
n [tuple(int) or int, optional] None (for the order specified when the distribution was cre-
ated), 0 (number), 1 (length), 2 (area), 3 (volume/mass), or any integer; as many as desired
may be specified, [-]
d_min [float, optional] Lower particle size diameter, [m]
d_max [float, optional] Upper particle size diameter, [m]
pts [int, optional] The number of points for values to be calculated, [-]
normalized [bool, optional] Whether to display the actual probability density function,
which may have a huge magnitude - or to divide each point by the sum of all the points.
Doing this is a common practice, but the values at each point are dependent on the number
of points being plotted, and the distribution of the points; [-]
method [str, optional] Either ‘linear’, ‘logarithmic’, a Renard number like ‘R10’ or ‘R5’
or’R2.5’, or one of the sieve standards ‘ISO 3310-1 R40/3’, ‘ISO 3310-1 R20’, ‘ISO
3310-1 R20/3’, ‘ISO 3310-1’, ‘ISO 3310-1 R10’, ‘ASTM E11’, [-]
vssa
The volume-specific surface area of a particle size distribution.
6
VSSA =
𝑥
¯1,2
Returns
VSSA [float] The volume-specific surface area of the distribution, [m^2/m^3]

References

[1]

Examples

>>> PSDLognormal(s=0.5, d_characteristic=5E-6).vssa


1359778.1436801916

2.16.2 Discrete Particle Size Distributions

class fluids.particle_size_distribution.ParticleSizeDistribution(ds, fractions,


cdf=False,
order=3,
mono-
tonic=True)
Bases: fluids.particle_size_distribution.ParticleSizeDistributionContinuous

326 Chapter 2. API Reference


Fluids Documentation, Release 0.1

Class representing a discrete particle size distribution specified by a series of diameter bins, and the quantity
of particles in each bin. The quantities may be specified as either the fraction of particles in each bin, or as
cumulative distributions. The input fractions can be specified to be in a mass basis (order=3), number basis
(order=0), or the orders in between for length basis or area basis. If the fractions do not sum to 1, and cdf is
False, then the fractions are normalized. This allows flow rates or counts of size bins to be given as well.
Parameters
ds [list[float]] Diameter bins; length of the specified quantities, optionally +1 that length to
specify a cutoff diameter for the smallest diameter bin, [m]
fractions [list[float], optional] The mass/mole/volume/length/area/count fractions or cumula-
tive distributions or counts of each particle size in each diameter bin (the type is specified
by order), [-]
order [int, optional] 0 for a number distribution as input; 1 for length distribution; 2 for area
distribution; 3 for mass, mole, or volume distribution, [-]
cdf [bool, optional] If the distribution is given as increasing fractions with 1 as the last result,
cdf must be set to True, [-]
monotonic [bool, optional] If True, for interpolated quanties, monotonic splines will be used
instead of the standard splines, [-]

Notes

Although the stated units of input are in meters, this class is actually independent of the units provided; all
results will be consistent with the provided unit.

References

[R8b42d45c9b22-1], [R8b42d45c9b22-2]

Examples

Example problem from [R8b42d45c9b22-1], calculating several diameters and the cumulative distribution.

>>> ds = 1E-6*np.array([240, 360, 450, 562.5, 703, 878, 1097, 1371, 1713, 2141,
˓→2676, 3345, 4181, 5226, 6532])

>>> numbers = [65, 119, 232, 410, 629, 849, 990, 981, 825, 579, 297, 111, 21, 1]
>>> psd = ParticleSizeDistribution(ds=ds, fractions=numbers, order=0)
>>> psd
<Particle Size Distribution, points=14, D[3, 3]=0.002451 m>

Attributes
fractions [list[float]] The mass/mole/volume basis fractions of particles in each bin, [-]
area_fractions [list[float]] The area fractions of particles in each bin, [-]
length_fractions [list[float]] The length fractions of particles in each bin, [-]
number_fractions [list[float]] The number fractions of particles in each bin, [-]
fraction_cdf [list[float]] The cumulative mass/mole/volume basis fractions of particles in each
bin, [-]
area_cdf [list[float]] The cumulative area fractions of particles in each bin, [-]

2.16. Particle Size Distributions (fluids.particle_size_distribution) 327


Fluids Documentation, Release 0.1

length_cdf [list[float]] The cumulative length fractions of particles in each bin, [-]
number_cdf [list[float]] The cumulative number fractions of particles in each bin, [-]
size_classes [bool] Whether or not the diameter bins were set as size classes (as length of frac-
tions + 1), [-]
N [int] The number of provided points, [-]

Methods

cdf(self, d[, n]) Computes the cumulative distribution density func-


tion of a continuous particle size distribution at a
specified particle diameter, an optionally in a spec-
ified basis.
cdf_discrete(self, ds[, n]) Computes the cumulative distribution functions for a
list of specified particle diameters.
delta_cdf(self, d_min, d_max[, n]) Computes the difference in cumulative distribution
function between two particle size diameters.
di_power(self, i[, power]) Method to calculate a power of a particle class/bin
in a generic way so as to support when there are as
many ds as fractions, or one more diameter spec than
fractions.
dn(self, fraction[, n]) Computes the diameter at which a specified fraction
of the distribution falls under.
ds_discrete(self[, d_min, d_max, pts, . . . ]) Create a particle spacing mesh to perform calcula-
tions with, according to one of several ways.
fit(self[, x0, distribution, n]) Incomplete method to fit experimental values to a
curve.
fractions_discrete(self, ds[, n]) Computes the fractions of the cumulative distribution
functions which lie between the specified specified
particle diameters.
mean_size(self, p, q) Calculates the mean particle size according to
moment-ratio notation.
mean_size_ISO(self, k, r) Calculates the mean particle size according to mo-
ment notation (ISO).
pdf(self, d[, n]) Computes the probability density function of a con-
tinuous particle size distribution at a specified parti-
cle diameter, an optionally in a specified basis.
plot_cdf(self[, n, d_min, d_max, pts, method]) Plot the cumulative distribution function of the parti-
cle size distribution.
plot_pdf(self[, n, d_min, d_max, pts, . . . ]) Plot the probability density function of the particle
size distribution.

Dis
Representative diameters of each bin.
di_power(self, i, power=1)
Method to calculate a power of a particle class/bin in a generic way so as to support when there are as
many ds as fractions, or one more diameter spec than fractions.

328 Chapter 2. API Reference


Fluids Documentation, Release 0.1

When each bin has a lower and upper bound, the formula is as follows [1].
(𝑟+1) (𝑟+1)
𝐷𝑖,𝑢𝑏 − 𝐷𝑖,𝑙𝑏
𝐷𝑖𝑟 =
(𝐷𝑖,𝑢𝑏 − 𝐷𝑖,𝑙𝑏 )(𝑟 + 1)

Where ub represents the upper bound, and lb represents the lower bound. Otherwise, the standard definition
is used:

𝐷𝑖𝑟 = 𝐷𝑖𝑟

Parameters
i [int] The index of the diameter for the calculation, [-]
power [int] The exponent, [-]
Returns
di_power [float] The representative bin diameter raised to power, [m^power]

References

[1]
fit(self, x0=None, distribution=’lognormal’, n=None, **kwargs)
Incomplete method to fit experimental values to a curve. It is very hard to get good initial guesses, which
are really required for this. Differential evolution is promissing. This API is likely to change in the future.
interpolated
mean_size(self, p, q)
Calculates the mean particle size according to moment-ratio notation. This is the more common and often
convenient definition.
∑︀ 𝑝
¯ 𝑝,𝑞 (𝑝−𝑞) = ∑︀𝑖 𝑛𝑖 𝐷𝑖𝑞
[︀ ]︀
𝐷
𝑛𝑖 𝐷𝑖
[︂ ∑︀ 𝑝 ]︂ 𝑖
[︀
¯ 𝑝,𝑝 = exp
]︀ 𝑛𝑖 𝐷𝑖 ln 𝐷𝑖
𝑖∑︀
𝐷 𝑝 , if p = q
𝑖 𝑛𝑖 𝐷𝑖

Note that 𝑛𝑖 in the above equation is replaceable with the fraction of particles in that bin.
Parameters
p [int] Power and/or subscript of D moment in the above equations, [-]
q [int] Power and/or subscript of D moment in the above equations, [-]
Returns
d_pq [float] Mean particle size according to the specified p and q, [m]

Notes

The following is a list of common names for specific mean diameters.


• D[-3, 0]: arithmetic harmonic mean volume diameter
• D[-2, 1]: size-weighted harmonic mean volume diameter
• D[-1, 2]: area-weighted harmonic mean volume diameter

2.16. Particle Size Distributions (fluids.particle_size_distribution) 329


Fluids Documentation, Release 0.1

• D[-2, 0]: arithmetic harmonic mean area diameter


• D[-1, 1]: size-weighted harmonic mean area diameter
• D[-1, 0]: arithmetic harmonic mean diameter
• D[0, 0]: arithmetic geometric mean diameter
• D[1, 1]: size-weighted geometric mean diameter
• D[2, 2]: area-weighted geometric mean diameter
• D[3, 3]: volume-weighted geometric mean diameter
• D[1, 0]: arithmetic mean diameter
• D[2, 1]: size-weighted mean diameter
• D[3, 2]: area-weighted mean diameter, Sauter mean diameter
• D[4, 3]: volume-weighted mean diameter, De Brouckere diameter
• D[2, 0]: arithmetic mean area diameter
• D[3, 1]: size-weighted mean area diameter
• D[4, 2]: area-weighted mean area diameter
• D[5, 3]: volume-weighted mean area diameter
• D[3, 0]: arithmetic mean volume diameter
• D[4, 1]: size-weighted mean volume diameter
• D[5, 2]: area-weighted mean volume diameter
• D[6, 3]: volume-weighted mean volume diameter
This notation was first introduced in [1].
The sum of p and q is called the order of the mean size [3].

¯ 𝑝,𝑞 ≡ 𝐷
𝐷 ¯ 𝑞,𝑝

References

[1], [2], [3]

Examples

>>> ds = 1E-6*np.array([240, 360, 450, 562.5, 703, 878, 1097, 1371, 1713,
˓→2141, 2676, 3345, 4181, 5226, 6532])

>>> numbers = [65, 119, 232, 410, 629, 849, 990, 981, 825, 579, 297, 111, 21,
˓→1]

>>> psd = ParticleSizeDistribution(ds=ds, fractions=numbers, order=0)


>>> psd.mean_size(3, 2)
0.002269321031745045

mean_size_ISO(self, k, r)
Calculates the mean particle size according to moment notation (ISO). This system is related to the
moment-ratio notation as follows; see the mean_size method for the full formulas.

¯𝑝−𝑞,𝑞 ≡ 𝑥
𝑥 ¯ 𝑝,𝑞
¯𝑘+𝑟,𝑟 ≡ 𝐷

330 Chapter 2. API Reference


Fluids Documentation, Release 0.1

Parameters
k [int] Power and/or subscript of D moment in the above equations, [-]
r [int] Power and/or subscript of D moment in the above equations, [-]
Returns
x_kr [float] Mean particle size according to the specified k and r in the ISO series, [m]

Notes

The following is a list of common names for specific mean diameters in the ISO naming convention.
• x[-3, 0]: arithmetic harmonic mean volume diameter
• x[-3, 1]: size-weighted harmonic mean volume diameter
• x[-3, 2]: area-weighted harmonic mean volume diameter
• x[-2, 0]: arithmetic harmonic mean area diameter
• x[-2, 1]: size-weighted harmonic mean area diameter
• x[-1, 0]: arithmetic harmonic mean diameter
• x[0, 0]: arithmetic geometric mean diameter
• x[0, 1]: size-weighted geometric mean diameter
• x[0, 2]: area-weighted geometric mean diameter
• x[0, 3]: volume-weighted geometric mean diameter
• x[1, 0]: arithmetic mean diameter
• x[1, 1]: size-weighted mean diameter
• x[1, 2]: area-weighted mean diameter, Sauter mean diameter
• x[1, 3]: volume-weighted mean diameter, De Brouckere diameter
• x[2, 0]: arithmetic mean area diameter
• x[1, 1]: size-weighted mean area diameter
• x[2, 2]: area-weighted mean area diameter
• x[2, 3]: volume-weighted mean area diameter
• x[3, 0]: arithmetic mean volume diameter
• x[3, 1]: size-weighted mean volume diameter
• x[3, 2]: area-weighted mean volume diameter
• x[3, 3]: volume-weighted mean volume diameter
When working with continuous distributions, the ISO series must be used to perform the actual calcula-
tions.

References

[1]

2.16. Particle Size Distributions (fluids.particle_size_distribution) 331


Fluids Documentation, Release 0.1

Examples

>>> ds = 1E-6*np.array([240, 360, 450, 562.5, 703, 878, 1097, 1371, 1713,
˓→2141, 2676, 3345, 4181, 5226, 6532])

>>> numbers = [65, 119, 232, 410, 629, 849, 990, 981, 825, 579, 297, 111, 21,
˓→1]

>>> psd = ParticleSizeDistribution(ds=ds, fractions=numbers, order=0)


>>> psd.mean_size_ISO(1, 2)
0.002269321031745045

name = 'Discrete'
points = True
size_classes = False
truncated = False
vssa
The volume-specific surface area of a particle size distribution. Note this uses the diameters provided by
the method Dis.
∑︁ 𝑆𝐴𝑖
VSSA = fraction𝑖
𝑖
𝑉𝑖

VSSA [float] The volume-specific surface area of the distribution, [m^2/m^3]

References

[1]
class fluids.particle_size_distribution.PSDInterpolated(ds, fractions, order=3,
monotonic=True)
Bases: fluids.particle_size_distribution.ParticleSizeDistributionContinuous
Attributes
vssa The volume-specific surface area of a particle size distribution.

Methods

cdf(self, d[, n]) Computes the cumulative distribution density func-


tion of a continuous particle size distribution at a
specified particle diameter, an optionally in a spec-
ified basis.
cdf_discrete(self, ds[, n]) Computes the cumulative distribution functions for a
list of specified particle diameters.
delta_cdf(self, d_min, d_max[, n]) Computes the difference in cumulative distribution
function between two particle size diameters.
dn(self, fraction[, n]) Computes the diameter at which a specified fraction
of the distribution falls under.
ds_discrete(self[, d_min, d_max, pts, . . . ]) Create a particle spacing mesh to perform calcula-
tions with, according to one of several ways.
fractions_discrete(self, ds[, n]) Computes the fractions of the cumulative distribution
functions which lie between the specified specified
particle diameters.
Continued on next page

332 Chapter 2. API Reference


Fluids Documentation, Release 0.1

Table 7 – continued from previous page


mean_size(self, p, q) Calculates the mean particle size according to
moment-ratio notation.
mean_size_ISO(self, k, r) Calculates the mean particle size according to mo-
ment notation (ISO).
pdf(self, d[, n]) Computes the probability density function of a con-
tinuous particle size distribution at a specified parti-
cle diameter, an optionally in a specified basis.
plot_cdf(self[, n, d_min, d_max, pts, method]) Plot the cumulative distribution function of the parti-
cle size distribution.
plot_pdf(self[, n, d_min, d_max, pts, . . . ]) Plot the probability density function of the particle
size distribution.

name = 'Interpolated'
points = True
truncated = False

2.16.3 Statistical Particle Size Distributions

class fluids.particle_size_distribution.PSDLognormal(d_characteristic, s, order=3,


d_min=None, d_max=None)
Bases: fluids.particle_size_distribution.ParticleSizeDistributionContinuous
Attributes
vssa The volume-specific surface area of a particle size distribution.

Methods

cdf(self, d[, n]) Computes the cumulative distribution density func-


tion of a continuous particle size distribution at a
specified particle diameter, an optionally in a spec-
ified basis.
cdf_discrete(self, ds[, n]) Computes the cumulative distribution functions for a
list of specified particle diameters.
delta_cdf(self, d_min, d_max[, n]) Computes the difference in cumulative distribution
function between two particle size diameters.
dn(self, fraction[, n]) Computes the diameter at which a specified fraction
of the distribution falls under.
ds_discrete(self[, d_min, d_max, pts, . . . ]) Create a particle spacing mesh to perform calcula-
tions with, according to one of several ways.
fractions_discrete(self, ds[, n]) Computes the fractions of the cumulative distribution
functions which lie between the specified specified
particle diameters.
mean_size(self, p, q) Calculates the mean particle size according to
moment-ratio notation.
mean_size_ISO(self, k, r) Calculates the mean particle size according to mo-
ment notation (ISO).
Continued on next page

2.16. Particle Size Distributions (fluids.particle_size_distribution) 333


Fluids Documentation, Release 0.1

Table 8 – continued from previous page


pdf(self, d[, n]) Computes the probability density function of a con-
tinuous particle size distribution at a specified parti-
cle diameter, an optionally in a specified basis.
plot_cdf(self[, n, d_min, d_max, pts, method]) Plot the cumulative distribution function of the parti-
cle size distribution.
plot_pdf(self[, n, d_min, d_max, pts, . . . ]) Plot the probability density function of the particle
size distribution.

name = 'Lognormal'
points = False
truncated = False
class fluids.particle_size_distribution.PSDGatesGaudinSchuhman(d_characteristic,
m, order=3,
d_min=None,
d_max=None)
Bases: fluids.particle_size_distribution.ParticleSizeDistributionContinuous
Attributes
vssa The volume-specific surface area of a particle size distribution.

Methods

cdf(self, d[, n]) Computes the cumulative distribution density func-


tion of a continuous particle size distribution at a
specified particle diameter, an optionally in a spec-
ified basis.
cdf_discrete(self, ds[, n]) Computes the cumulative distribution functions for a
list of specified particle diameters.
delta_cdf(self, d_min, d_max[, n]) Computes the difference in cumulative distribution
function between two particle size diameters.
dn(self, fraction[, n]) Computes the diameter at which a specified fraction
of the distribution falls under.
ds_discrete(self[, d_min, d_max, pts, . . . ]) Create a particle spacing mesh to perform calcula-
tions with, according to one of several ways.
fractions_discrete(self, ds[, n]) Computes the fractions of the cumulative distribution
functions which lie between the specified specified
particle diameters.
mean_size(self, p, q) Calculates the mean particle size according to
moment-ratio notation.
mean_size_ISO(self, k, r) Calculates the mean particle size according to mo-
ment notation (ISO).
pdf(self, d[, n]) Computes the probability density function of a con-
tinuous particle size distribution at a specified parti-
cle diameter, an optionally in a specified basis.
plot_cdf(self[, n, d_min, d_max, pts, method]) Plot the cumulative distribution function of the parti-
cle size distribution.
plot_pdf(self[, n, d_min, d_max, pts, . . . ]) Plot the probability density function of the particle
size distribution.

334 Chapter 2. API Reference


Fluids Documentation, Release 0.1

name = 'Gates Gaudin Schuhman'


points = False
truncated = False
class fluids.particle_size_distribution.PSDRosinRammler(k, m, order=3,
d_min=None,
d_max=None)
Bases: fluids.particle_size_distribution.ParticleSizeDistributionContinuous
Attributes
vssa The volume-specific surface area of a particle size distribution.

Methods

cdf(self, d[, n]) Computes the cumulative distribution density func-


tion of a continuous particle size distribution at a
specified particle diameter, an optionally in a spec-
ified basis.
cdf_discrete(self, ds[, n]) Computes the cumulative distribution functions for a
list of specified particle diameters.
delta_cdf(self, d_min, d_max[, n]) Computes the difference in cumulative distribution
function between two particle size diameters.
dn(self, fraction[, n]) Computes the diameter at which a specified fraction
of the distribution falls under.
ds_discrete(self[, d_min, d_max, pts, . . . ]) Create a particle spacing mesh to perform calcula-
tions with, according to one of several ways.
fractions_discrete(self, ds[, n]) Computes the fractions of the cumulative distribution
functions which lie between the specified specified
particle diameters.
mean_size(self, p, q) Calculates the mean particle size according to
moment-ratio notation.
mean_size_ISO(self, k, r) Calculates the mean particle size according to mo-
ment notation (ISO).
pdf(self, d[, n]) Computes the probability density function of a con-
tinuous particle size distribution at a specified parti-
cle diameter, an optionally in a specified basis.
plot_cdf(self[, n, d_min, d_max, pts, method]) Plot the cumulative distribution function of the parti-
cle size distribution.
plot_pdf(self[, n, d_min, d_max, pts, . . . ]) Plot the probability density function of the particle
size distribution.

name = 'Rosin Rammler'


points = False
truncated = False
class fluids.particle_size_distribution.PSDCustom(distribution, order=3.0,
d_excessive=1.0, name=None,
d_min=None, d_max=None)
Bases: fluids.particle_size_distribution.ParticleSizeDistributionContinuous
Attributes

2.16. Particle Size Distributions (fluids.particle_size_distribution) 335


Fluids Documentation, Release 0.1

vssa The volume-specific surface area of a particle size distribution.

Methods

cdf(self, d[, n]) Computes the cumulative distribution density func-


tion of a continuous particle size distribution at a
specified particle diameter, an optionally in a spec-
ified basis.
cdf_discrete(self, ds[, n]) Computes the cumulative distribution functions for a
list of specified particle diameters.
delta_cdf(self, d_min, d_max[, n]) Computes the difference in cumulative distribution
function between two particle size diameters.
dn(self, fraction[, n]) Computes the diameter at which a specified fraction
of the distribution falls under.
ds_discrete(self[, d_min, d_max, pts, . . . ]) Create a particle spacing mesh to perform calcula-
tions with, according to one of several ways.
fractions_discrete(self, ds[, n]) Computes the fractions of the cumulative distribution
functions which lie between the specified specified
particle diameters.
mean_size(self, p, q) Calculates the mean particle size according to
moment-ratio notation.
mean_size_ISO(self, k, r) Calculates the mean particle size according to mo-
ment notation (ISO).
pdf(self, d[, n]) Computes the probability density function of a con-
tinuous particle size distribution at a specified parti-
cle diameter, an optionally in a specified basis.
plot_cdf(self[, n, d_min, d_max, pts, method]) Plot the cumulative distribution function of the parti-
cle size distribution.
plot_pdf(self[, n, d_min, d_max, pts, . . . ]) Plot the probability density function of the particle
size distribution.

name = ''
points = False
truncated = False

2.16.4 Helper functions: Lognormal Distribution

fluids.particle_size_distribution.pdf_lognormal(d, d_characteristic, s)
Calculates the probability density function of a lognormal particle distribution given a particle diameter d, char-
acteristic particle diameter d_characteristic, and distribution standard deviation s.
[︃ (︂ )︂2 ]︃
1 ln(𝑑/𝑑𝑐ℎ𝑎𝑟𝑎𝑐𝑡𝑒𝑟𝑖𝑠𝑡𝑖𝑐 )
𝑞(𝑑) = √ exp −0.5
𝑑𝑠 2𝜋 𝑠

Parameters
d [float] Specified particle diameter, [m]
d_characteristic [float] Characteristic particle diameter; often D[3, 3] is used for this purpose
but not always, [m]
s [float] Distribution standard deviation, [-]

336 Chapter 2. API Reference


Fluids Documentation, Release 0.1

Returns
pdf [float] Lognormal probability density function, [-]

Notes

The characteristic diameter can be in terns of number density (denoted 𝑞0 (𝑑)), length density (𝑞1 (𝑑)), surface
area density (𝑞2 (𝑑)), or volume density (𝑞3 (𝑑)). Volume density is most often used. Interconversions among the
distributions is possible but tricky.
The standard distribution (i.e. the one used in Scipy) can perform the same computation with d_characteristic
as the value of scale.
>>> import scipy.stats
>>> scipy.stats.lognorm.pdf(x=1E-4, s=1.1, scale=1E-5)
405.5420921156425

Scipy’s calculation is over 300 times slower however, and this expression is numerically integrated so speed is
required.

References

[1]

Examples

>>> pdf_lognormal(d=1E-4, d_characteristic=1E-5, s=1.1)


405.5420921156425

fluids.particle_size_distribution.cdf_lognormal(d, d_characteristic, s)
Calculates the cumulative distribution function of a lognormal particle distribution given a particle diameter d,
characteristic particle diameter d_characteristic, and distribution standard deviation s.
(︂ [︂(︂ )︂]︂)︂
ln(𝑑/𝑑𝑐 )
𝑄(𝑑) = 0.5 1 + err √
𝑠 2
Parameters
d [float] Specified particle diameter, [m]
d_characteristic [float] Characteristic particle diameter; often D[3, 3] is used for this purpose
but not always, [m]
s [float] Distribution standard deviation, [-]
Returns
cdf [float] Lognormal cumulative density function, [-]

Notes

The characteristic diameter can be in terns of number density (denoted 𝑞0 (𝑑)), length density (𝑞1 (𝑑)), surface
area density (𝑞2 (𝑑)), or volume density (𝑞3 (𝑑)). Volume density is most often used. Interconversions among the
distributions is possible but tricky.
The standard distribution (i.e. the one used in Scipy) can perform the same computation with d_characteristic
as the value of scale.

2.16. Particle Size Distributions (fluids.particle_size_distribution) 337


Fluids Documentation, Release 0.1

>>> import scipy.stats


>>> scipy.stats.lognorm.cdf(x=1E-4, s=1.1, scale=1E-5)
0.9818369875798177

Scipy’s calculation is over 100 times slower however.

References

[1]

Examples

>>> cdf_lognormal(d=1E-4, d_characteristic=1E-5, s=1.1)


0.9818369875798176

fluids.particle_size_distribution.pdf_lognormal_basis_integral(d,
d_characteristic,
s, n)
Calculates the integral of the multiplication of d^n by the lognormal pdf, given a particle diameter d, character-
istic particle diameter d_characteristic, distribution standard deviation s, and exponent n.
)︂−𝑛
𝑠2 𝑛2 𝑠2 𝑛 − log(𝑑/𝑑𝑐ℎ𝑎𝑟𝑎𝑐𝑡𝑒𝑟𝑖𝑠𝑡𝑖𝑐 )
∫︁ (︂ )︂ (︂ [︂ ]︂
1 𝑑
𝑑𝑛 · 𝑞(𝑑) 𝑑𝑑 = − exp 𝑑𝑛 erf √
2 2 𝑑𝑐ℎ𝑎𝑟𝑎𝑐𝑡𝑒𝑟𝑖𝑠𝑡𝑖𝑐 2𝑠
This is the crucial integral required for interconversion between different bases such as number density (denoted
𝑞0 (𝑑)), length density (𝑞1 (𝑑)), surface area density (𝑞2 (𝑑)), or volume density (𝑞3 (𝑑)).
Parameters
d [float] Specified particle diameter, [m]
d_characteristic [float] Characteristic particle diameter; often D[3, 3] is used for this purpose
but not always, [m]
s [float] Distribution standard deviation, [-]
n [int] Exponent of the multiplied n
Returns
pdf_basis_integral [float] Integral of lognormal pdf multiplied by d^n, [-]

Notes

This integral has been verified numerically. This integral is itself integrated, so it is crucial to obtain an analytical
form for at least this integral.
Note overflow or zero division issues may occur for very large values of s, larger than 10. No mathematical limit
was able to be obtained with a CAS.

Examples

>>> pdf_lognormal_basis_integral(d=1E-4, d_characteristic=1E-5, s=1.1, n=-2)


56228306549.26362

338 Chapter 2. API Reference


Fluids Documentation, Release 0.1

2.16.5 Helper functions: Gates Gaudin Schuhman Distribution

fluids.particle_size_distribution.pdf_Gates_Gaudin_Schuhman(d, d_characteristic,
m)
Calculates the probability density of a particle distribution following the Gates, Gaudin and Schuhman (GGS)
model given a particle diameter d, characteristic (maximum) particle diameter d_characteristic, and exponent
m.
(︂ )︂𝑚
𝑛 𝑑
𝑞(𝑑) = if 𝑑 < 𝑑𝑐ℎ𝑎𝑟𝑎𝑐𝑡𝑒𝑟𝑖𝑠𝑡𝑖𝑐 else 0
𝑑 𝑑𝑐ℎ𝑎𝑟𝑎𝑐𝑡𝑒𝑟𝑖𝑠𝑡𝑖𝑐
Parameters
d [float] Specified particle diameter, [m]
d_characteristic [float] Characteristic particle diameter; in this model, it is the largest particle
size diameter in the distribution, [m]
m [float] Particle size distribution exponent, [-]
Returns
pdf [float] GGS probability density function, [-]

Notes

The characteristic diameter can be in terns of number density (denoted 𝑞0 (𝑑)), length density (𝑞1 (𝑑)), surface
area density (𝑞2 (𝑑)), or volume density (𝑞3 (𝑑)). Volume density is most often used. Interconversions among the
distributions is possible but tricky.

References

[1], [2]

Examples

>>> pdf_Gates_Gaudin_Schuhman(d=2E-4, d_characteristic=1E-3, m=2.3)


283.8355768512045

fluids.particle_size_distribution.cdf_Gates_Gaudin_Schuhman(d, d_characteristic,
m)
Calculates the cumulative distribution function of a particle distribution following the Gates, Gaudin and Schuh-
man (GGS) model given a particle diameter d, characteristic (maximum) particle diameter d_characteristic, and
exponent m.
(︂ )︂𝑚
𝑑
𝑄(𝑑) = if 𝑑 < 𝑑𝑐ℎ𝑎𝑟𝑎𝑐𝑡𝑒𝑟𝑖𝑠𝑡𝑖𝑐 else 1
𝑑𝑐ℎ𝑎𝑟𝑎𝑐𝑡𝑒𝑟𝑖𝑠𝑡𝑖𝑐
Parameters
d [float] Specified particle diameter, [m]
d_characteristic [float] Characteristic particle diameter; in this model, it is the largest particle
size diameter in the distribution, [m]
m [float] Particle size distribution exponent, [-]
Returns
cdf [float] GGS cumulative density function, [-]

2.16. Particle Size Distributions (fluids.particle_size_distribution) 339


Fluids Documentation, Release 0.1

Notes

The characteristic diameter can be in terns of number density (denoted 𝑞0 (𝑑)), length density (𝑞1 (𝑑)), surface
area density (𝑞2 (𝑑)), or volume density (𝑞3 (𝑑)). Volume density is most often used. Interconversions among the
distributions is possible but tricky.

References

[1], [2]

Examples

>>> cdf_Gates_Gaudin_Schuhman(d=2E-4, d_characteristic=1E-3, m=2.3)


0.024681354508800397

fluids.particle_size_distribution.pdf_Gates_Gaudin_Schuhman_basis_integral(d,
d_characteristic,
m,
n)
Calculates the integral of the multiplication of d^n by the Gates, Gaudin and Schuhman (GGS) model given a
particle diameter d, characteristic (maximum) particle diameter d_characteristic, and exponent m.
∫︁ (︂ )︂𝑚
𝑛 𝑚 𝑛 𝑑
𝑑 · 𝑞(𝑑) 𝑑𝑑 = 𝑑
𝑚+𝑛 𝑑𝑐ℎ𝑎𝑟𝑎𝑐𝑡𝑒𝑟𝑖𝑠𝑡𝑖𝑐

Parameters
d [float] Specified particle diameter, [m]
d_characteristic [float] Characteristic particle diameter; in this model, it is the largest particle
size diameter in the distribution, [m]
m [float] Particle size distribution exponent, [-]
n [int] Exponent of the multiplied n, [-]
Returns
pdf_basis_integral [float] Integral of Rosin Rammler pdf multiplied by d^n, [-]

Notes

This integral does not have any numerical issues as d approaches 0.

Examples

>>> pdf_Gates_Gaudin_Schuhman_basis_integral(d=2E-4, d_characteristic=1E-3, m=2.3,


˓→ n=-3)

-10136984887.543015

340 Chapter 2. API Reference


Fluids Documentation, Release 0.1

2.16.6 Helper functions: Rosin Rammler Distribution

fluids.particle_size_distribution.pdf_Rosin_Rammler(d, k, m)
Calculates the probability density of a particle distribution following the Rosin-Rammler (RR) model given a
particle diameter d, and the two parameters k and m.

𝑞(𝑑) = 𝑘𝑚𝑑(𝑚−1) exp(−𝑘𝑑𝑚 )

Parameters
d [float] Specified particle diameter, [m]
k [float] Parameter in the model, [(1/m)^m]
m [float] Parameter in the model, [-]
Returns
pdf [float] RR probability density function, [-]

References

[1], [2]

Examples

>>> pdf_Rosin_Rammler(1E-3, 200, 2)


0.3999200079994667

fluids.particle_size_distribution.cdf_Rosin_Rammler(d, k, m)
Calculates the cumulative distribution function of a particle distribution following the Rosin-Rammler (RR)
model given a particle diameter d, and the two parameters k and m.

𝑄(𝑑) = 1 − exp (−𝑘𝑑𝑚 )

Parameters
d [float] Specified particle diameter, [m]
k [float] Parameter in the model, [(1/m)^m]
m [float] Parameter in the model, [-]
Returns
cdf [float] RR cumulative density function, [-]

Notes

The characteristic diameter can be in terns of number density (denoted 𝑞0 (𝑑)), length density (𝑞1 (𝑑)), surface
area density (𝑞2 (𝑑)), or volume density (𝑞3 (𝑑)). Volume density is most often used. Interconversions among the
distributions is possible but tricky.

References

[1], [2]

2.16. Particle Size Distributions (fluids.particle_size_distribution) 341


Fluids Documentation, Release 0.1

Examples

>>> cdf_Rosin_Rammler(5E-2, 200, 2)


0.3934693402873667

fluids.particle_size_distribution.pdf_Rosin_Rammler_basis_integral(d, k, m, n)
Calculates the integral of the multiplication of d^n by the Rosin Rammler (RR) pdf, given a particle diameter d,
and the two parameters k and m.
∫︁ (︂ )︂ [︂(︂ )︂ ]︂
𝑚+𝑛 𝑚+𝑛 𝑚+𝑛
𝑑𝑛 · 𝑞(𝑑) 𝑑𝑑 = −𝑑𝑚+𝑛 𝑘(𝑑𝑚 𝑘)− 𝑚 Γ gammaincc , 𝑘𝑑𝑚
𝑚 𝑚

Parameters
d [float] Specified particle diameter, [m]
k [float] Parameter in the model, [(1/m)^m]
m [float] Parameter in the model, [-]
n [int] Exponent of the multiplied n, [-]
Returns
pdf_basis_integral [float] Integral of Rosin Rammler pdf multiplied by d^n, [-]

Notes

This integral was derived using a CAS, and verified numerically. The gammaincc function is that from
scipy.special, and gamma from the same.
For very high powers of n or m when the diameter is very low, exceptions may occur.

Examples

>>> "{:g}".format(pdf_Rosin_Rammler_basis_integral(5E-2, 200, 2, 3))


'-0.000452399'

2.16.7 Sieves

class fluids.particle_size_distribution.Sieve(designation, old_designation=None,


opening=None, opening_inch=None,
Y_variation_avg=None,
X_variation_max=None,
max_opening=None, compli-
ance_samples=None, com-
pliance_sd=None, inspec-
tion_samples=None, in-
spection_sd=None, calibra-
tion_samples=None, calibra-
tion_sd=None, d_wire=None,
d_wire_min=None, d_wire_max=None)
Bases: object
Class for storing data on sieves. If a property is not available, it is set to None.

342 Chapter 2. API Reference


Fluids Documentation, Release 0.1

Attributes
designation [str] The standard name of the sieve - its opening’s length in units of millimeters
old_designation [str] The older, imperial-esque name of the sieve; in Numbers, or inches for
large sieves
opening [float] The opening length of the sieve holes, [m]
opening_inch [float] The opening length of the sieve holes in the rounded inches as stated in
common tables (not exactly equal to the opening), [inch]
Y_variation_avg [float] The allowable average variation in the Y direction of the sieve open-
ings, [m]
X_variation_max [float] The allowable maximum variation in the X direction of the sieve
openings, [m]
max_opening [float] The maximum allowable opening of the sieve, [m]
calibration_samples [float] The number of opening sample inspections required for calibra-
tion- type sieve openings (per 100 ft^2 of sieve material), [1/(ft^2)]
compliance_sd [float] The maximum standard deviation of compliance-type sieve openings, [-]
inspection_samples [float] The number of opening sample inspections required for inspection-
type sieve openings (based on an 8-inch sieve), [-]
inspection_sd [float] The maximum standard deviation of inspection-type sieve openings, [-]
calibration_samples [float] The number of opening sample inspections required for calibra-
tion- type sieve openings (based on an 8-inch sieve), [-]
calibration_sd [float] The maximum standard deviation of calibration-type sieve openings, [-]
d_wire [float] Typical wire diameter of the specified sieve size, [m]
d_wire_min [float] Permissible minimum wire diameter of specified sieve size, [m]
d_wire_max [float] Permissible maximum wire diameter of specified sieve size, [m]
fluids.particle_size_distribution.ASTM_E11_sieves = {'0.02': <Sieve, designation 0.02 mm,
Dictionary containing ASTM E-11 sieve series Sieve objects, indexed by their size in mm as a string.

References

[1]
fluids.particle_size_distribution.ISO_3310_1_sieves = {'0.02': <Sieve, designation 0.02 mm
Dictionary containing all of the individual Sieve objects, on the ISO 3310-1:2016 series, indexed by their size
in mm as a string.

References

[1]
fluids.particle_size_distribution.ISO_3310_1_R20 = [<Sieve, designation 125 mm, opening 0.1
List containing all of the individual Sieve objects, on the ISO 3310-1:2016 R20 series only, ordered from
largest openings to smallest.

2.16. Particle Size Distributions (fluids.particle_size_distribution) 343


Fluids Documentation, Release 0.1

References

[1]
fluids.particle_size_distribution.ISO_3310_1_R20_3 = [<Sieve, designation 125 mm, opening 0
List containing all of the individual Sieve objects, on the ISO 3310-1:2016 R20/3 series only, ordered from
largest openings to smallest.

References

[1]
fluids.particle_size_distribution.ISO_3310_1_R40_3 = [<Sieve, designation 125 mm, opening 0
List containing all of the individual Sieve objects, on the ISO 3310-1:2016 R40/3 series only, ordered from
largest openings to smallest.

References

[1]
fluids.particle_size_distribution.ISO_3310_1_R10 = [<Sieve, designation 0.036 mm, opening 3
List containing all of the individual Sieve objects, on the ISO 3310-1:2016 R10 series only, ordered from
largest openings to smallest.

References

[1]

2.16.8 Point Spacing

fluids.particle_size_distribution.psd_spacing(d_min=None, d_max=None, pts=20,


method=’logarithmic’)
Create a particle spacing mesh in one of several ways for use in modeling discrete particle size distributions. The
allowable meshes are ‘linear’, ‘logarithmic’, a geometric series specified by a Renard number such as ‘R10’, or
the meshes available in one of several sieve standards.
Parameters
d_min [float, optional] The minimum diameter at which the mesh starts, [m]
d_max [float, optional] The maximum diameter at which the mesh ends, [m]
pts [int, optional] The number of points to return for the mesh (note this is not respected by
sieve meshes), [-]
method [str, optional] Either ‘linear’, ‘logarithmic’, a Renard number like ‘R10’ or ‘R5’ or
‘R2.5’, or one of the sieve standards ‘ISO 3310-1 R40/3’, ‘ISO 3310-1 R20’, ‘ISO 3310-1
R20/3’, ‘ISO 3310-1’, ‘ISO 3310-1 R10’, ‘ASTM E11’, [-]
Returns
ds [list[float]] The generated mesh diameters, [m]

344 Chapter 2. API Reference


Fluids Documentation, Release 0.1

Notes

Note that when specifying a Renard series, only one of d_min or d_max can be respected! Provide only one of
those numbers.
Note that when specifying a sieve standard the number of points is not respected!

References

[1], [2]

Examples

>>> psd_spacing(d_min=5e-5, d_max=5e-4, method='ISO 3310-1 R20/3')


[6.3e-05, 9e-05, 0.000125, 0.00018, 0.00025, 0.000355, 0.0005]

2.17 Pipe schedules (fluids.piping)

fluids.piping.nearest_pipe(Do=None, Di=None, NPS=None, schedule=’40’)


Searches for and finds the nearest standard pipe size to a given specification. Acceptable inputs are:
• Nominal pipe size
• Nominal pipe size and schedule
• Outer diameter Do
• Outer diameter Do and schedule
• Inner diameter Di
• Inner diameter Di and schedule
Acceptable schedules are: ‘5’, ‘10’, ‘20’, ‘30’, ‘40’, ‘60’, ‘80’, ‘100’, ‘120’, ‘140’, ‘160’, ‘STD’, ‘XS’, ‘XXS’,
‘5S’, ‘10S’, ‘40S’, ‘80S’.
Parameters
Do [float] Pipe outer diameter, [m]
Di [float] Pipe inner diameter, [m]
NPS [float] Nominal pipe size, [-]
schedule [str] String representing schedule size
Returns
NPS [float] Nominal pipe size, [-]
Di [float] Pipe inner diameter, [m]
Do [float] Pipe outer diameter, [m]
t [float] Pipe wall thickness, [m]

2.17. Pipe schedules (fluids.piping) 345


Fluids Documentation, Release 0.1

Notes

Internal units within this function are mm. The imperial schedules are not quite identical to these value, but all
rounding differences happen in the sub-0.1 mm level.

References

[1], [2]

Examples

>>> nearest_pipe(Di=0.021)
(1, 0.02664, 0.0334, 0.0033799999999999998)
>>> nearest_pipe(Do=.273, schedule='5S')
(10, 0.26630000000000004, 0.2731, 0.0034)

fluids.piping.gauge_from_t(t, SI=True, schedule=’BWG’)


Looks up the gauge of a given wire thickness of given schedule. Values are all non-linear, and tabulated inter-
nally.
Parameters
t [float] Thickness, [m]
SI [bool, optional] If False, requires that the thickness is given in inches not meters
schedule [str] Gauge schedule, one of ‘BWG’, ‘AWG’, ‘SWG’, ‘MWG’, ‘BSWG’, or ‘SSWG’
Returns
gauge [float-like] Wire Gauge, [-]

Notes

An internal variable, tol, is used in the selection of the wire gauge. If the next smaller wire gauge is within 10%
of the difference between it and the previous wire gauge, the smaller wire gauge is selected. Accordingly, this
function can return a gauge with a thickness smaller than desired in some circumstances.
• Birmingham Wire Gauge (BWG) ranges from 0.2 (0.5 inch) to 36 (0.004 inch).
• American Wire Gauge (AWG) ranges from 0.167 (0.58 inch) to 51 (0.00099 inch). These are used for
electrical wires.
• Steel Wire Gauge (SWG) ranges from 0.143 (0.49 inch) to 51 (0.0044 inch). Also called Washburn &
Moen wire gauge, American Steel gauge, Wire Co. gauge, and Roebling wire gauge.
• Music Wire Gauge (MWG) ranges from 0.167 (0.004 inch) to 46 (0.18 inch). Also called Piano Wire
Gauge.
• British Standard Wire Gage (BSWG) ranges from 0.143 (0.5 inch) to 51 (0.001 inch). Also called Imperial
Wire Gage (IWG).
• Stub’s Steel Wire Gage (SSWG) ranges from 1 (0.227 inch) to 80 (0.013 inch)

References

[1]

346 Chapter 2. API Reference


Fluids Documentation, Release 0.1

Examples

>>> gauge_from_t(.5, SI=False, schedule='BWG')


0.2

fluids.piping.t_from_gauge(gauge, SI=True, schedule=’BWG’)


Looks up the thickness of a given wire gauge of given schedule. Values are all non-linear, and tabulated inter-
nally.
Parameters
gauge [float-like] Wire Gauge, []
SI [bool, optional] If False, will return a thickness in inches not meters
schedule [str] Gauge schedule, one of ‘BWG’, ‘AWG’, ‘SWG’, ‘MWG’, ‘BSWG’, or ‘SSWG’
Returns
t [float] Thickness, [m]

Notes

• Birmingham Wire Gauge (BWG) ranges from 0.2 (0.5 inch) to 36 (0.004 inch).
• American Wire Gauge (AWG) ranges from 0.167 (0.58 inch) to 51 (0.00099 inch). These are used for
electrical wires.
• Steel Wire Gauge (SWG) ranges from 0.143 (0.49 inch) to 51 (0.0044 inch). Also called Washburn &
Moen wire gauge, American Steel gauge, Wire Co. gauge, and Roebling wire gauge.
• Music Wire Gauge (MWG) ranges from 0.167 (0.004 inch) to 46 (0.18 inch). Also called Piano Wire
Gauge.
• British Standard Wire Gage (BSWG) ranges from 0.143 (0.5 inch) to 51 (0.001 inch). Also called Imperial
Wire Gage (IWG).
• Stub’s Steel Wire Gage (SSWG) ranges from 1 (0.227 inch) to 80 (0.013 inch)

References

[1]

Examples

>>> t_from_gauge(.2, False, 'BWG')


0.5

2.18 Pump and motor sizing (fluids.pump)

fluids.pump.VFD_efficiency(P, load=1)
Returns the efficiency of a Variable Frequency Drive according to [1]. These values are generic, and not stan-
dardized as minimum values. Older VFDs often have much worse performance.
Parameters

2.18. Pump and motor sizing (fluids.pump) 347


Fluids Documentation, Release 0.1

P [float] Power, [W]


load [float, optional] Fraction of motor’s rated electrical capacity being used
Returns
efficiency [float] VFD efficiency, [-]

Notes

The use of a VFD does change the characteristics of a pump curve’s efficiency, but this has yet to be quantified.
The effect is small. This value should be multiplied by the product of the pump and motor efficiency to determine
the overall efficiency.
Efficiency table is in units of hp, so a conversion is performed internally. If load not specified, assumed 1 -
where maximum efficiency occurs. Table extends down to 3 hp and up to 400 hp; values outside these limits are
rounded to the nearest known value. Values between standardized sizes are interpolated linearly. Load values
extend down to 0.016.
The table used is for Pulse Width Modulation (PWM) VFDs.

References

[1]

Examples

>>> VFD_efficiency(10*hp)
0.96
>>> VFD_efficiency(100*hp, load=0.2)
0.92

fluids.pump.CSA_motor_efficiency(P, closed=False, poles=2, high_efficiency=False)


Returns the efficiency of a NEMA motor according to [1]. These values are standards, but are only for full-load
operation.
Parameters
P [float] Power, [W]
closed [bool, optional] Whether or not the motor is enclosed
poles [int, optional] The number of poles of the motor
high_efficiency [bool, optional] Whether or not to look up the high-efficiency value
Returns
efficiency [float] Guaranteed full-load motor efficiency, [-]

Notes

Criteria for being required to meet the high-efficiency standard is:


• Designed for continuous operation
• Operates by three-phase induction
• Is a squirrel-cage or cage design

348 Chapter 2. API Reference


Fluids Documentation, Release 0.1

• Is NEMA type A, B, or C with T or U frame; or IEC design N or H


• Is designed for single-speed operation
• Has a nominal voltage of less than 600 V AC
• Has a nominal frequency of 60 Hz or 50/60 Hz
• Has 2, 4, or 6 pole construction
• Is either open or closed
Pretty much every motor is required to meet the low-standard efficiency table, however.
Several low-efficiency standard high power values were added to allow for easy programming; values are the
last listed efficiency in the table.

References

[1]

Examples

>>> CSA_motor_efficiency(100*hp)
0.93
>>> CSA_motor_efficiency(100*hp, closed=True, poles=6, high_efficiency=True)
0.95

fluids.pump.motor_efficiency_underloaded(P, load=0.5)
Returns the efficiency of a motor operating under its design power according to [1].These values are generic;
manufacturers usually list 4 points on their product information, but full-scale data is hard to find and not
regulated.
Parameters
P [float] Power, [W]
load [float, optional] Fraction of motor’s rated electrical capacity being used
Returns
efficiency [float] Motor efficiency, [-]

Notes

If the efficiency returned by this function is unattractive, use a VFD. The curves used here are polynomial fits to
[1]’s graph, and curves were available for the following motor power ranges: 0-1 hp, 1.5-5 hp, 10 hp, 15-25 hp,
30-60 hp, 75-100 hp If above the upper limit of one range, the next value is returned.

References

[1]

2.18. Pump and motor sizing (fluids.pump) 349


Fluids Documentation, Release 0.1

Examples

>>> motor_efficiency_underloaded(1*hp)
0.8705179600980149
>>> motor_efficiency_underloaded(10.1*hp, .1)
0.6728425932357025

fluids.pump.Corripio_pump_efficiency(Q)
Estimates pump efficiency using the method in Corripio (1982) as shown in [1] and originally in [2]. Estimation
only

𝜂𝑃 = −0.316 + 0.24015 ln(𝑄) − 0.01199 ln(𝑄)2

Parameters
Q [float] Volumetric flow rate, [m^3/s]
Returns
efficiency [float] Pump efficiency, [-]

Notes

For Centrifugal pumps only. Range is 50 to 5000 GPM, but input variable is in metric. Values above this range
and below this range will go negative, although small deviations are acceptable. Example 16.5 in [1].

References

[1], [2]

Examples

>>> Corripio_pump_efficiency(461./15850.323)
0.705888867095162

fluids.pump.Corripio_motor_efficiency(P)
Estimates motor efficiency using the method in Corripio (1982) as shown in [1] and originally in [2]. Estimation
only.

𝜂𝑀 = 0.8 + 0.0319 ln(𝑃𝐵 ) − 0.00182 ln(𝑃𝐵 )2

Parameters
P [float] Power, [W]
Returns
efficiency [float] Motor efficiency, [-]

Notes

Example 16.5 in [1].

350 Chapter 2. API Reference


Fluids Documentation, Release 0.1

References

[1], [2]

Examples

>>> Corripio_motor_efficiency(137*745.7)
0.9128920875679222

fluids.pump.specific_speed(Q, H, n=3600.0)
Returns the specific speed of a pump operating at a specified Q, H, and n.

𝑛 𝑄
𝑛𝑆 = 0.75
𝐻
Parameters
Q [float] Flow rate, [m^3/s]
H [float] Head generated by the pump, [m]
n [float, optional] Speed of pump [rpm]
Returns
nS [float] Specific Speed, [rpm*m^0.75/s^0.5]

Notes

Defined at the BEP, with maximum fitting diameter impeller, at a given rotational speed.

References

[1]

Examples

Example from [1].


>>> specific_speed(0.0402, 100, 3550)
22.50823182748925

fluids.pump.specific_diameter(Q, H, D)
Returns the specific diameter of a pump operating at a specified Q, H, and D.
𝐷𝐻 1/4
𝐷𝑠 = √
𝑄
Parameters
Q [float] Flow rate, [m^3/s]
H [float] Head generated by the pump, [m]
D [float] Pump impeller diameter [m]
Returns
Ds [float] Specific diameter, [m^0.25/s^0.5]

2.18. Pump and motor sizing (fluids.pump) 351


Fluids Documentation, Release 0.1

Notes

Used in certain pump sizing calculations.

References

[1]

Examples

>>> specific_diameter(Q=0.1, H=10., D=0.1)


0.5623413251903491

fluids.pump.speed_synchronous(f, poles=2, phase=3)


Returns the synchronous speed of a synchronous motor according to [1].
120𝑓 · phase
𝑁𝑠 =
poles
Parameters
f [float] Line frequency, [Hz]
poles [int, optional] The number of poles of the motor
phase [int, optional] Line AC phase
Returns
Ns [float] Speed of synchronous motor, [rpm]

Notes

Synchronous motors have no slip. Large synchronous motors are not self-starting.

References

[1]

Examples

>>> speed_synchronous(50, poles=12)


1500.0
>>> speed_synchronous(60, phase=1)
3600.0

fluids.pump.nema_sizes = [186.42496789556753, 248.5666238607567, 372.84993579113507, 559.27


list: all NEMA motor sizes in increasing order, in Watts.
fluids.pump.nema_sizes_hp = [0.25, 0.3333333333333333, 0.5, 0.75, 1.0, 1.5, 2.0, 3.0, 4.0,
list: all NEMA motor sizes in increasing order, in horsepower.
fluids.pump.motor_round_size(P)
Rounds up the power for a motor to the nearest NEMA standard power. The returned power is always larger or
equal to the input power.

352 Chapter 2. API Reference


Fluids Documentation, Release 0.1

Parameters
P [float] Power, [W]
Returns
P_actual [float] Actual power, equal to or larger than input [W]

Notes

An exception is raised if the power required is larger than any of the NEMA sizes. Larger motors are available,
but are unstandardized.

References

[1]

Examples

>>> motor_round_size(1E5)
111854.98073734052

fluids.pump.current_ideal(P, V, phase=3, PF=1)


Returns the current drawn by a motor of power P operating at voltage V, with line AC of phase phase and power
factor PF according to [1].
Single-phase power:
𝑃
𝐼=
𝑉 · PF
3-phase power:
𝑃
𝐼= √
𝑉 · PF 3
Parameters
P [float] Power, [W]
V [float] Voltage, [V]
phase [int, optional] Line AC phase, either 1 or 3
PF [float, optional] Power factor of motor
Returns
I [float] Power drawn by motor, [A]

Notes

Does not include power used by the motor’s fan, or startor, or internal losses. These are all significant.

References

[1]

2.18. Pump and motor sizing (fluids.pump) 353


Fluids Documentation, Release 0.1

Examples

>>> current_ideal(V=120, P=1E4, PF=1, phase=1)


83.33333333333333

2.19 Safety/relief valve sizing (fluids.safety_valve)

fluids.safety_valve.API520_round_size(A)
Rounds up the area from an API 520 calculation to an API526 standard valve area. The returned area is always
larger or equal to the input area.
Parameters
A [float] Minimum discharge area [m^2]
Returns
area [float] Actual discharge area [m^2]

Notes

To obtain the letter designation of an input area, lookup the area with the following:
API526_letters[API526_A.index(area)]
An exception is raised if the required relief area is larger than any of the API 526 sizes.

References

[1]

Examples

From [1], checked with many points on Table 8.

>>> API520_round_size(1E-4)
0.00012645136
>>> API526_letters[API526_A.index(API520_round_size(1E-4))]
'E'

fluids.safety_valve.API520_C(k)
Calculates coefficient C for use in API 520 critical flow relief valve sizing.
√︃ 𝑘+1
(︂ )︂ 𝑘−1
2
𝐶 = 0.03948 𝑘
𝑘+1

Parameters
k [float] Isentropic coefficient or ideal gas heat capacity ratio [-]
Returns
C [float] Coefficient C [-]

354 Chapter 2. API Reference


Fluids Documentation, Release 0.1

Notes

If C cannot be established, assume a coefficient of 0.0239, the highest value possible for C.
Although not dimensional, C varies with the units used.
If k is exactly equal to 1, the expression is undefined, and the formula must be simplified as follows from an
application of L’Hopital’s rule.
√︂
1
𝐶 = 0.03948
𝑒

References

[1]

Examples

From [1], checked with many points on Table 8.

>>> API520_C(1.35)
0.02669419967057233

fluids.safety_valve.API520_F2(k, P1, P2)


Calculates coefficient F2 for subcritical flow for use in API 520 subcritical flow relief valve sizing.

⎸(︂ )︂ [︃ 𝑘−1
]︃
⎸ 𝑘 2 1 − 𝑟 𝑘
𝐹2 = ⎷ 𝑟𝑘
𝑘−1 1−𝑟

𝑃2
𝑟=
𝑃1
Parameters
k [float] Isentropic coefficient or ideal gas heat capacity ratio [-]
P1 [float] Upstream relieving pressure; the set pressure plus the allowable overpressure, plus
atmospheric pressure, [Pa]
P2 [float] Built-up backpressure; the increase in pressure during flow at the outlet of a pressure-
relief device after it opens, [Pa]
Returns
F2 [float] Subcritical flow coefficient F2 [-]

Notes

F2 is completely dimensionless.

References

[1]

2.19. Safety/relief valve sizing (fluids.safety_valve) 355


Fluids Documentation, Release 0.1

Examples

From [1] example 2, matches.


>>> API520_F2(1.8, 1E6, 7E5)
0.8600724121105563

fluids.safety_valve.API520_Kv(Re)
Calculates correction due to viscosity for liquid flow for use in API 520 relief valve sizing.
(︂ )︂−1
2.878 342.75
𝐾𝑣 = 0.9935 + +
𝑅𝑒0.5 𝑅𝑒1.5
Parameters
Re [float] Reynolds number for flow out the valve [-]
Returns
Kv [float] Correction due to viscosity [-]

Notes

Reynolds number in the standard is defined as follows, with Q in L/min, G1 as specific gravity, mu in centipoise,
and area in mm^2:
𝑄(18800𝐺1 )
𝑅𝑒 = √
𝜇 𝐴
It is unclear how this expression was derived with a constant of 18800; the following code demonstrates what
the constant should be:
>>> from scipy.constants import *
>>> liter/minute*1000./(0.001*(milli**2)**0.5)
16666.666666666668

References

[1]

Examples

From [1], checked with example 5.


>>> API520_Kv(100)
0.6157445891444229

fluids.safety_valve.API520_N(P1)
Calculates correction due to steam pressure for steam flow for use in API 520 relief valve sizing.
0.02764𝑃1 − 1000
𝐾𝑁 =
0.03324𝑃1 − 1061
Parameters
P1 [float] Upstream relieving pressure; the set pressure plus the allowable overpressure, plus
atmospheric pressure, [Pa]

356 Chapter 2. API Reference


Fluids Documentation, Release 0.1

Returns
KN [float] Correction due to steam temperature [-]

Notes

Although not dimensional, KN varies with the units used.


For temperatures above 922 K or 22057 kPa, KN is not defined.
Internally, units of kPa are used to match the equation in the standard.

References

[1]

Examples

Custom example:

>>> API520_N(1774700)
0.9490406958152466

fluids.safety_valve.API520_SH(T1, P1)
Calculates correction due to steam superheat for steam flow for use in API 520 relief valve sizing. 2D interpo-
lation among a table with 28 pressures and 10 temperatures is performed.
Parameters
T1 [float] Temperature of the fluid entering the valve [K]
P1 [float] Upstream relieving pressure; the set pressure plus the allowable overpressure, plus
atmospheric pressure, [Pa]
Returns
KSH [float] Correction due to steam superheat [-]

Notes

For P above 20679 kPag, use the critical flow model. Superheat cannot be above 649 degrees Celsius. If T1 is
above 149 degrees Celsius, returns 1.

References

[1]

Examples

Custom example from table 9:

>>> API520_SH(593+273.15, 1066.325E3)


0.7201800000000002

2.19. Safety/relief valve sizing (fluids.safety_valve) 357


Fluids Documentation, Release 0.1

fluids.safety_valve.API520_B(Pset, Pback, overpressure=0.1)


Calculates capacity correction due to backpressure on balanced spring-loaded PRVs in vapor service. For pilot
operated valves, this is always 1. Applicable up to 50% of the percent gauge backpressure, For use in API 520
relief valve sizing. 1D interpolation among a table with 53 backpressures is performed.
Parameters
Pset [float] Set pressure for relief [Pa]
Pback [float] Backpressure, [Pa]
overpressure [float, optional] The maximum fraction overpressure; one of 0.1, 0.16, or 0.21, []
Returns
Kb [float] Correction due to vapor backpressure [-]

Notes

If the calculated gauge backpressure is less than 30%, 38%, or 50% for overpressures of 0.1, 0.16, or 0.21, a
value of 1 is returned.
Percent gauge backpressure must be under 50%.

References

[1]

Examples

Custom examples from figure 30:

>>> API520_B(1E6, 5E5)


0.7929945420944432

fluids.safety_valve.API520_W(Pset, Pback)
Calculates capacity correction due to backpressure on balanced spring-loaded PRVs in liquid service. For pilot
operated valves, this is always 1. Applicable up to 50% of the percent gauge backpressure, For use in API 520
relief valve sizing. 1D interpolation among a table with 53 backpressures is performed.
Parameters
Pset [float] Set pressure for relief [Pa]
Pback [float] Backpressure, [Pa]
Returns
KW [float] Correction due to liquid backpressure [-]

Notes

If the calculated gauge backpressure is less than 15%, a value of 1 is returned.

References

[1]

358 Chapter 2. API Reference


Fluids Documentation, Release 0.1

Examples

Custom example from figure 31:

>>> API520_W(1E6, 3E5) # 22% overpressure


0.9511471848008564

fluids.safety_valve.API520_A_g(m, T, Z, MW, k, P1, P2=101325, Kd=0.975, Kb=1, Kc=1)


Calculates required relief valve area for an API 520 valve passing a gas or a vapor, at either critical or sub-critical
flow.
For critical flow:
√︂
𝑚 𝑇𝑍
𝐴=
𝐶𝐾𝑑 𝑃1 𝐾𝑏 𝐾𝑐 𝑀
For sub-critical flow:
√︃
17.9𝑚 𝑇𝑍
𝐴=
𝐹2 𝐾𝑑 𝐾𝑐 𝑀 𝑃1 (𝑃1 − 𝑃2 )

Parameters
m [float] Mass flow rate of vapor through the valve, [kg/s]
T [float] Temperature of vapor entering the valve, [K]
Z [float] Compressibility factor of the vapor, [-]
MW [float] Molecular weight of the vapor, [g/mol]
k [float] Isentropic coefficient or ideal gas heat capacity ratio [-]
P1 [float] Upstream relieving pressure; the set pressure plus the allowable overpressure, plus
atmospheric pressure, [Pa]
P2 [float, optional] Built-up backpressure; the increase in pressure during flow at the outlet of a
pressure-relief device after it opens, [Pa]
Kd [float, optional] The effective coefficient of discharge, from the manufacturer or for prelim-
inary sizing, using 0.975 normally or 0.62 when used with a rupture disc as described in [1],
[]
Kb [float, optional] Correction due to vapor backpressure [-]
Kc [float, optional] Combination correction factor for installation with a ruture disk upstream
of the PRV, []
Returns
A [float] Minimum area for relief valve according to [1], [m^2]

Notes

Units are interlally kg/hr, kPa, and mm^2 to match [1].

References

[1]

2.19. Safety/relief valve sizing (fluids.safety_valve) 359


Fluids Documentation, Release 0.1

Examples

Example 1 from [1] for critical flow, matches:

>>> API520_A_g(m=24270/3600., T=348., Z=0.90, MW=51., k=1.11, P1=670E3, Kb=1,


˓→Kc=1)

0.0036990460646834414

Example 2 from [1] for sub-critical flow, matches:

>>> API520_A_g(m=24270/3600., T=348., Z=0.90, MW=51., k=1.11, P1=670E3, P2=532E3,


˓→Kd=0.975, Kb=1, Kc=1)

0.004248358775943481

fluids.safety_valve.API520_A_steam(m, T, P1, Kd=0.975, Kb=1, Kc=1)


Calculates required relief valve area for an API 520 valve passing a steam, at either saturation or superheat but
not partially condensed.
190.5𝑚
𝐴=
𝑃1 𝐾𝑑 𝐾𝑏 𝐾𝑐 𝐾𝑁 𝐾𝑆𝐻
Parameters
m [float] Mass flow rate of steam through the valve, [kg/s]
T [float] Temperature of steam entering the valve, [K]
P1 [float] Upstream relieving pressure; the set pressure plus the allowable overpressure, plus
atmospheric pressure, [Pa]
Kd [float, optional] The effective coefficient of discharge, from the manufacturer or for prelim-
inary sizing, using 0.975 normally or 0.62 when used with a rupture disc as described in [1],
[]
Kb [float, optional] Correction due to vapor backpressure [-]
Kc [float, optional] Combination correction factor for installation with a rupture disk upstream
of the PRV, []
Returns
A [float] Minimum area for relief valve according to [1], [m^2]

Notes

Units are interlally kg/hr, kPa, and mm^2 to match [1]. With the provided temperature and pressure, the KN
coefficient is calculated with the function API520_N; as is the superheat correction KSH, with the function
API520_SH.

References

[1]

Examples

Example 4 from [1], matches:

360 Chapter 2. API Reference


Fluids Documentation, Release 0.1

>>> API520_A_steam(m=69615/3600., T=592.5, P1=12236E3, Kd=0.975, Kb=1, Kc=1)


0.0011034712423692733

2.20 Liquid-Vapor Separators (fluids.separator)

fluids.separator.v_Sounders_Brown(K, rhol, rhog)


Calculates the maximum allowable vapor velocity in a two-phase separator to permit separation between en-
trained droplets and the gas using an empirical K factor, named after Sounders and Brown [1]. This is a simpli-
fying expression for terminal velocity and drag on particles.
√︃
𝜌𝑙 − 𝜌𝑔
𝑣𝑚𝑎𝑥 = 𝐾𝑆𝐵
𝜌𝑔

Parameters
K [float] Sounders Brown K factor for two-phase separator design, [m/s]
rhol [float] Density of liquid phase [kg/m^3]
rhog [float] Density of gas phase [kg/m^3]
Returns
v_max [float] Maximum allowable vapor velocity in a two-phase separator to permit separation
between entrained droplets and the gas, [m/s]

Notes

The Sounders Brown K factor is related to the terminal velocity as shown in the following expression.
√︃
4𝑔𝑑𝑝 (𝜌𝑝 − 𝜌𝑓 )
𝑣𝑡𝑒𝑟𝑚 = 𝑣𝑚𝑎𝑥 =
3𝐶𝐷 𝜌𝑓
√︃ √︂
(𝜌𝑝 − 𝜌𝑓 ) 4𝑔𝑑𝑝
𝑣𝑡𝑒𝑟𝑚 =
𝜌𝑓 3𝐶𝐷
√︂
4𝑔𝑑𝑝
𝑣𝑡𝑒𝑟𝑚 = 𝐾𝑆𝐵
3𝐶𝐷
Note this form corresponds to the Newton’s law range (Re > 500), but in reality droplets are normally in the
intermediate or Stoke’s law region [2]. For this reason using the drag coefficient expression directly is cleaner,
but identical results can be found with the Sounders Brown equation.

References

[1], [2]

Examples

>>> v_Sounders_Brown(K=0.08, rhol=985.4, rhog=1.3)


2.2010906387516167

2.20. Liquid-Vapor Separators (fluids.separator) 361


Fluids Documentation, Release 0.1

fluids.separator.K_separator_Watkins(x, rhol, rhog, horizontal=False, method=’spline’)


Calculates the Sounders-Brown K factor as used in determining maximum allowable gas velocity in a two-phase
separator in either a horizontal or vertical orientation. This function approximates a graph published in [1] to
determine K as used in the following equation:
√︃
𝜌𝑙 − 𝜌𝑔
𝑣𝑚𝑎𝑥 = 𝐾𝑆𝐵
𝜌𝑔

The graph has K_{SB} on its y-axis, and the following as its x-axis:

𝑚𝑙 (1 − 𝑥)
√︁ √︁
𝜌𝑔 /𝜌𝑙 = 𝜌𝑔 /𝜌𝑙
𝑚𝑔 𝑥

Cubic spline interpolation is the default method of retrieving a value from the graph, which was digitized with
Engauge-Digitizer.
Also supported are two published curve fits to the graph. The first is that of Blackwell (1984) [2], as follows:

𝐾𝑆𝐵 = exp(−1.942936 − 0.814894𝑋 − 0.179390𝑋 2 − 0.0123790𝑋 3 + 0.000386235𝑋 4 + 0.000259550𝑋 5 )


[︂ ]︂
(1 − 𝑥)
√︁
𝑋 = log 𝜌𝑔 /𝜌𝑙
𝑥

The second is that of Branan (1999), as follows:

𝐾𝑆𝐵 = exp(−1.877478097 − 0.81145804597𝑋 − 0.1870744085𝑋 2 − 0.0145228667𝑋 3 − 0.00101148518𝑋 4 )


[︂ ]︂
(1 − 𝑥)
√︁
𝑋 = log 𝜌𝑔 /𝜌𝑙
𝑥

Parameters
x [float] Quality of fluid entering separator, [-]
rhol [float] Density of liquid phase [kg/m^3]
rhog [float] Density of gas phase [kg/m^3]
horizontal [bool, optional] Whether to use the vertical or horizontal value; horizontal is 1.25
higher
method [str] One of ‘spline, ‘blackwell’, or ‘branan’
Returns
K [float] Sounders Brown horizontal or vertical K factor for two-phase separator design only,
[m/s]

Notes

Both the ‘branan’ and ‘blackwell’ models are used frequently. However, the spline is much more accurate.
No limits checking is enforced. However, the x-axis spans only 0.006 to 5.4, and the function should not be
used outside those limits.

References

[1], [2], [3]

362 Chapter 2. API Reference


Fluids Documentation, Release 0.1

Examples

>>> K_separator_Watkins(0.88, 985.4, 1.3, horizontal=True)


0.07951613600476297

fluids.separator.K_separator_demister_York(P, horizontal=False)
Calculates the Sounders Brown K factor as used in determining maximum permissible gas velocity in a two-
phase separator in either a horizontal or vertical orientation, with a demister. This function is a curve fit to [1]
published in [2] and is widely used.
For 1 < P < 15 psia:

𝐾 = 0.1821 + 0.0029𝑃 + 0.0460 ln 𝑃

For 15 <= P <= 40 psia:

𝐾 = 0.35

For P < 5500 psia:

𝐾 = 0.430 − 0.023 ln 𝑃

In the above equations, P is in units of psia.


Parameters
P [float] Pressure of separator, [Pa]
horizontal [bool, optional] Whether to use the vertical or horizontal value; horizontal is 1.25
times higher, [-]
Returns
K [float] Sounders Brown Horizontal or vertical K factor for two-phase separator design with a
demister, [m/s]

Notes

If the input pressure is under 1 psia, 1 psia is used. If the input pressure is over 5500 psia, 5500 psia is used.

References

[2], [1]

Examples

>>> K_separator_demister_York(975*psi)
0.08281536035331669

fluids.separator.K_Sounders_Brown_theoretical(D, Cd, g=9.80665)


Converts a known drag coefficient into a Sounders-Brown K factor for two-phase separator design. This factor
is the traditional way for separator diameters to be obtained although it is unnecessary and the theoretical drag
coefficient method can be used instead.
√︃ √︂
(𝜌𝑝 − 𝜌𝑓 ) 4𝑔𝑑𝑝
𝐾𝑆𝐵 = =
𝜌𝑓 3𝐶𝐷

2.20. Liquid-Vapor Separators (fluids.separator) 363


Fluids Documentation, Release 0.1

Parameters
D [float] Design diameter of the droplets, [m]
Cd [float] Drag coefficient [-]
g [float, optional] Acceleration due to gravity, [m/s^2]
Returns
K [float] Sounders Brown K factor for two-phase separator design, [m/s]

Notes

Drag coefficient is a function of velocity; so iteration is needed to obtain the most correct answer. The following
example shows the use of iteration to obtain the final velocity:

>>> from fluids import *


>>> V = 2.0
>>> D = 150E-6
>>> rho = 1.3
>>> rhol = 700.
>>> mu = 1E-5
>>> for i in range(10):
... Re = Reynolds(V=V, rho=rho, mu=mu, D=D)
... Cd = drag_sphere(Re)
... K = K_Sounders_Brown_theoretical(D=D, Cd=Cd)
... V = v_Sounders_Brown(K, rhol=rhol, rhog=rho)
... print(V)
0.760933074177
0.562429393401
0.507328950507
0.489571420955
0.483560219469
0.481490760336
0.480774149346
0.480525499591
0.480439162498
0.480409176902

The use of Sounders-Brown constants can be replaced as follows (the v_terminal method includes its own solver
for terminal velocity):

>>> from fluids.drag import v_terminal


>>> v_terminal(D=D, rhop=rhol, rho=rho, mu=mu)
0.4803932186998833

References

[1]

Examples

>>> K_Sounders_Brown_theoretical(D=150E-6, Cd=0.5)


0.06263114241333939

364 Chapter 2. API Reference


Fluids Documentation, Release 0.1

2.21 Pneumatic conveying (fluids.saltation)

fluids.saltation.Rizk(mp, dp, rhog, D)


Calculates saltation velocity of the gas for pneumatic conveying, according to [1] as described in [2] and many
others.
(︂ )︂
1 1100𝑑𝑝 +2.5
𝜇= (𝐹 𝑟𝑠 )
101440𝑑𝑝 +1.96

𝑉𝑠𝑎𝑙𝑡
𝐹 𝑟𝑠 = √
𝑔𝐷
𝑚𝑝
𝜇= 𝜋 2
4 𝐷 𝑉 𝜌𝑓
Parameters
mp [float] Solid mass flow rate, [kg/s]
dp [float] Particle diameter, [m]
rhog [float] Gas density, [kg/m^3]
D [float] Diameter of pipe, [m]
Returns
V [float] Saltation velocity of gas, [m/s]

Notes

Model is rearranged to be explicit in terms of saltation velocity internally.

References

[1], [2], [3]

Examples

Example is from [3].

>>> Rizk(mp=0.25, dp=100E-6, rhog=1.2, D=.078)


9.8833092829357

fluids.saltation.Matsumoto_1974(mp, rhop, dp, rhog, D, Vterminal=1)


Calculates saltation velocity of the gas for pneumatic conveying, according to [1]. Also described in [2].
(︂ )︂0.50 (︂ )︂−1.75 (︂ )︂3
𝜌𝑝 𝐹 𝑟𝑝 𝐹 𝑟𝑠
𝜇 = 0.448
𝜌𝑓 10 10

𝑉𝑠𝑎𝑙𝑡
𝐹 𝑟𝑠 = √
𝑔𝐷
𝑉𝑡𝑒𝑟𝑚𝑖𝑛𝑎𝑙
𝐹 𝑟𝑝 = √︀
𝑔𝑑𝑝
𝑚𝑝
𝜇= 𝜋 2
4 𝐷 𝑉 𝜌𝑓

2.21. Pneumatic conveying (fluids.saltation) 365


Fluids Documentation, Release 0.1

Parameters
mp [float] Solid mass flow rate, [kg/s]
rhop [float] Particle density, [kg/m^3]
dp [float] Particle diameter, [m]
rhog [float] Gas density, [kg/m^3]
D [float] Diameter of pipe, [m]
Vterminal [float] Terminal velocity of particle settling in gas, [m/s]
Returns
V [float] Saltation velocity of gas, [m/s]

Notes

Model is rearranged to be explicit in terms of saltation velocity internally. Result looks high, something may be
wrong. For particles > 0.3 mm.

References

[1], [2]

Examples

>>> Matsumoto_1974(mp=1., rhop=1000., dp=1E-3, rhog=1.2, D=0.1, Vterminal=5.24)


19.583617317317895

fluids.saltation.Matsumoto_1975(mp, rhop, dp, rhog, D, Vterminal=1)


Calculates saltation velocity of the gas for pneumatic conveying, according to [1]. Also described in [2].
(︂ )︂0.55 (︂ )︂−2.3 (︂ )︂3
𝜌𝑝 𝐹 𝑟𝑝 𝐹 𝑟𝑠
𝜇 = 1.11
𝜌𝑓 10 10

𝑉𝑠𝑎𝑙𝑡
𝐹 𝑟𝑠 = √
𝑔𝐷
𝑉𝑡𝑒𝑟𝑚𝑖𝑛𝑎𝑙
𝐹 𝑟𝑝 = √︀
𝑔𝑑𝑝
𝑚𝑝
𝜇= 𝜋 2
4 𝐷 𝑉 𝜌𝑓
Parameters
mp [float] Solid mass flow rate, [kg/s]
rhop [float] Particle density, [kg/m^3]
dp [float] Particle diameter, [m]
rhog [float] Gas density, [kg/m^3]
D [float] Diameter of pipe, [m]
Vterminal [float] Terminal velocity of particle settling in gas, [m/s]

366 Chapter 2. API Reference


Fluids Documentation, Release 0.1

Returns
V [float] Saltation velocity of gas, [m/s]

Notes

Model is rearranged to be explicit in terms of saltation velocity internally. Result looks high, something may be
wrong. For particles > 0.3 mm.

References

[1], [2]

Examples

>>> Matsumoto_1975(mp=1., rhop=1000., dp=1E-3, rhog=1.2, D=0.1, Vterminal=5.24)


18.04523091703009

fluids.saltation.Matsumoto_1977(mp, rhop, dp, rhog, D, Vterminal=1)


Calculates saltation velocity of the gas for pneumatic conveying, according to [1] and reproduced in [2], [3], and
[4].
First equation is used if third equation yields d* higher than dp. Otherwise, use equation 2.
(︂ )︂1.43 (︂ )︂4
𝑑𝑝 𝐹 𝑟𝑠
𝜇 = 5560
𝐷 10
(︂ )︂−3.7 (︂
)︂1.06 (︂ )︂3.61
𝜌𝑝 𝐹 𝑟𝑝 𝐹 𝑟𝑠
𝜇 = 0.373
𝜌𝑓 10 10
−0.74
𝑑*𝑝
(︂ )︂
𝜌𝑝
= 1.39
𝐷 𝜌𝑓
𝑉𝑠𝑎𝑙𝑡
𝐹 𝑟𝑠 = √
𝑔𝐷
𝑉𝑡𝑒𝑟𝑚𝑖𝑛𝑎𝑙
𝐹 𝑟𝑝 = √︀
𝑔𝑑𝑝
𝑚𝑝
𝜇= 𝜋 2
4 𝐷 𝑉 𝜌𝑓
Parameters
mp [float] Solid mass flow rate, [kg/s]
rhop [float] Particle density, [kg/m^3]
dp [float] Particle diameter, [m]
rhog [float] Gas density, [kg/m^3]
D [float] Diameter of pipe, [m]
Vterminal [float] Terminal velocity of particle settling in gas, [m/s]
Returns
V [float] Saltation velocity of gas, [m/s]

2.21. Pneumatic conveying (fluids.saltation) 367


Fluids Documentation, Release 0.1

Notes

Model is rearanged to be explicit in terms of saltation velocity internally.r

References

[1], [2], [3], [4]

Examples

Example is only a self-test.


Course routine, terminal velocity input is from example in [2].

>>> Matsumoto_1977(mp=1., rhop=1000., dp=1E-3, rhog=1.2, D=0.1, Vterminal=5.24)


16.64284834446686

fluids.saltation.Schade(mp, rhop, dp, rhog, D)


Calculates saltation velocity of the gas for pneumatic conveying, according to [1] as described in [2], [3], [4],
and [5].
(︂ )︂0.025 (︂ )︂0.34
0.11 𝐷 𝜌𝑝
𝐹 𝑟𝑠 = 𝜇
𝑑𝑝 𝜌𝑓

𝑉𝑠𝑎𝑙𝑡
𝐹 𝑟𝑠 = √
𝑔𝐷
𝑚𝑝
𝜇= 𝜋 2
4 𝐷 𝑉 𝜌𝑓
Parameters
mp [float] Solid mass flow rate, [kg/s]
rhop [float] Particle density, [kg/m^3]
dp [float] Particle diameter, [m]
rhog [float] Gas density, [kg/m^3]
D [float] Diameter of pipe, [m]
Returns
V [float] Saltation velocity of gas, [m/s]

Notes

Model is rearranged to be explicit in terms of saltation velocity internally.

References

[1], [2], [3], [4], [5]

368 Chapter 2. API Reference


Fluids Documentation, Release 0.1

Examples

>>> Schade(mp=1., rhop=1000., dp=1E-3, rhog=1.2, D=0.1)


13.697415809497912

fluids.saltation.Weber_saltation(mp, rhop, dp, rhog, D, Vterminal=4)


Calculates saltation velocity of the gas for pneumatic conveying, according to [1] as described in [2], [3], [4],
and [5].
If Vterminal is under 3 m/s, use equation 1; otherwise, equation 2.
(︂ )︂ (︂ )︂0.1
8 𝑑𝑝
𝐹 𝑟𝑠 = 7 + 𝑉𝑡𝑒𝑟𝑚𝑖𝑛𝑎𝑙 𝜇0.25
3 𝐷
(︂ )︂0.1
0.25 𝑑𝑝
𝐹 𝑟𝑠 = 15𝜇
𝐷
𝑉𝑠𝑎𝑙𝑡
𝐹 𝑟𝑠 = √
𝑔𝐷
𝑚𝑝
𝜇= 𝜋 2
4 𝐷 𝑉 𝜌𝑓
Parameters
mp [float] Solid mass flow rate, [kg/s]
rhop [float] Particle density, [kg/m^3]
dp [float] Particle diameter, [m]
rhog [float] Gas density, [kg/m^3]
D [float] Diameter of pipe, [m]
Vterminal [float] Terminal velocity of particle settling in gas, [m/s]
Returns
V [float] Saltation velocity of gas, [m/s]

Notes

Model is rearranged to be explicit in terms of saltation velocity internally.

References

[1], [2], [3], [4], [5]

Examples

Examples are only a self-test.

>>> Weber_saltation(mp=1, rhop=1000., dp=1E-3, rhog=1.2, D=0.1, Vterminal=4)


15.227445436331474

2.21. Pneumatic conveying (fluids.saltation) 369


Fluids Documentation, Release 0.1

fluids.saltation.Geldart_Ling(mp, rhog, D, mug)


Calculates saltation velocity of the gas for pneumatic conveying, according to [1] as described in [2] and [3].
if Gs/D < 47000, use equation 1, otherwise use equation 2.

𝑉𝑠𝑎𝑙𝑡 = 1.5𝐺0.465
𝑠 𝐷−0.01 𝜇0.055 𝜌𝑓−0.42

𝑉𝑠𝑎𝑙𝑡 = 8.7𝐺0.302
𝑠 𝐷0.153 𝜇0.055 𝜌𝑓−0.42
(︂ )︂0.1
𝑑𝑝
𝐹 𝑟𝑠 = 15𝜇0.25
𝐷
𝑉𝑠𝑎𝑙𝑡
𝐹 𝑟𝑠 = √
𝑔𝐷
𝑚𝑝
𝜇= 𝜋 2
4 𝐷 𝑉 𝜌𝑓
𝑚𝑝
𝐺𝑠 =
𝐴
Parameters
mp [float] Solid mass flow rate, [kg/s]
rhog [float] Gas density, [kg/m^3]
D [float] Diameter of pipe, [m]
mug [float] Gas viscosity, [Pa*s]
Returns
V [float] Saltation velocity of gas, [m/s]

Notes

Model is rearranged to be explicit in terms of saltation velocity internally.

References

[1], [2], [3]

Examples

>>> Geldart_Ling(1., 1.2, 0.1, 2E-5)


7.467495862402707

2.22 Two phase flow (fluids.two_phase)

fluids.two_phase.two_phase_dP(m, x, rhol, D, L=1, rhog=None, mul=None, mug=None,


sigma=None, P=None, Pc=None, roughness=0, angle=0,
Method=None, AvailableMethods=False)
This function handles calculation of two-phase liquid-gas pressure drop for flow inside channels. 23 calculation
methods are available, with varying input requirements. A correlation will be automatically selected if none is
specified. The full list of correlation can be obtained with the AvailableMethods flag.
If no correlation is selected, the following rules are used, with the earlier options attempted first:

370 Chapter 2. API Reference


Fluids Documentation, Release 0.1

• If rhog, mul, mug, and sigma are specified, use the Kim_Mudawar model
• If rhog, mul, and mug are specified, use the Chisholm model
• If mul, P, and Pc are specified, use the Zhang_Webb model
• If rhog and sigma are specified, use the Lombardi_Pedrocchi model

Parameters
m [float] Mass flow rate of fluid, [kg/s]
x [float] Quality of fluid, [-]
rhol [float] Liquid density, [kg/m^3]
D [float] Diameter of pipe, [m]
L [float, optional] Length of pipe, [m]
rhog [float, optional] Gas density, [kg/m^3]
mul [float, optional] Viscosity of liquid, [Pa*s]
mug [float, optional] Viscosity of gas, [Pa*s]
sigma [float, optional] Surface tension, [N/m]
P [float, optional] Pressure of fluid, [Pa]
Pc [float, optional] Critical pressure of fluid, [Pa]
roughness [float, optional] Roughness of pipe for use in calculating friction factor, [m]
angle [float, optional] The angle of the pipe with respect to the horizontal, [degrees]
Returns
dP [float] Pressure drop of the two-phase flow, [Pa]
methods [list, only returned if AvailableMethods == True] List of methods which can be used
to calculate two-phase pressure drop with the given inputs.
Other Parameters
Method [string, optional] A string of the function name to use, as in the dictionary
two_phase_correlations.
AvailableMethods [bool, optional] If True, function will consider which methods which can
be used to calculate two-phase pressure drop with the given inputs and return them as a list
instead of performing a calculation.

Notes

These functions may be integrated over, with properties recalculated as the fluid’s quality changes.
This model considers only the frictional pressure drop, not that due to gravity or acceleration.

Examples

>>> two_phase_dP(m=0.6, x=0.1, rhol=915., rhog=2.67, mul=180E-6, mug=14E-6,


... sigma=0.0487, D=0.05, L=1)
840.4137796786074

2.22. Two phase flow (fluids.two_phase) 371


Fluids Documentation, Release 0.1

fluids.two_phase.two_phase_dP_acceleration(m, D, xi, xo, alpha_i, alpha_o, rho_li, rho_gi,


rho_lo=None, rho_go=None)
This function handles calculation of two-phase liquid-gas pressure drop due to acceleration for flow inside
channels. This is a discrete calculation for a segment with a known difference in quality (and ideally known
inlet and outlet pressures so density dependence can be included).

(1 − 𝑥𝑜 )2 𝑥2𝑜 (1 − 𝑥𝑖 )2 𝑥2𝑖
{︂[︂ ]︂ [︂ ]︂}︂
∆𝑃𝑎𝑐𝑐 = 𝐺2 + − +
𝜌𝑙,𝑜 (1 − 𝛼𝑜 ) 𝜌𝑔,𝑜 𝛼𝑜 𝜌𝑙,𝑖 (1 − 𝛼𝑖 ) 𝜌𝑔,𝑖 𝛼𝑖

Parameters
m [float] Mass flow rate of fluid, [kg/s]
D [float] Diameter of pipe, [m]
xi [float] Quality of fluid at inlet, [-]
xo [float] Quality of fluid at outlet, [-]
alpha_i [float] Void fraction at inlet (area of gas / total area of channel), [-]
alpha_o [float] Void fraction at outlet (area of gas / total area of channel), [-]
rho_li [float] Liquid phase density at inlet, [kg/m^3]
rho_gi [float] Gas phase density at inlet, [kg/m^3]
rho_lo [float, optional] Liquid phase density at outlet, [kg/m^3]
rho_go [float, optional] Gas phase density at outlet, [kg/m^3]
Returns
dP [float] Acceleration component of pressure drop for two-phase flow, [Pa]

Notes

The use of different gas and liquid phase densities at the inlet and outlet is optional; the outlet densities condi-
tions will be assumed to be those of the inlet if they are not specified.
There is a continuous variant of this method which can be integrated over, at the expense of a speed. The
differential form of this is as follows ([1], [3]):

𝑑 (1 − 𝑥)2 𝑥2
(︂ )︂ [︂ ]︂
𝑑𝑃
− = 𝐺2 +
𝑑𝑧 𝑎𝑐𝑐 𝑑𝑧 𝜌𝑙 (1 − 𝛼) 𝜌𝑔 𝛼

References

[1], [2], [3]

Examples

>>> two_phase_dP_acceleration(m=1, D=0.1, xi=0.372, xo=0.557, rho_li=827.1,


... rho_gi=3.919, alpha_i=0.992, alpha_o=0.996)
706.8560377214725

372 Chapter 2. API Reference


Fluids Documentation, Release 0.1

fluids.two_phase.two_phase_dP_dz_acceleration(m, D, x, rhol, rhog, dv_dP_l, dv_dP_g,


dx_dP, dP_dL, dA_dL)
This function handles calculation of two-phase liquid-gas pressure drop due to acceleration for flow inside
channels. This is a continuous calculation, providing the differential in pressure per unit length and should be
called as part of an integration routine ([1], [2], [3]).

𝐺2 1 𝜕𝐴
(︂ )︂ (︂(︂ )︂ [︂ ]︂)︂
𝜕𝑃 1 1 𝜕𝑃 𝜕𝑥 𝜕𝑃 𝜕(1/𝜌𝑔 ) 𝜕(1/𝜌𝑙 )
− = 𝐺2 − + 𝑥 + (1 − 𝑥) −
𝜕𝐿 𝐴 𝜌𝑔 𝜌𝑙 𝜕𝐿 𝜕𝑃 𝜕𝐿 𝜕𝑃 𝜕𝑃 𝜌ℎ𝑜𝑚 𝐴 𝜕𝐿

Parameters
m [float] Mass flow rate of fluid, [kg/s]
D [float] Diameter of pipe, [m]
x [float] Quality of fluid [-]
rhol [float] Liquid density, [kg/m^3]
rhog [float] Gas density, [kg/m^3]
dv_dP_l [float] Derivative of mass specific volume of the liquid phase with respect to pressure,
[m^3/(kg*Pa)]
dv_dP_g [float] Derivative of mass specific volume of the gas phase with respect to pressure,
[m^3/(kg*Pa)]
dx_dP [float] Derivative of mass quality of the two-phase fluid with respect to pressure (numer-
ical derivatives may be convenient for this), [1/Pa]
dP_dL [float] Pressure drop per unit length of pipe, [Pa/m]
dA_dL [float] Change in area of pipe per unit length of pipe, [m^2/m]
Returns
dP_dz [float] Acceleration component of pressure drop for two-phase flow, [Pa/m]

Notes

This calculation has the homogeneous model built in to it as its derivation is shown in [1]. The discrete calcula-
tion is more flexible as different void fractions may be used.

References

[1], [2], [3]

Examples

>>> two_phase_dP_dz_acceleration(m=1, D=0.1, x=0.372, rhol=827.1,


... rhog=3.919, dv_dP_l=-5e-12, dv_dP_g=-4e-7, dx_dP=-2e-7, dP_dL=120.0,
... dA_dL=0.0001)
20.137876617489034

fluids.two_phase.two_phase_dP_gravitational(angle, z, alpha_i, rho_li, rho_gi, al-


pha_o=None, rho_lo=None, rho_go=None,
g=9.80665)
This function handles calculation of two-phase liquid-gas pressure drop due to gravitation for flow inside chan-
nels. This is a discrete calculation for a segment with a known difference in elevation (and ideally known inlet

2.22. Two phase flow (fluids.two_phase) 373


Fluids Documentation, Release 0.1

and outlet pressures so density dependence can be included).


{︂ }︂
[𝛼𝑜 𝜌𝑔,𝑜 + (1 − 𝛼𝑜 )𝜌𝑙,𝑜 ] + [𝛼𝑖 𝜌𝑔,𝑖 + (1 − 𝛼𝑖 )𝜌𝑙,𝑖 ]
−∆𝑃𝑔𝑟𝑎𝑣 = 𝑔 sin 𝜃𝑧
2

Parameters
angle [float] The angle of the pipe with respect to the horizontal, [degrees]
z [float] The total length of the pipe, [m]
alpha_i [float] Void fraction at inlet (area of gas / total area of channel), [-]
rho_li [float] Liquid phase density at inlet, [kg/m^3]
rho_gi [float] Gas phase density at inlet, [kg/m^3]
alpha_o [float, optional] Void fraction at outlet (area of gas / total area of channel), [-]
rho_lo [float, optional] Liquid phase density at outlet, [kg/m^3]
rho_go [float, optional] Gas phase density at outlet, [kg/m^3]
g [float, optional] Acceleration due to gravity, [m/s^2]
Returns
dP [float] Gravitational component of pressure drop for two-phase flow, [Pa]

Notes

The use of different gas and liquid phase densities and void fraction at the inlet and outlet is optional; the outlet
densities and void fraction will be assumed to be those of the inlet if they are not specified. This does not add
much accuracy.
There is a continuous variant of this method which can be integrated over, at the expense of a speed. The
differential form of this is as follows ([1], [2]):
(︂ )︂
𝑑𝑃
− = [𝛼𝜌𝑔 + (1 − 𝛼)𝜌𝑙 ]𝑔 sin 𝜃
𝑑𝑧 𝑔𝑟𝑎𝑣

References

[1], [2], [3]

Examples

Example calculation, page 13-2 from [3]:

>>> two_phase_dP_gravitational(angle=90, z=2, alpha_i=0.9685, rho_li=1518.,


... rho_gi=2.6)
987.237416829999

The same calculation, but using average inlet and outlet conditions:

>>> two_phase_dP_gravitational(angle=90, z=2, alpha_i=0.9685, rho_li=1518.,


... rho_gi=2.6, alpha_o=0.968, rho_lo=1517.9, rho_go=2.59)
994.5416058829999

374 Chapter 2. API Reference


Fluids Documentation, Release 0.1

fluids.two_phase.two_phase_dP_dz_gravitational(angle, alpha, rhol, rhog, g=9.80665)


This function handles calculation of two-phase liquid-gas pressure drop due to gravitation for flow inside chan-
nels. This is a differential calculation for a segment with an infinitesimal difference in elevation for use in
performing integration over a pipe as shown in [1] and [2].
(︂ )︂
𝑑𝑃
− = [𝛼𝜌𝑔 + (1 − 𝛼)𝜌𝑙 ]𝑔 sin 𝜃
𝑑𝑧 𝑔𝑟𝑎𝑣

Parameters
angle [float] The angle of the pipe with respect to the horizontal, [degrees]
alpha [float] Void fraction (area of gas / total area of channel), [-]
rhol [float] Liquid phase density, [kg/m^3]
rhog [float] Gas phase density, [kg/m^3]
g [float, optional] Acceleration due to gravity, [m/s^2]
Returns
dP_dz [float] Gravitational component of pressure drop for two-phase flow, [Pa/m]

References

[1], [2]

Examples

>>> two_phase_dP_dz_gravitational(angle=90, alpha=0.9685, rhol=1518,


... rhog=2.6)
493.6187084149995

fluids.two_phase.Beggs_Brill(m, x, rhol, rhog, mul, mug, sigma, P, D, angle, roughness=0.0,


L=1.0, g=9.80665, acceleration=True)
Calculates the two-phase pressure drop according to the Beggs-Brill correlation ([1], [2], [3]).
Parameters
m [float] Mass flow rate of fluid, [kg/s]
x [float] Mass quality of fluid, [-]
rhol [float] Liquid density, [kg/m^3]
rhog [float] Gas density, [kg/m^3]
mul [float] Viscosity of liquid, [Pa*s]
mug [float] Viscosity of gas, [Pa*s]
sigma [float] Surface tension, [N/m]
P [float] Pressure of fluid (used only if acceleration=True), [Pa]
D [float] Diameter of pipe, [m]
angle [float] The angle of the pipe with respect to the horizontal, [degrees]
roughness [float, optional] Roughness of pipe for use in calculating friction factor, [m]
L [float, optional] Length of pipe, [m]

2.22. Two phase flow (fluids.two_phase) 375


Fluids Documentation, Release 0.1

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


acceleration [bool] Whether or not to include the original acceleration component, [-]
Returns
dP [float] Pressure drop of the two-phase flow, [Pa]

Notes

The original acceleration formula is fairly primitive and normally neglected. The model was developed assuming
smooth pipe, so leaving roughness to zero may be wise.
Note this is a “mechanistic” pressure drop model - the gravitational pressure drop cannot be separated from the
frictional pressure drop.

References

[1], [2], [3]

Examples

>>> Beggs_Brill(m=0.6, x=0.1, rhol=915., rhog=2.67, mul=180E-6, mug=14E-6,


... sigma=0.0487, P=1E7, D=0.05, angle=0, roughness=0, L=1)
686.9724506803472

fluids.two_phase.Lockhart_Martinelli(m, x, rhol, rhog, mul, mug, D, L=1, Re_c=2000)


Calculates two-phase pressure drop with the Lockhart and Martinelli (1949) correlation as presented in non-
graphical form by Chisholm (1967).

∆𝑃 = ∆𝑃𝑙 𝜑2𝑙

𝐶 1
𝜑2𝑙 = 1 + + 2
𝑋 𝑋
∆𝑃 𝑙
𝑋2 =
∆𝑃𝑔

Liquid Gas C
Turbulent Turbulent 20
Laminar Turbulent 12
Turbulent Laminar 10
Laminar Laminar 5

This model has its own friction factor calculations, to be consistent with its Reynolds number transition and
the procedure specified in the original work. The equation 64/Re is used up to Re_c, and above it the Blasius
equation is used as follows:
0.184
𝑓𝑑 =
𝑅𝑒0.2
Parameters
m [float] Mass flow rate of fluid, [kg/s]
x [float] Quality of fluid, [-]

376 Chapter 2. API Reference


Fluids Documentation, Release 0.1

rhol [float] Liquid density, [kg/m^3]


rhog [float] Gas density, [kg/m^3]
mul [float] Viscosity of liquid, [Pa*s]
mug [float] Viscosity of gas, [Pa*s]
D [float] Diameter of pipe, [m]
L [float, optional] Length of pipe, [m]
Re_c [float, optional] Transition Reynolds number, used to decide which friction factor equation
to use and which C value to use from the table above.
Returns
dP [float] Pressure drop of the two-phase flow, [Pa]

Notes

Developed for horizontal flow. Very popular. Many implementations of this model assume turbulent-turbulent
flow.
The original model proposed that the transition Reynolds number was 1000 for laminar flow, and 2000 for
turbulent flow; it proposed no model for Re_l < 1000 and Re_g between 1000 and 2000 and also Re_g < 1000
and Re_l between 1000 and 2000.
No correction is available in this model for rough pipe.
[3] examined the original data in [1] again, and fit more curves to the data, separating them into different flow
regimes. There were 229 datum in the turbulent-turbulent regime, 9 in the turbulent-laminar regime, 339 in the
laminar-turbulent regime, and 42 in the laminar-laminar regime. Errors from [3]’s curves were 13.4%, 3.5%,
14.3%, and 12.0% for the above regimes, respectively. [2]’s fits provide further error.

References

[1], [2], [3], [4]

Examples

>>> Lockhart_Martinelli(m=0.6, x=0.1, rhol=915., rhog=2.67, mul=180E-6,


... mug=14E-6, D=0.05, L=1)
716.4695654888484

fluids.two_phase.Friedel(m, x, rhol, rhog, mul, mug, sigma, D, roughness=0, L=1)


Calculates two-phase pressure drop with the Friedel correlation.

∆𝑃𝑓 𝑟𝑖𝑐𝑡𝑖𝑜𝑛 = ∆𝑃𝑙𝑜 𝜑2𝑙𝑜

3.24𝐹 𝐻
𝜑2𝑙𝑜 = 𝐸 +
𝐹 𝑟0.0454 𝑊 𝑒0.035
(︂ )︂0.91 (︂ )︂0.19 (︂ )︂0.7
𝜌𝑙 𝜇𝑔 𝜇𝑔
𝐻= 1−
𝜌𝑔 𝜇𝑙 𝜇𝑙
𝐹 = 𝑥0.78 (1 − 𝑥)0.224

2.22. Two phase flow (fluids.two_phase) 377


Fluids Documentation, Release 0.1

(︂ )︂
𝜌𝑙 𝑓𝑑,𝑔𝑜
𝐸 = (1 − 𝑥)2 + 𝑥2
𝜌𝑔 𝑓𝑑,𝑙𝑜
𝐺2𝑡𝑝
𝐹𝑟 =
𝑔𝐷𝜌2𝐻
𝐺2𝑡𝑝 𝐷
𝑊𝑒 =
𝜎𝜌𝐻
(︂ )︂−1
𝑥 1−𝑥
𝜌𝐻 = +
𝜌𝑔 𝜌𝑙
Parameters
m [float] Mass flow rate of fluid, [kg/s]
x [float] Quality of fluid, [-]
rhol [float] Liquid density, [kg/m^3]
rhog [float] Gas density, [kg/m^3]
mul [float] Viscosity of liquid, [Pa*s]
mug [float] Viscosity of gas, [Pa*s]
sigma [float] Surface tension, [N/m]
D [float] Diameter of pipe, [m]
roughness [float, optional] Roughness of pipe for use in calculating friction factor, [m]
L [float, optional] Length of pipe, [m]
Returns
dP [float] Pressure drop of the two-phase flow, [Pa]

Notes

Applicable to vertical upflow and horizontal flow. Known to work poorly when mul/mug > 1000. Gives mean
errors on the order of 40%. Tested on data with diameters as small as 4 mm.
The power of 0.0454 is given as 0.045 in [2], [3], [4], and [5]; [6] and [2] give 0.0454 and [2] also gives a
similar correlation said to be presented in [1], so it is believed this 0.0454 was the original power. [6] also gives
an expression for friction factor claimed to be presented in [1]; it is not used here.

References

[1], [2], [3], [4], [5], [6]

Examples

Example 4 in [6]:

>>> Friedel(m=0.6, x=0.1, rhol=915., rhog=2.67, mul=180E-6, mug=14E-6,


... sigma=0.0487, D=0.05, roughness=0, L=1)
738.6500525002245

378 Chapter 2. API Reference


Fluids Documentation, Release 0.1

fluids.two_phase.Chisholm(m, x, rhol, rhog, mul, mug, D, roughness=0, L=1,


rough_correction=False)
Calculates two-phase pressure drop with the Chisholm (1973) correlation from [1], also in [2] and [3].
∆𝑃𝑡𝑝
= 𝜑2𝑐ℎ
∆𝑃𝑙𝑜
{︁ }︁
𝜑2𝑐ℎ = 1 + (Γ2 − 1) 𝐵𝑥(2−𝑛)/2 (1 − 𝑥)(2−𝑛)/2 + 𝑥2−𝑛
(︀ Δ𝑃 )︀
𝐿 𝑔𝑜
Γ2 = (︀ Δ𝑃 )︀
𝐿 𝑙𝑜
For Gamma < 9.5:
55
𝐵= 0.5 for 𝐺𝑡𝑝 > 1900
𝐺𝑡𝑝
2400
𝐵= for 500 < 𝐺𝑡𝑝 < 1900
𝐺𝑡𝑝
𝐵 = 4.8 for 𝐺𝑡𝑝 < 500
For 9.5 < Gamma < 28:
520
𝐵= 0.5 for 𝐺𝑡𝑝 < 600
Γ𝐺𝑡𝑝
21
𝐵= for 𝐺𝑡𝑝 > 600
Γ
For Gamma > 28:
15000
𝐵= 0.5
Γ2 𝐺𝑡𝑝
If rough_correction is True, the following correction to B is applied:
[︃ {︃ (︂ )︂2 }︃]︃ 0.25−𝑛
0.25
𝐵𝑟𝑜𝑢𝑔ℎ 𝜇𝑔
= 0.5 1 + + 10−600𝜖/𝐷
𝐵𝑠𝑚𝑜𝑜𝑡ℎ 𝜇𝑙
𝑓𝑑,𝑙𝑜
log 𝑓𝑑,𝑔𝑜
𝑛= 𝑅𝑒𝑔𝑜
log 𝑅𝑒𝑙𝑜
Parameters
m [float] Mass flow rate of fluid, [kg/s]
x [float] Quality of fluid, [-]
rhol [float] Liquid density, [kg/m^3]
rhog [float] Gas density, [kg/m^3]
mul [float] Viscosity of liquid, [Pa*s]
mug [float] Viscosity of gas, [Pa*s]
D [float] Diameter of pipe, [m]
roughness [float, optional] Roughness of pipe for use in calculating friction factor, [m]
L [float, optional] Length of pipe, [m]
rough_correction [bool, optional] Whether or not to use the roughness correction proposed in
the 1968 version of the correlation
Returns
dP [float] Pressure drop of the two-phase flow, [Pa]

2.22. Two phase flow (fluids.two_phase) 379


Fluids Documentation, Release 0.1

Notes

Applicable for 0 < x < 1. n = 0.25, the exponent in the Blassius equation. Originally developed for smooth
pipes, a roughness correction is included as well from the Chisholm’s 1968 work [4]. Neither [2] nor [3] have
any mention of the correction however.

References

[1], [2], [3], [4]

Examples

>>> Chisholm(m=0.6, x=0.1, rhol=915., rhog=2.67, mul=180E-6,


... mug=14E-6, D=0.05, roughness=0, L=1)
1084.1489922923738

fluids.two_phase.Kim_Mudawar(m, x, rhol, rhog, mul, mug, sigma, D, L=1)


Calculates two-phase pressure drop with the Kim and Mudawar (2012) correlation as in [1], also presented in
[2].

∆𝑃 = ∆𝑃𝑙 𝜑2𝑙

𝐶 1
𝜑2𝑙 = 1 + + 2
𝑋 𝑋
∆𝑃𝑙
𝑋2 =
∆𝑃𝑔
For turbulent liquid, turbulent gas:
(︂ )︂0.35
𝜌𝑙
𝐶 = 0.39𝑅𝑒0.03 0.10
𝑙𝑜 𝑆𝑢𝑔𝑜
𝜌𝑔
For turbulent liquid, laminar gas:
(︂ )︂0.14
𝜌𝑙
𝐶 = 8.7 × 10−4 𝑅𝑒0.17 0.50
𝑙𝑜 𝑆𝑢𝑔𝑜
𝜌𝑔
For laminar liquid, turbulent gas:
(︂ )︂0.36
0.59 𝜌𝑙
𝐶= 0.0015𝑅𝑒𝑙𝑜 𝑆𝑢0.19
𝑔𝑜
𝜌𝑔
For laminar liquid, laminar gas:
(︂ )︂0.48
−5 𝜌𝑙
𝐶 = 3.5 × 10 𝑅𝑒0.44 0.50
𝑙𝑜 𝑆𝑢𝑔𝑜
𝜌𝑔
This model has its own friction factor calculations, to be consistent with its Reynolds number transition. As
their model was regressed with these equations, more error is obtained when using any other friction factor
calculation. The laminar equation 64/Re is used up to Re=2000, then the Blasius equation with a coefficient of
0.316, and above Re = 20000,
0.184
𝑓𝑑 =
𝑅𝑒0.2
Parameters

380 Chapter 2. API Reference


Fluids Documentation, Release 0.1

m [float] Mass flow rate of fluid, [kg/s]


x [float] Quality of fluid, [-]
rhol [float] Liquid density, [kg/m^3]
rhog [float] Gas density, [kg/m^3]
mul [float] Viscosity of liquid, [Pa*s]
mug [float] Viscosity of gas, [Pa*s]
sigma [float] Surface tension, [N/m]
D [float] Diameter of pipe, [m]
L [float, optional] Length of pipe, [m]
Returns
dP [float] Pressure drop of the two-phase flow, [Pa]

Notes

The critical Reynolds number in this model is 2000, with a Reynolds number definition using actual liquid and
gas flows. This model also requires liquid-only Reynolds number to be calculated.
No attempt to incorporate roughness into the model was made in [1].
The model was developed with hydraulic diameter from 0.0695 to 6.22 mm, mass velocities 4 to 8528 kg/m^2/s,
flow qualities from 0 to 1, reduced pressures from 0.0052 to 0.91, superficial liquid Reynolds numbers up to
79202, superficial gas Reynolds numbers up to 253810, liquid-only Reynolds numbers up to 89798, 7115 data
points from 36 sources and working fluids air, CO2, N2, water, ethanol, R12, R22, R134a, R236ea, R245fa,
R404A, R407C, propane, methane, and ammonia.

References

[1], [2]

Examples

>>> Kim_Mudawar(m=0.6, x=0.1, rhol=915., rhog=2.67, mul=180E-6, mug=14E-6,


... sigma=0.0487, D=0.05, L=1)
840.4137796786074

fluids.two_phase.Baroczy_Chisholm(m, x, rhol, rhog, mul, mug, D, roughness=0, L=1)


Calculates two-phase pressure drop with the Baroczy (1966) model. It was presented in graphical form origi-
nally; Chisholm (1973) made the correlation non-graphical. The model is also shown in [3].
∆𝑃𝑡𝑝
= 𝜑2𝑐ℎ
∆𝑃𝑙𝑜
{︁ }︁
𝜑2𝑐ℎ = 1 + (Γ2 − 1) 𝐵𝑥(2−𝑛)/2 (1 − 𝑥)(2−𝑛)/2 + 𝑥2−𝑛
(︀ Δ𝑃 )︀
𝐿 𝑔𝑜
Γ2 = (︀ Δ𝑃 )︀
𝐿 𝑙𝑜

2.22. Two phase flow (fluids.two_phase) 381


Fluids Documentation, Release 0.1

For Gamma < 9.5:


55
𝐵= 0.5
𝐺𝑡𝑝

For 9.5 < Gamma < 28:


520
𝐵=
Γ𝐺0.5
𝑡𝑝

For Gamma > 28:


15000
𝐵= 0.5
Γ2 𝐺𝑡𝑝

Parameters
m [float] Mass flow rate of fluid, [kg/s]
x [float] Quality of fluid, [-]
rhol [float] Liquid density, [kg/m^3]
rhog [float] Gas density, [kg/m^3]
mul [float] Viscosity of liquid, [Pa*s]
mug [float] Viscosity of gas, [Pa*s]
D [float] Diameter of pipe, [m]
roughness [float, optional] Roughness of pipe for use in calculating friction factor, [m]
L [float, optional] Length of pipe, [m]
Returns
dP [float] Pressure drop of the two-phase flow, [Pa]

Notes

Applicable for 0 < x < 1. n = 0.25, the exponent in the Blassius equation. The Chisholm_1973 function should
be used in preference to this.

References

[1], [2], [3]

Examples

>>> Baroczy_Chisholm(m=0.6, x=0.1, rhol=915., rhog=2.67, mul=180E-6,


... mug=14E-6, D=0.05, roughness=0, L=1)
1084.1489922923738

fluids.two_phase.Theissing(m, x, rhol, rhog, mul, mug, D, roughness=0, L=1)


Calculates two-phase pressure drop with the Theissing (1980) correlation as shown in [2] and [3].
[︁ ]︁𝑛𝜖
1/𝑛𝜖 1/𝜖 1/(𝑛𝜖) 1/𝜖
∆𝑃𝑡𝑝 = ∆𝑃𝑙𝑜 (1 − 𝑥) + ∆𝑃𝑔𝑜 𝑥

382 Chapter 2. API Reference


Fluids Documentation, Release 0.1

(︃ √︀ )︃0.7/𝑛
2 𝜌𝑙 /𝜌𝑔
𝜖=3−2
1 + 𝜌𝑙 /𝜌𝑔
0.1
𝑛1 + 𝑛2 (∆𝑃𝑔 /∆𝑃𝑙 )
𝑛= 0.1
1 + (∆𝑃𝑔 /∆𝑃𝑙 )
ln (∆𝑃𝑙 /∆𝑃𝑙𝑜 )
𝑛1 =
ln (1 − 𝑥)
ln (∆𝑃𝑔 /∆𝑃𝑔𝑜 )
𝑛2 =
ln 𝑥
Parameters
m [float] Mass flow rate of fluid, [kg/s]
x [float] Quality of fluid, [-]
rhol [float] Liquid density, [kg/m^3]
rhog [float] Gas density, [kg/m^3]
mul [float] Viscosity of liquid, [Pa*s]
mug [float] Viscosity of gas, [Pa*s]
D [float] Diameter of pipe, [m]
roughness [float, optional] Roughness of pipe for use in calculating friction factor, [m]
L [float, optional] Length of pipe, [m]
Returns
dP [float] Pressure drop of the two-phase flow, [Pa]

Notes

Applicable for 0 < x < 1. Notable, as it can be used for two-phase liquid- liquid flow as well as liquid-gas flow.

References

[1], [2], [3]

Examples

>>> Theissing(m=0.6, x=.1, rhol=915., rhog=2.67, mul=180E-6, mug=14E-6,


... D=0.05, roughness=0, L=1)
497.6156370699528

fluids.two_phase.Muller_Steinhagen_Heck(m, x, rhol, rhog, mul, mug, D, roughness=0, L=1)


Calculates two-phase pressure drop with the Muller-Steinhagen and Heck (1986) correlation from [1], also in
[2] and [3].

∆𝑃𝑡𝑝 = 𝐺𝑀 𝑆𝐻 (1 − 𝑥)1/3 + ∆𝑃𝑔𝑜 𝑥3

𝐺𝑀 𝑆𝐻 = ∆𝑃𝑙𝑜 + 2 [∆𝑃𝑔𝑜 − ∆𝑃𝑙𝑜 ] 𝑥


Parameters

2.22. Two phase flow (fluids.two_phase) 383


Fluids Documentation, Release 0.1

m [float] Mass flow rate of fluid, [kg/s]


x [float] Quality of fluid, [-]
rhol [float] Liquid density, [kg/m^3]
rhog [float] Gas density, [kg/m^3]
mul [float] Viscosity of liquid, [Pa*s]
mug [float] Viscosity of gas, [Pa*s]
D [float] Diameter of pipe, [m]
roughness [float, optional] Roughness of pipe for use in calculating friction factor, [m]
L [float, optional] Length of pipe, [m]
Returns
dP [float] Pressure drop of the two-phase flow, [Pa]

Notes

Applicable for 0 < x < 1. Developed to be easily integrated. The contribution of each term to the overall pressure
drop can be understood in this model.

References

[1], [2], [3]

Examples

>>> Muller_Steinhagen_Heck(m=0.6, x=0.1, rhol=915., rhog=2.67, mul=180E-6,


... mug=14E-6, D=0.05, roughness=0, L=1)
793.4465457435081

fluids.two_phase.Gronnerud(m, x, rhol, rhog, mul, mug, D, roughness=0, L=1)


Calculates two-phase pressure drop with the Gronnerud correlation as presented in [2], [3], and [4].

∆𝑃𝑓 𝑟𝑖𝑐𝑡𝑖𝑜𝑛 = ∆𝑃𝑔𝑑 𝜑2𝑙𝑜


⎡ ⎤
(︂ )︂ 𝜌𝑙
𝑑𝑃 𝜌𝑔
𝜑𝑔𝑑 = 1 + )︁0.25 − 1⎦
⎢ ⎥
𝑑𝐿
⎣ (︁
𝐹𝑟 𝜇𝑙
𝜇𝑔
(︂ )︂
𝑑𝑃
= 𝑓𝐹 𝑟 𝑥 + 4(𝑥1.8 − 𝑥10 𝑓𝐹0.5
[︀ ]︀
𝑟)
𝑑𝐿 𝐹𝑟
(︂ )︂2
1
𝑓𝐹 𝑟 = 𝐹 𝑟𝑙0.3 + 0.0055 ln
𝐹 𝑟𝑙
𝐺2𝑡𝑝
𝐹 𝑟𝑙 =
𝑔𝐷𝜌2𝑙
Parameters
m [float] Mass flow rate of fluid, [kg/s]

384 Chapter 2. API Reference


Fluids Documentation, Release 0.1

x [float] Quality of fluid, [-]


rhol [float] Liquid density, [kg/m^3]
rhog [float] Gas density, [kg/m^3]
mul [float] Viscosity of liquid, [Pa*s]
mug [float] Viscosity of gas, [Pa*s]
D [float] Diameter of pipe, [m]
roughness [float, optional] Roughness of pipe for use in calculating friction factor, [m]
L [float, optional] Length of pipe, [m]
Returns
dP [float] Pressure drop of the two-phase flow, [Pa]

Notes

Developed for evaporators. Applicable from 0 < x < 1.


In the model, if Fr_l is more than 1, f_Fr is set to 1.

References

[1], [2], [3], [4]

Examples

>>> Gronnerud(m=0.6, x=0.1, rhol=915., rhog=2.67, mul=180E-6, mug=14E-6,


... D=0.05, roughness=0, L=1)
384.1254114447411

fluids.two_phase.Lombardi_Pedrocchi(m, x, rhol, rhog, sigma, D, L=1)


Calculates two-phase pressure drop with the Lombardi-Pedrocchi (1972) correlation from [1] as shown in [2]
and [3].
0.83𝐺1.4
𝑡𝑝 𝜎
0.4
𝐿
∆𝑃𝑡𝑝 = 1.2 0.866
𝐷 𝜌ℎ

Parameters
m [float] Mass flow rate of fluid, [kg/s]
x [float] Quality of fluid, [-]
rhol [float] Liquid density, [kg/m^3]
rhog [float] Gas density, [kg/m^3]
sigma [float] Surface tension, [N/m]
D [float] Diameter of pipe, [m]
L [float, optional] Length of pipe, [m]
Returns
dP [float] Pressure drop of the two-phase flow, [Pa]

2.22. Two phase flow (fluids.two_phase) 385


Fluids Documentation, Release 0.1

Notes

This is a purely empirical method. [3] presents a review of this and other correlations. It did not perform best,
but there were also correlations worse than it.

References

[1], [2], [3]

Examples

>>> Lombardi_Pedrocchi(m=0.6, x=0.1, rhol=915., rhog=2.67, sigma=0.045,


... D=0.05, L=1)
1567.328374498781

fluids.two_phase.Jung_Radermacher(m, x, rhol, rhog, mul, mug, D, roughness=0, L=1)


Calculates two-phase pressure drop with the Jung-Radermacher (1989) correlation, also shown in [2] and [3].
∆𝑃𝑡𝑝
= 𝜑2𝑡𝑝
∆𝑃𝑙𝑜
−1.47
𝜑2𝑡𝑝 = 12.82𝑋𝑡𝑡 (1 − 𝑥)1.8
Parameters
m [float] Mass flow rate of fluid, [kg/s]
x [float] Quality of fluid, [-]
rhol [float] Liquid density, [kg/m^3]
rhog [float] Gas density, [kg/m^3]
mul [float] Viscosity of liquid, [Pa*s]
mug [float] Viscosity of gas, [Pa*s]
D [float] Diameter of pipe, [m]
roughness [float, optional] Roughness of pipe for use in calculating friction factor, [m]
L [float, optional] Length of pipe, [m]
Returns
dP [float] Pressure drop of the two-phase flow, [Pa]

Notes

Applicable for 0 < x < 1. Developed for the annular flow regime in turbulent-turbulent flow.

References

[1], [2], [3]

386 Chapter 2. API Reference


Fluids Documentation, Release 0.1

Examples

>>> Jung_Radermacher(m=0.6, x=0.1, rhol=915., rhog=2.67, mul=180E-6,


... mug=14E-6, D=0.05, roughness=0, L=1)
552.0686123725571

fluids.two_phase.Tran(m, x, rhol, rhog, mul, mug, sigma, D, roughness=0, L=1)


Calculates two-phase pressure drop with the Tran (2000) correlation, also shown in [2] and [3].

∆𝑃 = 𝑑𝑃𝑙𝑜 𝜑2𝑙𝑜

𝜑2𝑙𝑜 = 1 + (4.3Γ2 − 1)[Co · 𝑥0.875 (1 − 𝑥)0.875 + 𝑥1.75 ]


(︀ Δ𝑃 )︀
𝐿 𝑔𝑜
Γ2 = (︀ Δ𝑃 )︀
𝐿 𝑙𝑜
Parameters
m [float] Mass flow rate of fluid, [kg/s]
x [float] Quality of fluid, [-]
rhol [float] Liquid density, [kg/m^3]
rhog [float] Gas density, [kg/m^3]
mul [float] Viscosity of liquid, [Pa*s]
mug [float] Viscosity of gas, [Pa*s]
sigma [float] Surface tension, [N/m]
D [float] Diameter of pipe, [m]
roughness [float, optional] Roughness of pipe for use in calculating friction factor, [m]
L [float, optional] Length of pipe, [m]
Returns
dP [float] Pressure drop of the two-phase flow, [Pa]

Notes

Developed for boiling refrigerants in channels with hydraulic diameters of 2.4 mm to 2.92 mm.

References

[1], [2], [3]

Examples

>>> Tran(m=0.6, x=0.1, rhol=915., rhog=2.67, mul=180E-6, mug=14E-6,


... sigma=0.0487, D=0.05, roughness=0, L=1)
423.2563312951232

2.22. Two phase flow (fluids.two_phase) 387


Fluids Documentation, Release 0.1

fluids.two_phase.Chen_Friedel(m, x, rhol, rhog, mul, mug, sigma, D, roughness=0, L=1)


Calculates two-phase pressure drop with the Chen modification of the Friedel correlation, as given in [1] and
also shown in [2] and [3].

∆𝑃 = ∆𝑃𝐹 𝑟𝑖𝑒𝑑𝑒𝑙 Ω

For Bo < 2.5:


0.0333𝑅𝑒0.45
𝑙𝑜
Ω=
𝑅𝑒𝑔0.09 (1 + 0.4 exp(−𝐵𝑜))

For Bo >= 2.5:


𝑊 𝑒0.2
Ω=
2.5 + 0.06𝐵𝑜
Parameters
m [float] Mass flow rate of fluid, [kg/s]
x [float] Quality of fluid, [-]
rhol [float] Liquid density, [kg/m^3]
rhog [float] Gas density, [kg/m^3]
mul [float] Viscosity of liquid, [Pa*s]
mug [float] Viscosity of gas, [Pa*s]
sigma [float] Surface tension, [N/m]
D [float] Diameter of pipe, [m]
roughness [float, optional] Roughness of pipe for use in calculating friction factor, [m]
L [float, optional] Length of pipe, [m]
Returns
dP [float] Pressure drop of the two-phase flow, [Pa]

Notes

Applicable ONLY to mini/microchannels; yields drastically too low pressure drops for larger channels. For
more details, see the Friedel correlation.
It is not explicitly stated in [1] how to calculate the liquid mixture density for use in calculation of Weber
number; the homogeneous model is assumed as it is used in the Friedel model.
The bond number used here is 1/4 the normal value, i.e.:
𝑔(𝜌𝑙 − 𝜌𝑔 )𝐷2
𝐵𝑜 =
4𝜎

References

[1], [2], [3]

Examples

388 Chapter 2. API Reference


Fluids Documentation, Release 0.1

>>> Chen_Friedel(m=.0005, x=0.9, rhol=950., rhog=1.4, mul=1E-3, mug=1E-5,


... sigma=0.02, D=0.003, roughness=0, L=1)
6249.247540588871

fluids.two_phase.Zhang_Webb(m, x, rhol, mul, P, Pc, D, roughness=0, L=1)


Calculates two-phase pressure drop with the Zhang-Webb (2001) correlation as shown in [1] and also given in
[2].
(︂ )︂−1 (︂ )︂−1.64
𝑃 𝑃
𝜑2𝑙𝑜 = (1 − 𝑥)2 + 2.87𝑥2 + 1.68𝑥0.8 (1 − 𝑥)0.25
𝑃𝑐 𝑃𝑐

Parameters
m [float] Mass flow rate of fluid, [kg/s]
x [float] Quality of fluid, [-]
rhol [float] Liquid density, [kg/m^3]
mul [float] Viscosity of liquid, [Pa*s]
P [float] Pressure of fluid, [Pa]
Pc [float] Critical pressure of fluid, [Pa]
D [float] Diameter of pipe, [m]
roughness [float, optional] Roughness of pipe for use in calculating friction factor, [m]
L [float, optional] Length of pipe, [m]
Returns
dP [float] Pressure drop of the two-phase flow, [Pa]

Notes

Applicable for 0 < x < 1. Corresponding-states method developed with R-134A, R-22 and R-404A in tubes of
hydraulic diameters of 2.13 mm, 6.25 mm, and 3.25 mm. For the author’s 119 data points, the mean deviation
was 11.5%. Recommended for reduced pressures larger than 0.2 and tubes of diameter 1-7 mm.
Does not require known properties for the gas phase.

References

[1], [2]

Examples

>>> Zhang_Webb(m=0.6, x=0.1, rhol=915., mul=180E-6, P=2E5, Pc=4055000,


... D=0.05, roughness=0, L=1)
712.0999804205621

fluids.two_phase.Xu_Fang(m, x, rhol, rhog, mul, mug, sigma, D, roughness=0, L=1)


Calculates two-phase pressure drop with the Xu and Fang (2013) correlation. Developed after a comprehensive
review of available correlations, likely meaning it is quite accurate.

∆𝑃 = ∆𝑃𝑙𝑜 𝜑2𝑙𝑜

2.22. Two phase flow (fluids.two_phase) 389


Fluids Documentation, Release 0.1

𝜑2𝑙𝑜 = 𝑌 2 𝑥3 + (1 − 𝑥2.59 )0.632 [1 + 2𝑥1.17 (𝑌 2 − 1) + 0.00775𝑥−0.475 𝐹 𝑟𝑡𝑝


0.535
𝑊 𝑒0.188
𝑡𝑝 ]
∆𝑃𝑔𝑜
𝑌2 =
∆𝑃𝑙𝑜
𝐺2𝑡𝑝
𝐹 𝑟𝑡𝑝 =
𝑔𝐷𝜌2𝑡𝑝
𝐺2𝑡𝑝 𝐷
𝑊 𝑒𝑡𝑝 =
𝜎𝜌𝑡𝑝
1 1−𝑥 𝑥
= +
𝜌𝑡𝑝 𝜌𝑙 𝜌𝑔
Parameters
m [float] Mass flow rate of fluid, [kg/s]
x [float] Quality of fluid, [-]
rhol [float] Liquid density, [kg/m^3]
rhog [float] Gas density, [kg/m^3]
mul [float] Viscosity of liquid, [Pa*s]
mug [float] Viscosity of gas, [Pa*s]
sigma [float] Surface tension, [N/m]
D [float] Diameter of pipe, [m]
roughness [float, optional] Roughness of pipe for use in calculating friction factor, [m]
L [float, optional] Length of pipe, [m]
Returns
dP [float] Pressure drop of the two-phase flow, [Pa]

References

[1]

Examples

>>> Xu_Fang(m=0.6, x=0.1, rhol=915., rhog=2.67, mul=180E-6, mug=14E-6,


... sigma=0.0487, D=0.05, roughness=0, L=1)
604.0595632116267

fluids.two_phase.Yu_France(m, x, rhol, rhog, mul, mug, D, roughness=0, L=1)


Calculates two-phase pressure drop with the Yu, France, Wambsganss, and Hull (2002) correlation given in [1]
and reviewed in [2] and [3].

∆𝑃 = ∆𝑃𝑙 𝜑2𝑙

𝜑2𝑙 = 𝑋 −1.9
(︂ )︂0.5 (︂
1 − 𝑥 𝑅𝑒0.1
)︂
𝜌𝑔 𝑔
𝑋 = 18.65
𝜌𝑙 𝑥 𝑅𝑒0.5
𝑙
Parameters

390 Chapter 2. API Reference


Fluids Documentation, Release 0.1

m [float] Mass flow rate of fluid, [kg/s]


x [float] Quality of fluid, [-]
rhol [float] Liquid density, [kg/m^3]
rhog [float] Gas density, [kg/m^3]
mul [float] Viscosity of liquid, [Pa*s]
mug [float] Viscosity of gas, [Pa*s]
D [float] Diameter of pipe, [m]
roughness [float, optional] Roughness of pipe for use in calculating friction factor, [m]
L [float, optional] Length of pipe, [m]
Returns
dP [float] Pressure drop of the two-phase flow, [Pa]

References

[1], [2], [3]

Examples

>>> Yu_France(m=0.6, x=.1, rhol=915., rhog=2.67, mul=180E-6, mug=14E-6,


... D=0.05, roughness=0, L=1)
1146.983322553957

fluids.two_phase.Wang_Chiang_Lu(m, x, rhol, rhog, mul, mug, D, roughness=0, L=1)


Calculates two-phase pressure drop with the Wang, Chiang, and Lu (1997) correlation given in [1] and reviewed
in [2] and [3].

∆𝑃 = ∆𝑃𝑔 𝜑2𝑔

𝜑2𝑔 = 1 + 9.397𝑋 0.62 + 0.564𝑋 2.45 for 𝐺 >= 200𝑘𝑔/𝑚2 /𝑠

𝜑2𝑔 = 1 + 𝐶𝑋 + 𝑋 2 for lower mass fluxes


(︂ )︂−2.15 (︂ )︂5.1
0.128 0.938 𝜌𝑙 𝜇𝑙
𝐶 = 0.000004566𝑋 𝑅𝑒𝑙𝑜
𝜌𝑔 𝜇𝑔
∆𝑃𝑙
𝑋2 =
∆𝑃𝑔
Parameters
m [float] Mass flow rate of fluid, [kg/s]
x [float] Quality of fluid, [-]
rhol [float] Liquid density, [kg/m^3]
rhog [float] Gas density, [kg/m^3]
mul [float] Viscosity of liquid, [Pa*s]
mug [float] Viscosity of gas, [Pa*s]
D [float] Diameter of pipe, [m]

2.22. Two phase flow (fluids.two_phase) 391


Fluids Documentation, Release 0.1

roughness [float, optional] Roughness of pipe for use in calculating friction factor, [m]
L [float, optional] Length of pipe, [m]
Returns
dP [float] Pressure drop of the two-phase flow, [Pa]

References

[1], [2], [3]

Examples

>>> Wang_Chiang_Lu(m=0.6, x=0.1, rhol=915., rhog=2.67, mul=180E-6,


... mug=14E-6, D=0.05, roughness=0, L=1)
448.29981978639154

fluids.two_phase.Hwang_Kim(m, x, rhol, rhog, mul, mug, sigma, D, roughness=0, L=1)


Calculates two-phase pressure drop with the Hwang and Kim (2006) correlation as in [1], also presented in [2]
and [3].

∆𝑃 = ∆𝑃𝑙 𝜑2𝑙

𝐶 = 0.227𝑅𝑒0.452
𝑙𝑜 𝑋 −0.32 𝐶𝑜−0.82
𝐶 1
𝜑2𝑙 = 1 + + 2
𝑋 𝑋
∆𝑃𝑙
𝑋2 =
∆𝑃𝑔
Parameters
m [float] Mass flow rate of fluid, [kg/s]
x [float] Quality of fluid, [-]
rhol [float] Liquid density, [kg/m^3]
rhog [float] Gas density, [kg/m^3]
mul [float] Viscosity of liquid, [Pa*s]
mug [float] Viscosity of gas, [Pa*s]
sigma [float] Surface tension, [N/m]
D [float] Diameter of pipe, [m]
roughness [float, optional] Roughness of pipe for use in calculating friction factor, [m]
L [float, optional] Length of pipe, [m]
Returns
dP [float] Pressure drop of the two-phase flow, [Pa]

Notes

Developed with data for microtubes of diameter 0.244 mm and 0.792 mm only. Not likely to be suitable to
larger diameters.

392 Chapter 2. API Reference


Fluids Documentation, Release 0.1

References

[1], [2], [3]

Examples

>>> Hwang_Kim(m=0.0005, x=0.1, rhol=915., rhog=2.67, mul=180E-6, mug=14E-6,


... sigma=0.0487, D=0.003, roughness=0, L=1)
798.302774184557

fluids.two_phase.Zhang_Hibiki_Mishima(m, x, rhol, rhog, mul, mug, sigma, D, roughness=0,


L=1, flowtype=’adiabatic vapor’)
Calculates two-phase pressure drop with the Zhang, Hibiki, Mishima and (2010) correlation as in [1], also
presented in [2] and [3].

∆𝑃 = ∆𝑃𝑙 𝜑2𝑙

𝐶 1
𝜑2𝑙 = 1 + + 2
𝑋 𝑋
∆𝑃𝑙
𝑋2 =
∆𝑃𝑔
For adiabatic liquid-vapor two-phase flow:

𝐶 = 21[1 − exp(−0.142/𝐶𝑜)]

For adiabatic liquid-gas two-phase flow:

𝐶 = 21[1 − exp(−0.674/𝐶𝑜)]

For flow boiling:

𝐶 = 21[1 − exp(−0.358/𝐶𝑜)]

Parameters
m [float] Mass flow rate of fluid, [kg/s]
x [float] Quality of fluid, [-]
rhol [float] Liquid density, [kg/m^3]
rhog [float] Gas density, [kg/m^3]
mul [float] Viscosity of liquid, [Pa*s]
mug [float] Viscosity of gas, [Pa*s]
sigma [float] Surface tension, [N/m]
D [float] Diameter of pipe, [m]
roughness [float, optional] Roughness of pipe for use in calculating friction factor, [m]
L [float, optional] Length of pipe, [m]
flowtype [str] One of ‘adiabatic vapor’, ‘adiabatic gas’, or ‘flow boiling’
Returns
dP [float] Pressure drop of the two-phase flow, [Pa]

2.22. Two phase flow (fluids.two_phase) 393


Fluids Documentation, Release 0.1

Notes

Seems fairly reliable.

References

[1], [2], [3]

Examples

>>> Zhang_Hibiki_Mishima(m=0.0005, x=0.1, rhol=915., rhog=2.67, mul=180E-6,


... mug=14E-6, sigma=0.0487, D=0.003, roughness=0, L=1)
444.9718476894804

fluids.two_phase.Mishima_Hibiki(m, x, rhol, rhog, mul, mug, sigma, D, roughness=0, L=1)


Calculates two-phase pressure drop with the Mishima and Hibiki (1996) correlation as in [1], also presented in
[2] and [3].

∆𝑃 = ∆𝑃𝑙 𝜑2𝑙

𝐶 = 21[1 − exp(−319𝐷)]
𝐶 1
𝜑2𝑙 = 1 + + 2
𝑋 𝑋
∆𝑃𝑙
𝑋2 =
∆𝑃𝑔
Parameters
m [float] Mass flow rate of fluid, [kg/s]
x [float] Quality of fluid, [-]
rhol [float] Liquid density, [kg/m^3]
rhog [float] Gas density, [kg/m^3]
mul [float] Viscosity of liquid, [Pa*s]
mug [float] Viscosity of gas, [Pa*s]
sigma [float] Surface tension, [N/m]
D [float] Diameter of pipe, [m]
roughness [float, optional] Roughness of pipe for use in calculating friction factor, [m]
L [float, optional] Length of pipe, [m]
Returns
dP [float] Pressure drop of the two-phase flow, [Pa]

References

[1], [2], [3]

394 Chapter 2. API Reference


Fluids Documentation, Release 0.1

Examples

>>> Mishima_Hibiki(m=0.6, x=0.1, rhol=915., rhog=2.67, mul=180E-6,


... mug=14E-6, sigma=0.0487, D=0.05, roughness=0, L=1)
732.4268200606265

fluids.two_phase.Bankoff(m, x, rhol, rhog, mul, mug, D, roughness=0, L=1)


Calculates two-phase pressure drop with the Bankoff (1960) correlation, as shown in [2], [3], and [4].
7/4
∆𝑃𝑡𝑝 = 𝜑𝑙 ∆𝑃𝑙
[︂ (︂ )︂]︂3/7 [︂ (︂ )︂]︂
1 𝜌𝑔 𝜌𝑙
𝜑𝑙 = 1−𝛾 1− 1+𝑥 −1
1−𝑥 𝜌𝑙 𝜌𝑔
(︁ )︁
𝜌
0.71 + 2.35 𝜌𝑔𝑙
𝛾= 𝜌𝑔
1 + 1−𝑥𝑥 · 𝜌𝑙

Parameters
m [float] Mass flow rate of fluid, [kg/s]
x [float] Quality of fluid, [-]
rhol [float] Liquid density, [kg/m^3]
rhog [float] Gas density, [kg/m^3]
mul [float] Viscosity of liquid, [Pa*s]
mug [float] Viscosity of gas, [Pa*s]
D [float] Diameter of pipe, [m]
roughness [float, optional] Roughness of pipe for use in calculating friction factor, [m]
L [float, optional] Length of pipe, [m]
Returns
dP [float] Pressure drop of the two-phase flow, [Pa]

Notes

This correlation is not actually shown in [1]. Its origin is unknown. The author recommends against using this.

References

[1], [2], [3], [4]

Examples

>>> Bankoff(m=0.6, x=0.1, rhol=915., rhog=2.67, mul=180E-6, mug=14E-6,


... D=0.05, roughness=0, L=1)
4746.059442453399

2.22. Two phase flow (fluids.two_phase) 395


Fluids Documentation, Release 0.1

2.23 Two-phase flow voidage (fluids.two_phase_voidage)

fluids.two_phase_voidage.Thom(x, rhol, rhog, mul, mug)


Calculates void fraction in two-phase flow according to the model of [1] as given in [2].
[︃ (︂ )︂ (︂ )︂0.89 (︂ )︂0.18 ]︃−1
1−𝑥 𝜌𝑔 𝜇𝑙
𝛼= 1+
𝑥 𝜌𝑙 𝜇𝑔

Parameters
x [float] Quality at the specific tube interval []
rhol [float] Density of the liquid [kg/m^3]
rhog [float] Density of the gas [kg/m^3]
mul [float] Viscosity of liquid [Pa*s]
mug [float] Viscosity of gas [Pa*s]
Returns
alpha [float] Void fraction (area of gas / total area of channel), [-]

Notes

Based on experimental data for boiling of water. [3] presents a slightly different model. However, its results are
almost identical. A comparison can be found in the unit tests. Neither expression was found in [1] in a brief
review.

References

[1], [2], [3]

Examples

>>> Thom(.4, 800, 2.5, 1E-3, 1E-5)


0.9801482164042417

fluids.two_phase_voidage.Zivi(x, rhol, rhog)


Calculates void fraction in two-phase flow according to the model of [1] as given in [2] and [3].
[︃ (︂ )︂ (︂ )︂2/3 ]︃−1
1−𝑥 𝜌𝑔
𝛼= 1+
𝑥 𝜌𝑙

Parameters
x [float] Quality at the specific tube interval []
rhol [float] Density of the liquid [kg/m^3]
rhog [float] Density of the gas [kg/m^3]
Returns
alpha [float] Void fraction (area of gas / total area of channel), [-]

396 Chapter 2. API Reference


Fluids Documentation, Release 0.1

Notes

Based on experimental data for boiling of water. More complicated variants of this are also in [1].

References

[1], [2], [3]

Examples

>>> Zivi(.4, 800, 2.5)


0.9689339909056356

fluids.two_phase_voidage.Smith(x, rhol, rhog)


Calculates void fraction in two-phase flow according to the model of [1], also given in [2] and [3].

(︀ 1−𝑥 )︀ ⎪−1
⎧ ⎡ ⎯ ⎤⎫
⎸ 𝜌𝑙

⎨ (︂
1−𝑥
)︂ (︂
𝜌𝑔
)︂ ⎸ 𝜌 + 𝐾 𝑥 ⎥⎬
⎷ 𝑔
𝛼= 1+ ⎣𝐾 + (1 − 𝐾)

1 + 𝐾 1−𝑥
(︀ )︀ ⎦

⎩ 𝑥 𝜌𝑙 𝑥

Parameters
x [float] Quality at the specific tube interval []
rhol [float] Density of the liquid [kg/m^3]
rhog [float] Density of the gas [kg/m^3]
Returns
alpha [float] Void fraction (area of gas / total area of channel), [-]

Notes

[1] is an easy to read paper and has been reviewed. The form of the expression here is rearranged somewhat
differently than in [1] but has been verified to be numerically equivalent. The form of this in [3] is missing a
square root on a bracketed term; this appears in multiple papers by the authors.

References

[1], [2], [3]

Examples

>>> Smith(.4, 800, 2.5)


0.959981235534199

fluids.two_phase_voidage.Fauske(x, rhol, rhog)


Calculates void fraction in two-phase flow according to the model of [1], as given in [2] and [3].
[︃ (︂ )︂ (︂ )︂0.5 ]︃−1
1−𝑥 𝜌𝑔
𝛼= 1+
𝑥 𝜌𝑙

2.23. Two-phase flow voidage (fluids.two_phase_voidage) 397


Fluids Documentation, Release 0.1

Parameters
x [float] Quality at the specific tube interval []
rhol [float] Density of the liquid [kg/m^3]
rhog [float] Density of the gas [kg/m^3]
Returns
alpha [float] Void fraction (area of gas / total area of channel), [-]

Notes

[1] has not been reviewed. However, both [2] and [3] present it the same way.

References

[1], [2], [3]

Examples

>>> Fauske(.4, 800, 2.5)


0.9226347262627932

fluids.two_phase_voidage.Chisholm_voidage(x, rhol, rhog)


Calculates void fraction in two-phase flow according to the model of [1], as given in [2] and [3].
[︃ (︂ )︂ (︂ )︂ √︃ (︂ )︂]︃−1
1−𝑥 𝜌𝑔 𝜌𝑙
𝛼= 1+ 1−𝑥 1−
𝑥 𝜌𝑙 𝜌𝑔

Parameters
x [float] Quality at the specific tube interval []
rhol [float] Density of the liquid [kg/m^3]
rhog [float] Density of the gas [kg/m^3]
Returns
alpha [float] Void fraction (area of gas / total area of channel), [-]

Notes

[1] has not been reviewed. However, both [2] and [3] present it the same way.

References

[1], [2], [3]

Examples

398 Chapter 2. API Reference


Fluids Documentation, Release 0.1

>>> Chisholm_voidage(.4, 800, 2.5)


0.949525900374774

fluids.two_phase_voidage.Turner_Wallis(x, rhol, rhog, mul, mug)


Calculates void fraction in two-phase flow according to the model of [1], as given in [2] and [3].
[︃ (︂ )︂0.72 (︂ )︂0.4 (︂ )︂0.08 ]︃−1
1−𝑥 𝜌𝑔 𝜇𝑙
𝛼= 1+
𝑥 𝜌𝑙 𝜇𝑔

Parameters
x [float] Quality at the specific tube interval []
rhol [float] Density of the liquid [kg/m^3]
rhog [float] Density of the gas [kg/m^3]
mul [float] Viscosity of liquid [Pa*s]
mug [float] Viscosity of gas [Pa*s]
Returns
alpha [float] Void fraction (area of gas / total area of channel), [-]

Notes

[1] has not been reviewed. However, both [2] and [3] present it the same way, if slightly differently rearranged.

References

[1], [2], [3]

Examples

>>> Turner_Wallis(.4, 800, 2.5, 1E-3, 1E-5)


0.8384824581634625

fluids.two_phase_voidage.homogeneous(x, rhol, rhog)


Calculates void fraction in two-phase flow according to the homogeneous flow model, reviewed in [1], [2], and
[3].
1
𝛼= (︀ 1−𝑥 )︀ 𝜌𝑔
1+ 𝑥 𝜌𝑙

Parameters
x [float] Quality at the specific tube interval []
rhol [float] Density of the liquid [kg/m^3]
rhog [float] Density of the gas [kg/m^3]
Returns
alpha [float] Void fraction (area of gas / total area of channel), [-]

2.23. Two-phase flow voidage (fluids.two_phase_voidage) 399


Fluids Documentation, Release 0.1

References

[1], [2], [3]

Examples

>>> homogeneous(.4, 800, 2.5)


0.995334370139969

fluids.two_phase_voidage.Chisholm_Armand(x, rhol, rhog)


Calculates void fraction in two-phase flow according to the model presented in [1] based on that of [2] as shown
in [3], [4], and [5].
𝛼ℎ
𝛼=
𝛼ℎ + (1 − 𝛼ℎ )0.5

Parameters
x [float] Quality at the specific tube interval []
rhol [float] Density of the liquid [kg/m^3]
rhog [float] Density of the gas [kg/m^3]
Returns
alpha [float] Void fraction (area of gas / total area of channel), [-]

References

[1], [2], [3], [4], [5]

Examples

>>> Chisholm_Armand(.4, 800, 2.5)


0.9357814394262114

fluids.two_phase_voidage.Armand(x, rhol, rhog)


Calculates void fraction in two-phase flow according to the model presented in [1] as shown in [2], [3], and [4].

𝛼 = 0.833𝛼ℎ

Parameters
x [float] Quality at the specific tube interval []
rhol [float] Density of the liquid [kg/m^3]
rhog [float] Density of the gas [kg/m^3]
Returns
alpha [float] Void fraction (area of gas / total area of channel), [-]

References

[1], [2], [3], [4]

400 Chapter 2. API Reference


Fluids Documentation, Release 0.1

Examples

>>> Armand(.4, 800, 2.5)


0.8291135303265941

fluids.two_phase_voidage.Nishino_Yamazaki(x, rhol, rhog)


Calculates void fraction in two-phase flow according to the model presented in [1] as shown in [2].
(︂ )︂0.5
1 − 𝑥 𝜌𝑔
𝛼=1− 𝛼ℎ0.5
𝑥 𝜌𝑙

Parameters
x [float] Quality at the specific tube interval []
rhol [float] Density of the liquid [kg/m^3]
rhog [float] Density of the gas [kg/m^3]
Returns
alpha [float] Void fraction (area of gas / total area of channel), [-]

Notes

[1] is in Japanese.
[3] either shows this model as iterative in terms of voidage, or forgot to add a H subscript to its second voidage
term; the second is believed more likely.

References

[1], [2], [3]

Examples

>>> Nishino_Yamazaki(.4, 800, 2.5)


0.931694583962682

fluids.two_phase_voidage.Guzhov(x, rhol, rhog, m, D)


Calculates void fraction in two-phase flow according to the model in [1] as shown in [2] and [3].
√︀
𝛼 = 0.81[1 − exp(−2.2 𝐹 𝑟𝑡𝑝 )]𝛼ℎ
𝐺2𝑡𝑝
𝐹 𝑟𝑡𝑝 =
𝑔𝐷𝜌2𝑡𝑝
(︂ )︂−1
1−𝑥 𝑥
𝜌𝑡𝑝 = +
𝜌𝑙 𝜌𝑔

Parameters
x [float] Quality at the specific tube interval []
rhol [float] Density of the liquid [kg/m^3]
rhog [float] Density of the gas [kg/m^3]

2.23. Two-phase flow voidage (fluids.two_phase_voidage) 401


Fluids Documentation, Release 0.1

m [float] Mass flow rate of both phases, [kg/s]


D [float] Diameter of the channel, [m]
Returns
alpha [float] Void fraction (area of gas / total area of channel), [-]

References

[1], [2], [3]

Examples

>>> Guzhov(.4, 800, 2.5, 1, .3)


0.7626030108534588

fluids.two_phase_voidage.Kawahara(x, rhol, rhog, D)


Calculates void fraction in two-phase flow according to the model presented in [1], also reviewed in [2] and [3].
This expression is for microchannels.

𝐶1 𝛼ℎ0.5
𝛼=
1 − 𝐶2 𝛼ℎ0.5

Parameters
x [float] Quality at the specific tube interval []
rhol [float] Density of the liquid [kg/m^3]
rhog [float] Density of the gas [kg/m^3]
D [float] Diameter of the channel, [m]
Returns
alpha [float] Void fraction (area of gas / total area of channel), [-]

Notes

C1 and C2 were constants for different diameters. Only diameters of 100 and 50 mircometers were studied in
[1]. Here, the coefficients are distributed for three ranges, > 250 micrometers, 250-75 micrometers, and < 75
micrometers.
The Armand model is used for the first, C1 and C2 are 0.03 and 0.97 for the second, and C1 and C2 are 0.02
and 0.98 for the third.

References

[1], [2], [3]

402 Chapter 2. API Reference


Fluids Documentation, Release 0.1

Examples

>>> Kawahara(.4, 800, 2.5, 100E-6)


0.9276148194410238

fluids.two_phase_voidage.Baroczy(x, rhol, rhog, mul, mug)


Calculates void fraction in two-phase flow according to the model of [1] as given in [2], [3], and [4].
[︃ (︂ )︂0.74 (︂ )︂0.65 (︂ )︂0.13 ]︃−1
1−𝑥 𝜌𝑔 𝜇𝑙
𝛼= 1+
𝑥 𝜌𝑙 𝜇𝑔

Parameters
x [float] Quality at the specific tube interval []
rhol [float] Density of the liquid [kg/m^3]
rhog [float] Density of the gas [kg/m^3]
mul [float] Viscosity of liquid [Pa*s]
mug [float] Viscosity of gas [Pa*s]
Returns
alpha [float] Void fraction (area of gas / total area of channel), [-]

References

[1], [2], [3], [4]

Examples

>>> Baroczy(.4, 800, 2.5, 1E-3, 1E-5)


0.9453544598460807

fluids.two_phase_voidage.Tandon_Varma_Gupta(x, rhol, rhog, mul, mug, m, D)


Calculates void fraction in two-phase flow according to the model of [1] also given in [2], [3], and [4].
For 50 < Rel < 1125:

𝛼 = 1 − 1.928𝑅𝑒𝑙−0.315 [𝐹 (𝑋𝑡𝑡 )]−1 + 0.9293𝑅𝑒𝑙−0.63 [𝐹 (𝑋𝑡𝑡 )]−2

For Rel > 1125:

𝛼 = 1 − 0.38𝑅𝑒−0.088
𝑙 [𝐹 (𝑋𝑡𝑡 )]−1 + 0.0361𝑅𝑒𝑙−0.176 [𝐹 (𝑋𝑡𝑡 )]−2

−1 −0.476
𝐹 (𝑋𝑡𝑡 ) = 0.15[𝑋𝑡𝑡 + 2.85𝑋𝑡𝑡 ]
Parameters
x [float] Quality at the specific tube interval []
rhol [float] Density of the liquid [kg/m^3]
rhog [float] Density of the gas [kg/m^3]
mul [float] Viscosity of liquid [Pa*s]

2.23. Two-phase flow voidage (fluids.two_phase_voidage) 403


Fluids Documentation, Release 0.1

mug [float] Viscosity of gas [Pa*s]


m [float] Mass flow rate of both phases, [kg/s]
D [float] Diameter of the channel, [m]
Returns
alpha [float] Void fraction (area of gas / total area of channel), [-]

Notes

[1] does not specify how it defines the liquid Reynolds number. [2] disagrees with [3] and [4]; the later variant
was selected, with:
𝐺𝑡𝑝 𝐷
𝑅𝑒𝑙 =
𝜇𝑙
The lower limit on Reynolds number is not enforced.

References

[1], [2], [3], [4]

Examples

>>> Tandon_Varma_Gupta(.4, 800, 2.5, 1E-3, 1E-5, m=1, D=0.3)


0.9228265670341428

fluids.two_phase_voidage.Harms(x, rhol, rhog, mul, mug, m, D)


Calculates void fraction in two-phase flow according to the model of [1] also given in [2] and [3].
[︃ (︂ )︂−0.5 ]︃2
7.242
𝛼 = 1 − 10.06𝑅𝑒𝑙−0.875 (1.74 + 0.104𝑅𝑒0.5
𝑙 )
2
1.376 + 1.655
𝑋𝑡𝑡

𝐺𝑡𝑝 (1 − 𝑥)𝐷
𝑅𝑒𝑙 =
𝜇𝑙
Parameters
x [float] Quality at the specific tube interval []
rhol [float] Density of the liquid [kg/m^3]
rhog [float] Density of the gas [kg/m^3]
mul [float] Viscosity of liquid [Pa*s]
mug [float] Viscosity of gas [Pa*s]
m [float] Mass flow rate of both phases, [kg/s]
D [float] Diameter of the channel, [m]
Returns
alpha [float] Void fraction (area of gas / total area of channel), [-]

404 Chapter 2. API Reference


Fluids Documentation, Release 0.1

Notes

[1] has been reviewed.

References

[1], [2], [3]

Examples

>>> Harms(.4, 800, 2.5, 1E-3, 1E-5, m=1, D=0.3)


0.9653289762907554

fluids.two_phase_voidage.Domanski_Didion(x, rhol, rhog, mul, mug)


Calculates void fraction in two-phase flow according to the model of [1] also given in [2] and [3].
if Xtt < 10:
0.8 −0.378
𝛼 = (1 + 𝑋𝑡𝑡 )

Otherwise:

𝛼 = 0.823 − 0.157 ln(𝑋𝑡𝑡 )

Parameters
x [float] Quality at the specific tube interval []
rhol [float] Density of the liquid [kg/m^3]
rhog [float] Density of the gas [kg/m^3]
mul [float] Viscosity of liquid [Pa*s]
mug [float] Viscosity of gas [Pa*s]
Returns
alpha [float] Void fraction (area of gas / total area of channel), [-]

Notes

[1] has been reviewed. [2] gives an exponent of -0.38 instead of -0.378 as is in [1]. [3] describes only the novel
half of the correlation. The portion for Xtt > 10 is novel; the other is said to be from their 31st reference, Wallis.
There is a discontinuity at Xtt = 10.

References

[1], [2], [3]

2.23. Two-phase flow voidage (fluids.two_phase_voidage) 405


Fluids Documentation, Release 0.1

Examples

>>> Domanski_Didion(.4, 800, 2.5, 1E-3, 1E-5)


0.9355795597059169

fluids.two_phase_voidage.Graham(x, rhol, rhog, mul, mug, m, D, g=9.80665)


Calculates void fraction in two-phase flow according to the model of [1] also given in [2] and [3].

𝛼 = 1 − exp{−1 − 0.3 ln(𝐹 𝑡) − 0.0328[ln(𝐹 𝑡)]2 }


[︃ ]︃0.5
𝐺2𝑡𝑝 𝑥3
𝐹𝑡 =
(1 − 𝑥)𝜌2𝑔 𝑔𝐷
𝛼 = 0 for 𝐹𝑡 ≤ 0.01032
Parameters
x [float] Quality at the specific tube interval []
rhol [float] Density of the liquid [kg/m^3]
rhog [float] Density of the gas [kg/m^3]
mul [float] Viscosity of liquid [Pa*s]
mug [float] Viscosity of gas [Pa*s]
m [float] Mass flow rate of both phases, [kg/s]
D [float] Diameter of the channel, [m]
g [float, optional] Acceleration due to gravity, [m/s^2]
Returns
alpha [float] Void fraction (area of gas / total area of channel), [-]

Notes

[1] has been reviewed. [2] does not list that the expression is not real below a certain value of Ft.

References

[1], [2], [3]

Examples

>>> Graham(.4, 800, 2.5, 1E-3, 1E-5, m=1, D=0.3)


0.6403336287530644

fluids.two_phase_voidage.Yashar(x, rhol, rhog, mul, mug, m, D, g=9.80665)


Calculates void fraction in two-phase flow according to the model of [1] also given in [2] and [3].
[︂ ]︂−0.321
1
𝛼= 1+ + 𝑋𝑡𝑡
𝐹𝑡
[︃ ]︃0.5
𝐺2𝑡𝑝 𝑥3
𝐹𝑡 =
(1 − 𝑥)𝜌2𝑔 𝑔𝐷

406 Chapter 2. API Reference


Fluids Documentation, Release 0.1

Parameters
x [float] Quality at the specific tube interval []
rhol [float] Density of the liquid [kg/m^3]
rhog [float] Density of the gas [kg/m^3]
mul [float] Viscosity of liquid [Pa*s]
mug [float] Viscosity of gas [Pa*s]
m [float] Mass flow rate of both phases, [kg/s]
D [float] Diameter of the channel, [m]
g [float, optional] Acceleration due to gravity, [m/s^2]
Returns
alpha [float] Void fraction (area of gas / total area of channel), [-]

Notes

[1] has been reviewed; both [2] and [3] give it correctly.

References

[1], [2], [3]

Examples

>>> Yashar(.4, 800, 2.5, 1E-3, 1E-5, m=1, D=0.3)


0.7934893185789146

fluids.two_phase_voidage.Huq_Loth(x, rhol, rhog)


Calculates void fraction in two-phase flow according to the model of [1], also given in [2], [3], and [4].

2(1 − 𝑥)2
𝛼=1− [︁ (︁ )︁]︁0.5
𝜌𝑙
1 − 2𝑥 + 1 + 4𝑥(1 − 𝑥) 𝜌𝑔 −1

Parameters
x [float] Quality at the specific tube interval []
rhol [float] Density of the liquid [kg/m^3]
rhog [float] Density of the gas [kg/m^3]
Returns
alpha [float] Void fraction (area of gas / total area of channel), [-]

Notes

[1] has been reviewed, and matches the expressions given in the reviews [2], [3], and [4]; the form of the
expression is rearranged somewhat differently.

2.23. Two-phase flow voidage (fluids.two_phase_voidage) 407


Fluids Documentation, Release 0.1

References

[1], [2], [3], [4]

Examples

>>> Huq_Loth(.4, 800, 2.5)


0.9593868838476147

fluids.two_phase_voidage.Kopte_Newell_Chato(x, rhol, rhog, mul, mug, m, D, g=9.80665)


Calculates void fraction in two-phase flow according to the model of [1] also given in [2].

𝛼 = 1.045 − exp{−1 − 0.342 ln(𝐹 𝑡) − 0.0268[ln(𝐹 𝑡)]2 + 0.00597[ln(𝐹 𝑡)]3 }


[︃ ]︃0.5
𝐺2𝑡𝑝 𝑥3
𝐹𝑡 =
(1 − 𝑥)𝜌2𝑔 𝑔𝐷

𝛼 = 𝛼ℎ for 𝐹𝑡 ≤ 0.044
Parameters
x [float] Quality at the specific tube interval []
rhol [float] Density of the liquid [kg/m^3]
rhog [float] Density of the gas [kg/m^3]
mul [float] Viscosity of liquid [Pa*s]
mug [float] Viscosity of gas [Pa*s]
m [float] Mass flow rate of both phases, [kg/s]
D [float] Diameter of the channel, [m]
g [float, optional] Acceleration due to gravity, [m/s^2]
Returns
alpha [float] Void fraction (area of gas / total area of channel), [-]

Notes

[1] has been reviewed. If is recommended this expression not be used above Ft values of 454.

References

[1], [2]

Examples

>>> Kopte_Newell_Chato(.4, 800, 2.5, 1E-3, 1E-5, m=1, D=0.3)


0.6864466770087425

408 Chapter 2. API Reference


Fluids Documentation, Release 0.1

fluids.two_phase_voidage.Steiner(x, rhol, rhog, sigma, m, D, g=9.80665)


Calculates void fraction in two-phase flow according to the model of [1] also given in [2] and [3].
[︂ (︂ )︂ ]︂−1
𝑥 𝑥 1−𝑥 𝑣𝑔𝑚
𝛼= 𝐶0 + +
𝜌𝑔 𝜌𝑔 𝜌𝑙 𝐺

1.18(1 − 𝑥)
𝑣𝑔𝑚 = [𝑔𝜎(𝜌𝑙 − 𝜌𝑔 )]0.25
𝜌0.5
𝑙

𝐶0 = 1 + 0.12(1 − 𝑥)
Parameters
x [float] Quality at the specific tube interval []
rhol [float] Density of the liquid [kg/m^3]
rhog [float] Density of the gas [kg/m^3]
sigma [float] Surface tension of liquid [N/m]
m [float] Mass flow rate of both phases, [kg/s]
D [float] Diameter of the channel, [m]
g [float, optional] Acceleration due to gravity, [m/s^2]
Returns
alpha [float] Void fraction (area of gas / total area of channel), [-]

Notes

[1] has been reviewed.

References

[1], [2], [3]

Examples

>>> Steiner(0.4, 800., 2.5, sigma=0.02, m=1, D=0.3)


0.895950181381335

fluids.two_phase_voidage.Rouhani_1(x, rhol, rhog, sigma, m, D, g=9.80665)


Calculates void fraction in two-phase flow according to the model of [1] as given in [2] and [3].
[︂ (︂ )︂ ]︂−1
𝑥 𝑥 1−𝑥 𝑣𝑔𝑚
𝛼= 𝐶0 + +
𝜌𝑔 𝜌𝑔 𝜌𝑙 𝐺

1.18(1 − 𝑥)
𝑣𝑔𝑚 = [𝑔𝜎(𝜌𝑙 − 𝜌𝑔 )]0.25
𝜌0.5
𝑙

𝐶0 = 1 + 0.2(1 − 𝑥)
Parameters
x [float] Quality at the specific tube interval []

2.23. Two-phase flow voidage (fluids.two_phase_voidage) 409


Fluids Documentation, Release 0.1

rhol [float] Density of the liquid [kg/m^3]


rhog [float] Density of the gas [kg/m^3]
sigma [float] Surface tension of liquid [N/m]
m [float] Mass flow rate of both phases, [kg/s]
D [float] Diameter of the channel, [m]
g [float, optional] Acceleration due to gravity, [m/s^2]
Returns
alpha [float] Void fraction (area of gas / total area of channel), [-]

Notes

The expression as quoted in [2] and [3] could not be found in [1].

References

[1], [2], [3]

Examples

>>> Rouhani_1(0.4, 800., 2.5, sigma=0.02, m=1, D=0.3)


0.8588420244136714

fluids.two_phase_voidage.Rouhani_2(x, rhol, rhog, sigma, m, D, g=9.80665)


Calculates void fraction in two-phase flow according to the model of [1] as given in [2] and [3].
[︂ (︂ )︂ ]︂−1
𝑥 𝑥 1−𝑥 𝑣𝑔𝑚
𝛼= 𝐶0 + +
𝜌𝑔 𝜌𝑔 𝜌𝑙 𝐺

1.18(1 − 𝑥)
𝑣𝑔𝑚 = [𝑔𝜎(𝜌𝑙 − 𝜌𝑔 )]0.25
𝜌0.5
𝑙
(︂ )︂0.5
𝜌𝑙
𝐶0 = 1 + 0.2(1 − 𝑥)(𝑔𝐷)0.25
𝐺𝑡𝑝
Parameters
x [float] Quality at the specific tube interval []
rhol [float] Density of the liquid [kg/m^3]
rhog [float] Density of the gas [kg/m^3]
sigma [float] Surface tension of liquid [N/m]
m [float] Mass flow rate of both phases, [kg/s]
D [float] Diameter of the channel, [m]
g [float, optional] Acceleration due to gravity, [m/s^2]
Returns
alpha [float] Void fraction (area of gas / total area of channel), [-]

410 Chapter 2. API Reference


Fluids Documentation, Release 0.1

Notes

The expression as quoted in [2] and [3] could not be found in [1].

References

[1], [2], [3]

Examples

>>> Rouhani_2(0.4, 800., 2.5, sigma=0.02, m=1, D=0.3)


0.44819733138968865

fluids.two_phase_voidage.Nicklin_Wilkes_Davidson(x, rhol, rhog, m, D, g=9.80665)


Calculates void fraction in two-phase flow according to the model of [1] as given in [2] and [3].
[︂ (︂ )︂ ]︂−1
𝑥 𝑥 1−𝑥 𝑣𝑔𝑚
𝛼= 𝐶0 + +
𝜌𝑔 𝜌𝑔 𝜌𝑙 𝐺
√︀
𝑣𝑔𝑚 = 0.35 𝑔𝐷

𝐶0 = 1.2
Parameters
x [float] Quality at the specific tube interval []
rhol [float] Density of the liquid [kg/m^3]
rhog [float] Density of the gas [kg/m^3]
m [float] Mass flow rate of both phases, [kg/s]
D [float] Diameter of the channel, [m]
g [float, optional] Acceleration due to gravity, [m/s^2]
Returns
alpha [float] Void fraction (area of gas / total area of channel), [-]

References

[1], [2], [3]

Examples

>>> Nicklin_Wilkes_Davidson(0.4, 800., 2.5, m=1, D=0.3)


0.6798826626721431

fluids.two_phase_voidage.Gregory_Scott(x, rhol, rhog)


Calculates void fraction in two-phase flow according to the model of [1] as given in [2] and [3].
[︂ (︂ )︂ ]︂−1
𝑥 𝑥 1−𝑥 𝑣𝑔𝑚
𝛼= 𝐶0 + +
𝜌𝑔 𝜌𝑔 𝜌𝑙 𝐺

2.23. Two-phase flow voidage (fluids.two_phase_voidage) 411


Fluids Documentation, Release 0.1

𝑣𝑔𝑚 = 0
𝐶0 = 1.19
Parameters
x [float] Quality at the specific tube interval []
rhol [float] Density of the liquid [kg/m^3]
rhog [float] Density of the gas [kg/m^3]
Returns
alpha [float] Void fraction (area of gas / total area of channel), [-]

References

[1], [2], [3]

Examples

>>> Gregory_Scott(0.4, 800., 2.5)


0.8364154370924108

fluids.two_phase_voidage.Dix(x, rhol, rhog, sigma, m, D, g=9.80665)


Calculates void fraction in two-phase flow according to the model of [1] as given in [2] and [3].
[︂ (︂ )︂ ]︂−1
𝑥 𝑥 1−𝑥 𝑣𝑔𝑚
𝛼= 𝐶0 + +
𝜌𝑔 𝜌𝑔 𝜌𝑙 𝐺
(︂ )︂0.25
𝜌𝑙 − 𝜌𝑔
𝑣𝑔𝑚 = 2.9 𝑔𝜎
𝜌2𝑙
(︂(︁ )︁ )︂ ⎤
)︂ 𝜌𝜌𝑔 0.1

(︂
𝑣𝑠𝑔 ⎣ 𝑣𝑠𝑙 𝑙
𝐶0 = 1+ ⎦
𝑣𝑚 𝑣𝑠𝑔
𝑚𝑥
𝑣𝑔𝑠 =
𝜌𝑔 𝜋4 𝐷2
𝑚(1 − 𝑥)
𝑣𝑙𝑠 =
𝜌𝑙 𝜋4 𝐷2
𝑣𝑚 = 𝑣𝑔𝑠 + 𝑣𝑙𝑠
Parameters
x [float] Quality at the specific tube interval []
rhol [float] Density of the liquid [kg/m^3]
rhog [float] Density of the gas [kg/m^3]
sigma [float] Surface tension of liquid [N/m]
m [float] Mass flow rate of both phases, [kg/s]
D [float] Diameter of the channel, [m]
g [float, optional] Acceleration due to gravity, [m/s^2]
Returns
alpha [float] Void fraction (area of gas / total area of channel), [-]

412 Chapter 2. API Reference


Fluids Documentation, Release 0.1

Notes

Has formed the basis for several other correlations.

References

[1], [2], [3]

Examples

>>> Dix(0.4, 800., 2.5, sigma=0.02, m=1, D=0.3)


0.8268737961156514

fluids.two_phase_voidage.Sun_Duffey_Peng(x, rhol, rhog, sigma, m, D, P, Pc, g=9.80665)


Calculates void fraction in two-phase flow according to the model of [1] as given in [2] and [3].
[︂ (︂ )︂ ]︂−1
𝑥 𝑥 1−𝑥 𝑣𝑔𝑚
𝛼= 𝐶0 + +
𝜌𝑔 𝜌𝑔 𝜌𝑙 𝐺
[︂ ]︂0.25
𝑔𝜎(𝜌𝑙 − 𝜌𝑔 )
𝑣𝑔𝑚 = 1.41
𝜌2𝑙
(︂ )︂−1
𝑃
𝐶0 = 0.82 + 0.18
𝑃𝑐
Parameters
x [float] Quality at the specific tube interval []
rhol [float] Density of the liquid [kg/m^3]
rhog [float] Density of the gas [kg/m^3]
sigma [float] Surface tension of liquid [N/m]
m [float] Mass flow rate of both phases, [kg/s]
D [float] Diameter of the channel, [m]
P [float] Pressure of the fluid, [Pa]
Pc [float] Critical pressure of the fluid, [Pa]
g [float, optional] Acceleration due to gravity, [m/s^2]
Returns
alpha [float] Void fraction (area of gas / total area of channel), [-]

References

[1], [2], [3]

2.23. Two-phase flow voidage (fluids.two_phase_voidage) 413


Fluids Documentation, Release 0.1

Examples

>>> Sun_Duffey_Peng(0.4, 800., 2.5, sigma=0.02, m=1, D=0.3, P=1E5, Pc=7E6)


0.7696546506515833

fluids.two_phase_voidage.Xu_Fang_voidage(x, rhol, rhog, m, D, g=9.80665)


Calculates void fraction in two-phase flow according to the model developed in the review of [1].
[︂ (︂ )︂ (︂ )︂]︂−1
(︀ −0.2 3.5
)︀ 1 − 𝑥 𝜌𝑔
𝛼 = 1 + 1 + 2𝐹 𝑟𝑙𝑜 𝛼ℎ
𝑥 𝜌𝑙
Parameters
x [float] Quality at the specific tube interval []
rhol [float] Density of the liquid [kg/m^3]
rhog [float] Density of the gas [kg/m^3]
m [float] Mass flow rate of both phases, [kg/s]
D [float] Diameter of the channel, [m]
g [float, optional] Acceleration due to gravity, [m/s^2]
Returns
alpha [float] Void fraction (area of gas / total area of channel), [-]

Notes

Claims an AARD of 5.0%, and suitability for any flow regime, mini and micro channels, adiabatic, evaporating,
or condensing flow, and for Frlo from 0.02 to 145, rhog/rhol from 0.004-0.153, and x from 0 to 1.

References

[1]

Examples

>>> Xu_Fang_voidage(0.4, 800., 2.5, m=1, D=0.3)


0.9414660089942093

fluids.two_phase_voidage.Woldesemayat_Ghajar(x, rhol, rhog, sigma, m, D, P, angle=0,


g=9.80665)
Calculates void fraction in two-phase flow according to the model of [1].
𝑣𝑔𝑠
𝛼= (︃ (︁ 𝜌 )︁0.1 )︃
𝑔
(︁ )︁ [︁ ]︁0.25 𝑃
𝑣𝑙𝑠 𝜌𝑙 𝑔𝐷𝜎(1+cos 𝜃)(𝜌𝑙 −𝜌𝑔 )
𝑣𝑔𝑠 1+ 𝑣𝑔𝑠 + 2.9 𝜌2𝑙
(1.22 + 1.22 sin 𝜃) 𝑃𝑎𝑡𝑚

𝑚𝑥
𝑣𝑔𝑠 =
𝜌𝑔 𝜋4 𝐷2
𝑚(1 − 𝑥)
𝑣𝑙𝑠 =
𝜌𝑙 𝜋4 𝐷2
Parameters

414 Chapter 2. API Reference


Fluids Documentation, Release 0.1

x [float] Quality at the specific tube interval []


rhol [float] Density of the liquid [kg/m^3]
rhog [float] Density of the gas [kg/m^3]
sigma [float] Surface tension of liquid [N/m]
m [float] Mass flow rate of both phases, [kg/s]
D [float] Diameter of the channel, [m]
P [float] Pressure of the fluid, [Pa]
angle [float] Angle of the channel with respect to the horizontal (vertical = 90), [degrees]
g [float, optional] Acceleration due to gravity, [m/s^2]
Returns
alpha [float] Void fraction (area of gas / total area of channel), [-]

Notes

Strongly recommended.

References

[1]

Examples

>>> Woldesemayat_Ghajar(0.4, 800., 2.5, sigma=0.2, m=1, D=0.3, P=1E6, angle=45)


0.7640815513429202

fluids.two_phase_voidage.Lockhart_Martinelli_Xtt(x, rhol, rhog, mul, mug, pow_x=0.9,


pow_rho=0.5, pow_mu=0.1,
n=None)
Calculates the Lockhart-Martinelli Xtt two-phase flow parameter in a general way according to [2]. [1] is said
to describe this. However, very different definitions of this parameter have been used elsewhere. Accordingly,
the powers of each of the terms can be set. Alternatively, if the parameter n is provided, the powers for viscosity
and phase fraction will be calculated from it as shown below.
(︂ )︂0.9 (︂ )︂0.5 (︂ )︂0.1
1−𝑥 𝜌𝑔 𝜇𝑙
𝑋𝑡𝑡 =
𝑥 𝜌𝑙 𝜇𝑔
(︂ )︂(2−𝑛)/2 (︂ )︂0.5 (︂ )︂𝑛/2
1−𝑥 𝜌𝑔 𝜇𝑙
𝑋𝑡𝑡 =
𝑥 𝜌𝑙 𝜇𝑔
Parameters
x [float] Quality at the specific tube interval [-]
rhol [float] Density of the liquid [kg/m^3]
rhog [float] Density of the gas [kg/m^3]
mul [float] Viscosity of liquid [Pa*s]
mug [float] Viscosity of gas [Pa*s]

2.23. Two-phase flow voidage (fluids.two_phase_voidage) 415


Fluids Documentation, Release 0.1

pow_x [float, optional] Power for the phase ratio (1-x)/x, [-]
pow_rho [float, optional] Power for the density ratio rhog/rhol, [-]
pow_mu [float, optional] Power for the viscosity ratio mul/mug, [-]
n [float, optional] Number to be used for calculating pow_x and pow_mu if provided, [-]
Returns
Xtt [float] Xtt Lockhart-Martinelli two-phase flow parameter [-]

Notes

Xtt is best regarded as an empirical parameter. If used, n is often 0.2 or 0.25.

References

[1], [2]

Examples

>>> Lockhart_Martinelli_Xtt(0.4, 800, 2.5, 1E-3, 1E-5)


0.12761659240532292

fluids.two_phase_voidage.two_phase_voidage_experimental(rho_lg, rhol, rhog)


Calculates the void fraction for two-phase liquid-gas pipeflow. If the weight of fluid in a pipe pipe could be
measured and the volume of the pipe were known, an effective density of the two-phase mixture could be
calculated. This is directly relatable to the void fraction of the pipe, a parameter used to predict the pressure
drop. This function converts that measured effective two-phase density to void fraction for use in developing
correlations.
𝜌𝑚 − 𝜌𝑙
𝛼=
𝜌𝑔 − 𝜌𝑙

Parameters
rho_lg [float] Two-phase effective density [kg/m^3]
rhol [float] Density of the liquid [kg/m^3]
rhog [float] Density of the gas [kg/m^3]
Returns
alpha [float] Void fraction (area of gas / total area of channel), [-]

References

[1]

Examples

>>> two_phase_voidage_experimental(481.0, 800, 2.5)


0.4

416 Chapter 2. API Reference


Fluids Documentation, Release 0.1

fluids.two_phase_voidage.density_two_phase(alpha, rhol, rhog)


Calculates the “effective” density of fluid in a liquid-gas flow. If the weight of fluid in a pipe pipe could be
measured and the volume of the pipe were known, an effective density of the two-phase mixture could be
calculated. This is directly relatable to the void fraction of the pipe, a parameter used to predict the pressure
drop. This function converts void fraction to effective two-phase density.

𝜌𝑚 = 𝛼𝜌𝑔 + (1 − 𝛼)𝜌𝑙

Parameters
alpha [float] Void fraction (area of gas / total area of channel), [-]
rhol [float] Density of the liquid [kg/m^3]
rhog [float] Density of the gas [kg/m^3]
Returns
rho_lg [float] Two-phase effective density [kg/m^3]

Notes

THERE IS NO THERMODYNAMIC DEFINITION FOR THIS QUANTITY. DO NOT USE THIS


VALUE IN SINGLE-PHASE CORRELATIONS.

References

[1]

Examples

>>> density_two_phase(.4, 800, 2.5)


481.0

fluids.two_phase_voidage.Beattie_Whalley(x, mul, mug, rhol, rhog)


Calculates a suggested definition for liquid-gas two-phase flow viscosity in internal pipe flow according to the
form in [1] and shown in [2] and [3].

𝜇𝑚 = 𝜇𝑙 (1 − 𝛼𝑚 )(1 + 2.5𝛼𝑚 ) + 𝜇𝑔 𝛼𝑚

1
𝛼𝑚 = (︀ 1−𝑥 )︀ 𝜌𝑔 (homogeneous model)
1+ 𝑥 𝜌𝑙

Parameters
x [float] Quality of the gas-liquid flow, [-]
mul [float] Viscosity of liquid, [Pa*s]
mug [float] Viscosity of gas, [Pa*s]
rhol [float] Density of the liquid [kg/m^3]
rhog [float] Density of the gas [kg/m^3]
Returns
mu_lg [float] Liquid-gas viscosity (a suggested definition, potentially useful for empirical
work only!) [Pa*s]

2.23. Two-phase flow voidage (fluids.two_phase_voidage) 417


Fluids Documentation, Release 0.1

Notes

This model converges to the liquid or gas viscosity as the quality approaches either limits.

References

[1], [2], [3]

Examples

>>> Beattie_Whalley(x=0.4, mul=1E-3, mug=1E-5, rhol=850, rhog=1.2)


1.7363806909512365e-05

fluids.two_phase_voidage.McAdams(x, mul, mug)


Calculates a suggested definition for liquid-gas two-phase flow viscosity in internal pipe flow according to the
form in [1] and shown in [2] and [3].
(︂ )︂−1
𝑥 1−𝑥
𝜇𝑚 = +
𝜇𝑔 𝜇𝑙

Parameters
x [float] Quality of the gas-liquid flow, [-]
mul [float] Viscosity of liquid, [Pa*s]
mug [float] Viscosity of gas, [Pa*s]
Returns
mu_lg [float] Liquid-gas viscosity (a suggested definition, potentially useful for empirical
work only!) [Pa*s]

Notes

This model converges to the liquid or gas viscosity as the quality approaches either limits.
[3] states this is the most common definition of two-phase liquid-gas viscosity.

References

[1], [2], [3]

Examples

>>> McAdams(x=0.4, mul=1E-3, mug=1E-5)


2.4630541871921184e-05

fluids.two_phase_voidage.Cicchitti(x, mul, mug)


Calculates a suggested definition for liquid-gas two-phase flow viscosity in internal pipe flow according to the
form in [1] and shown in [2] and [3].

𝜇𝑚 = 𝑥𝜇𝑔 + (1 − 𝑥)𝜇𝑙

418 Chapter 2. API Reference


Fluids Documentation, Release 0.1

Parameters
x [float] Quality of the gas-liquid flow, [-]
mul [float] Viscosity of liquid, [Pa*s]
mug [float] Viscosity of gas, [Pa*s]
Returns
mu_lg [float] Liquid-gas viscosity (a suggested definition, potentially useful for empirical
work only!) [Pa*s]

Notes

This model converges to the liquid or gas viscosity as the quality approaches either limits.

References

[1], [2], [3]

Examples

>>> Cicchitti(x=0.4, mul=1E-3, mug=1E-5)


0.0006039999999999999

fluids.two_phase_voidage.Lin_Kwok(x, mul, mug)


Calculates a suggested definition for liquid-gas two-phase flow viscosity in internal pipe flow according to the
form in [1] and shown in [2] and [3]_.
𝜇𝑙 𝜇𝑔
𝜇𝑚 = 1.4
𝜇𝑔 + 𝑥 (𝜇𝑙 − 𝜇𝑔 )

Parameters
x [float] Quality of the gas-liquid flow, [-]
mul [float] Viscosity of liquid, [Pa*s]
mug [float] Viscosity of gas, [Pa*s]
Returns
mu_lg [float] Liquid-gas viscosity (a suggested definition, potentially useful for empirical
work only!) [Pa*s]

Notes

This model converges to the liquid or gas viscosity as the quality approaches either limits.

References

[1], [2]

2.23. Two-phase flow voidage (fluids.two_phase_voidage) 419


Fluids Documentation, Release 0.1

Examples

>>> Lin_Kwok(x=0.4, mul=1E-3, mug=1E-5)


3.515119398126066e-05

fluids.two_phase_voidage.Fourar_Bories(x, mul, mug, rhol, rhog)


Calculates a suggested definition for liquid-gas two-phase flow viscosity in internal pipe flow according to the
form in [1] and shown in [2] and [3].
(︁√ √︀ )︁2
𝜇𝑚 = 𝜌𝑚 𝑥𝜈𝑔 + (1 − 𝑥)𝜈𝑙

Parameters
x [float] Quality of the gas-liquid flow, [-]
mul [float] Viscosity of liquid, [Pa*s]
mug [float] Viscosity of gas, [Pa*s]
rhol [float] Density of the liquid, [kg/m^3]
rhog [float] Density of the gas, [kg/m^3]
Returns
mu_lg [float] Liquid-gas viscosity (a suggested definition, potentially useful for empirical
work only!) [Pa*s]

Notes

This model converges to the liquid or gas viscosity as the quality approaches either limits.
This was first expressed in the equalivalent form as follows:
(︂ √︁ )︂
𝜇𝑚 = 𝜌𝑚 𝑥𝜈𝑔 + (1 − 𝑥)𝜈𝑙 + 2 𝑥(1 − 𝑥)𝜈𝑔 𝜈𝑙

References

[1], [2], [3]

Examples

>>> Fourar_Bories(x=0.4, mul=1E-3, mug=1E-5, rhol=850, rhog=1.2)


2.127617150298565e-05

fluids.two_phase_voidage.liquid_gas_voidage(x, rhol, rhog, D=None, m=None,


mul=None, mug=None, sigma=None,
P=None, Pc=None, angle=0, g=9.80665,
Method=None, AvailableMethods=False)
This function handles calculation of two-phase liquid-gas voidage for flow inside channels. 29 calculation
methods are available, with varying input requirements. A correlation will be automatically selected if none is
specified. The full list of correlation can be obtained with the AvailableMethods flag.
This function is used to calculate the (liquid) holdup as well, as:

holdup = 1 − voidage

420 Chapter 2. API Reference


Fluids Documentation, Release 0.1

If no correlation is selected, the following rules are used, with the earlier options attempted first:
• TODO: defaults

Parameters
x [float] Quality of fluid, [-]
rhol [float] Liquid density, [kg/m^3]
rhog [float] Gas density, [kg/m^3]
D [float, optional] Diameter of pipe, [m]
m [float, optional] Mass flow rate of fluid, [kg/s]
mul [float, optional] Viscosity of liquid, [Pa*s]
mug [float, optional] Viscosity of gas, [Pa*s]
sigma [float, optional] Surface tension, [N/m]
P [float, optional] Pressure of fluid, [Pa]
Pc [float, optional] Critical pressure of fluid, [Pa]
angle [float, optional] Angle of the channel with respect to the horizontal (vertical = 90), [de-
grees]
g [float, optional] Acceleration due to gravity, [m/s^2]
Returns
alpha [float] Void fraction (area of gas / total area of channel), [-]
methods [list, only returned if AvailableMethods == True] List of methods which can be used
to calculate two-phase liquid-gas voidage with the given inputs.
Other Parameters
Method [string, optional] A string of the function name to use, as in the dictionary
two_phase_voidage_correlations.
AvailableMethods [bool, optional] If True, function will consider which methods which can
be used to calculate two-phase liquid-gas voidage with the given inputs and return them as
a list instead of performing a calculation.

Examples

>>> liquid_gas_voidage(m=0.6, x=0.1, rhol=915., rhog=2.67, mul=180E-6, mug=14E-6,


... sigma=0.0487, D=0.05)
0.9744097632663492

fluids.two_phase_voidage.gas_liquid_viscosity(x, mul, mug, rhol=None, rhog=None,


Method=None, AvailableMeth-
ods=False)
This function handles the calculation of two-phase liquid-gas viscosity. Six calculation methods are available;
three of them require only x, mul, and mug; the other three require rhol and rhog as well.
The ‘McAdams’ method will be used if no method is specified. The full list of correlation can be obtained with
the AvailableMethods flag.
ALL OF THESE METHODS ARE ONLY SUGGESTED DEFINITIONS, POTENTIALLY USEFUL
FOR EMPIRICAL WORK ONLY!

2.23. Two-phase flow voidage (fluids.two_phase_voidage) 421


Fluids Documentation, Release 0.1

Parameters
x [float] Quality of fluid, [-]
mul [float] Viscosity of liquid, [Pa*s]
mug [float] Viscosity of gas, [Pa*s]
rhol [float, optional] Liquid density, [kg/m^3]
rhog [float, optional] Gas density, [kg/m^3]
Returns
mu_lg [float] Liquid-gas viscosity (a suggested definition, potentially useful for empirical
work only!) [Pa*s]
methods [list, only returned if AvailableMethods == True] List of methods which can be used
to calculate two-phase liquid-gas viscosity with the given inputs.
Other Parameters
Method [string, optional] A string of the function name to use, as in the dictionary liq-
uid_gas_viscosity_correlations.
AvailableMethods [bool, optional] If True, function will consider which methods which can be
used to calculate two-phase liquid-gas viscosity with the given inputs and return them as a
list instead of performing a calculation.

Notes

All of these models converge to the liquid or gas viscosity as the quality approaches either limits. Other defini-
tions have been proposed, such as using only liquid viscosity.
These values cannot just be plugged into single phase correlations!

Examples

>>> gas_liquid_viscosity(x=0.4, mul=1E-3, mug=1E-5, rhol=850, rhog=1.2, Method=


˓→'Duckler')

1.2092040385066917e-05
>>> gas_liquid_viscosity(x=0.4, mul=1E-3, mug=1E-5)
2.4630541871921184e-05

2.24 Support for pint Quantities (fluids.units)

Basic module which wraps all fluids functions and classes to be compatible with the pint unit handling library. All
other object - dicts, lists, etc - are not wrapped. Supports star imports; so the same objects exported when importing
from the main library will be imported from here.

>>> from fluids.units import *

There is no global unit registry in pint, and each registry must be a singleton. However, there is a default registry
which is suitable for use in multiple modules at once.
This default registry should be imported in one of the following ways (it does not need to be called u; it can be imported
from pint as ureg or any other name):

422 Chapter 2. API Reference


Fluids Documentation, Release 0.1

>>> from pint import _DEFAULT_REGISTRY as u

Note that if the star import convention is used, it will be imported as u for you. Unlike the normal convention, this
registry is already initialized. To repeat it again, you CANNOT do the following in your project and work with
fluids.units.

>>> from pint import UnitRegistry


>>> u = UnitRegistry() # NO

All dimensional arguments to functions in fluids.units must be provided as Quantity objects.

>>> Reynolds(V=3.5*u.m/u.s, D=2*u.m, rho=997.1*u.kg/u.m**3, mu=1E-3*u.Pa*u.s)


<Quantity(6979700.0, 'dimensionless')>

The result is always one or more Quantity objects, depending on the signature of the function called.
For arguments whose documentation specify they are dimensionless, they can optionally be passed in without making
them dimensionless numbers with pint.

>>> speed_synchronous(50*u.Hz, poles=12)


<Quantity(1500.0, 'revolutions_per_minute')>
>>> speed_synchronous(50*u.Hz, poles=12*u.dimensionless)
<Quantity(1500.0, 'revolutions_per_minute')>

It is good practice to use dimensionless quantities as follows, but it is optional.

>>> K_separator_Watkins(0.88*u.dimensionless, 985.4*u.kg/u.m**3, 1.3*u.kg/u.m**3,


˓→horizontal=True)

<Quantity(0.0794470406403, 'meter / second')>

Like all pint registries, the default unit system can be changed. However, all functions will still return the unit their
documentation says they do. To convert to the new base units, use the method .to_base_units().

>>> u.default_system = 'imperial'


>>> K_separator_Watkins(0.88*u.dimensionless, 985.4*u.kg/u.m**3, 1.3*u.kg/u.m**3,
˓→horizontal=True).to_base_units()

<Quantity(0.0868843401578, 'yard / second')>

The order of the arguments to a function is the same as it is in the regular library; it won’t try to infer argument position
from their units, an exception will be raised.

>>> K_separator_Watkins(985.4*u.kg/u.m**3, 1.3*u.kg/u.m**3, 0.88*u.dimensionless,


˓→horizontal=True)

Exception: Converting 0.88 dimensionless to units of kg/m^3 raised


˓→DimensionalityError: Cannot convert from 'dimensionless' (dimensionless) to

˓→'kilogram / meter ** 3' ([mass] / [length] ** 3)

Support for classes is provided by wrapping each class by a proxy class which reads the docstrings of each method
and the main class to determine the inputs and outputs. Properties, attributes, inputs, and units are all included.

>>> T1 = TANK(L=3*u.m, D=150*u.cm, horizontal=True)


>>> T1.V_total, T1.h_max
(<Quantity(5.30143760293, 'meter ** 3')>, <Quantity(1.5, 'meter')>)
>>> T1.V_from_h(0.1*u.m)
<Quantity(0.151783071377, 'meter ** 3')>

2.24. Support for pint Quantities (fluids.units) 423


Fluids Documentation, Release 0.1

>>> atm = ATMOSPHERE_NRLMSISE00(Z=1E3*u.m, latitude=45*u.degrees, longitude=45*u.


˓→degrees, day=150*u.day)

>>> atm.rho, atm.O2_density


(<Quantity(1.10190620264, 'kilogram / meter ** 3')>, <Quantity(4.80470350725e+24,
˓→'count / meter ** 3')>)

Note that static methods cannot be used with the base class, only an instantiated class. This is because the proxy class
wraps the methods only on creation of the object.

>>> ATMOSPHERE_1976.thermal_conductivity(300*u.K)
AttributeError: type object 'ATMOSPHERE_1976' has no attribute 'thermal_conductivity'

>>> ATMOSPHERE_1976(0*u.m).thermal_conductivity(300*u.K)
<Quantity(0.0262520007809, 'watt / kelvin / meter')>

2.25 Support for numpy arrays (fluids.vectorized)

Basic module which wraps all fluids functions with numpy’s vectorize. All other object - dicts, classes, etc - are not
wrapped. Supports star imports; so the same objects exported when importing from the main library will be imported
from here.

>>> from fluids.vectorized import *

Inputs do not need to be numpy arrays; they can be any iterable:

>>> fluids.vectorized.friction_factor(Re=[100, 1000, 10000], eD=0)


array([ 0.64 , 0.064 , 0.03088295])

Note that because this needs to import fluids itself, fluids.vectorized needs to be imported separately; the following
will cause an error:

>>> import fluids


>>> fluids.vectorized # Won't work, has not been imported yet

The correct syntax is as follows:

>>> import fluids.vectorized # Necessary


>>> from fluids.vectorized import * # May be used without first importing fluids

424 Chapter 2. API Reference


CHAPTER 3

Solved fluids mechanics problems

3.1 7.1 Smooth Pipe (Plastic)

Water at 30 degrees Celsius flows through a 20 m length of 50 mm plastic (smooth wall) pipe, at a flow rate of 200
L/min.
Calculate the Reynolds number and friction factor.

[1]: from fluids.units import *


from thermo.units import Stream
from math import *

Q = 0.2*u.m**3/u.min
T = 30*u.degC
P = 2*u.bar # assumed
water = Stream('water', T=T, P=P, Q=Q)

NPS, Di, Do, t = nearest_pipe(Di=0.05*u.m)


v = Q/(pi/4*Di**2)
Re = Reynolds(D=Di, rho=water.rho, mu=water.mu, V=v)
print('Reynolds number = %s' %Re)
fd = friction_factor(Re=Re, eD=_roughness['Glass']/Di)
print('Darcy friction factor = %s' %fd)
Reynolds number = 101005.004737 dimensionless
Darcy friction factor = 0.0181086578522 dimensionless

The values presented in their solution are Re=100600; and fd=0.0179. The difference in values is due to the precision
they used.

3.2 7.2 L, L over D and K from Kv for Conventional Type Valves

A 150 mm class 125 Y-pattern globe valve with a Kv=500 flow coefficient is given.

425
Fluids Documentation, Release 0.1

Calculate the resistance coefficient K, L/D equivalent, and the length for complete turbulence in the flow.
Use schedule 40, 150 mm pipe as a reference.

[1]: from fluids.units import *


D = .154*u.m
Kv = 500*u.m**3/u.hour

K = Kv_to_K(Kv, D)
L_D = L_equiv_from_K(K, fd=.015)
L = D*L_D

print('Loss coefficient = %s' %K)


print('Equivalent length = %s' % L_D)
print('Length for complete turbulence = %s' %L)
Loss coefficient = 3.5996713984 dimensionless
Equivalent length = 239.978093227 dimensionless
Length for complete turbulence = 36.9566263569 meter

The results calculated in Crane TP 410M are 3.6, 240, and 37.0 respectively.

3.3 7.3 L, L over D, K, and Kv for Conventional Type Valves

A 100 mm class 600 steel angle valve, has a full area seat.
Calculate its resistance coefficient K, flow coefficient Kv, the equivalent length of it L/D, and the length for complete
turbulent L.

[1]: from fluids.units import *


NPS, Di, Do, t = nearest_pipe(Do=0.103*u.m, schedule='80')
fd = 0.0165 # provided - note equivalent length is proportional to this value
d = 0.0972*u.m # diameter of seat
K = K_angle_valve_Crane(D1=d, D2=Di, fd=fd, style=1)
Kv = K_to_Kv(K, d)
L_D = L_equiv_from_K(K, fd)
L = L_D*d

print('Loss coefficient = %s' %K)


print('Valve flow coefficient = %s' %Kv)
print('Equivalent length = %s' % L_D)
print('Length for complete turbulence = %s' %L)
Loss coefficient = 2.47296378211 dimensionless
Valve flow coefficient = 240.316529308 meter ** 3 / hour
Equivalent length = 149.876592855 dimensionless
Length for complete turbulence = 14.5680048255 meter

The values given in the solution are K=2.475, Kv = 240.2, L/D=150, and L = 14.6.

3.4 7.4 Venturi Type Valves

A 150 by 100 mm class 600 steel gate valve, conically tapered ports, length 550 mm, back of seat ring ~150 mm. The
valve is connected to 146 mm schedule 80 pipe. The angle can be calculated to be 13 degrees. The valve is specified
to be operating in turbulent conditions.

426 Chapter 3. Solved fluids mechanics problems


Fluids Documentation, Release 0.1

[1]: from fluids.units import *


D1 = 100*u.mm
D2 = 146*u.mm
angle = 13.115*u.degrees
fd = friction_factor(Re=1E5, eD=.0018*u.inch/D1)

K2 = K_gate_valve_Crane(D1, D2, angle, fd)


L_D = L_equiv_from_K(K2, fd)
L = (L_D*D2).to(u.m)

print('Darcy friction factor = %s' %fd)


print('K2 = %s' %K2)
print('Equivalent length L_D = %s' %L_D)
print('Length for flow in complete turbulence = %s' %L)
Darcy friction factor = 0.0180867553648 dimensionless
K2 = 1.25803315 dimensionless
Equivalent length L_D = 69.5554910005 dimensionless
Length for flow in complete turbulence = 10.1551016861 meter

The values calculated in the problem use a friction factor of 0.015; this is the source of the discrepancies. Their
procedure for loss in valves and fittings is based around the roughness of commercial steel pipe with a roughness of
0.0018 inches, but in their examples they simply look their friction factors up in a table which does not consider the
diameter of the pipe. Their calculated values are K2 = 1.22, L/D=81.3, and L = 11.9.

3.5 7.5 Lift Check Valves

A lift check valve of type globe (with a wing-guided disc) is added to a 80 mm Schedule 40 horizontal pipe carying
water at a flow rate of 300 L/min.
Calculate the check valve size, and pressure drop. The disc should be fully lifted at the specified flow.
[1]: from fluids.units import *
from math import *
Q = 300*u.L/u.min
D_80 = 77.9*u.mm

rho = 998.2*u.kg/u.m**3
# Try: schedule 40, 80 mm valve
D_60 = 62.7*u.mm
v_lift = v_lift_valve_Crane(rho=rho, D1=D_80, D2=D_80, style='lift check straight')
print('Minimum velocity = %s' %v_lift)

v = Q/(pi/4*D_80**2)
print('Velocity in 80 mm valve = %s' %v.to_base_units())

# v is lower than the lift velocity; try the 60 mm valve


v_lift = v_lift_valve_Crane(rho=rho, D1=D_60, D2=D_80, style='lift check straight')
print('Minimum velocity = %s' %v_lift)

v = Q/(pi/4*D_60**2)
print('Velocity in 60 mm valve = %s' %v.to_base_units())
# The desired velocity is close enough

fd = 0.017 # given, 80 mm pipe upstream


K2 = K_lift_check_valve_Crane(D_60, D_80, fd=fd, angled=False)
(continues on next page)

3.5. 7.5 Lift Check Valves 427


Fluids Documentation, Release 0.1

(continued from previous page)


print('Loss coefficient = %s'%K2)
v_pipe = Q/(pi/4*D_80**2)

dP = 0.5*rho*v_pipe**2*K2
print('Pressure drop = %s' %dP.to(u.Pa))
Minimum velocity = 1.582563779 meter / second
Velocity in 80 mm valve = 1.04907178712 meter / second
Minimum velocity = 1.02523019353 meter / second
Velocity in 60 mm valve = 1.61936609196 meter / second
Loss coefficient = 24.8796766231 dimensionless
Pressure drop = 13666.0409068 pascal

The values calculated in the example are K2 = 26.3 and pressure drop = 14450 Pa. Interestingly, the formula for
minimum lift velocity used in their example does not use the ratio of diameters as the formula in their appendix shows.
Otherwise the examples match.

3.6 7.6 Reduced Port Ball Valve

Water is discharged at 15 degrees Celsius from a tank with 7 m of head to atmosphere through:
• 60 meters of 80 mm schedule 40 pipe
• Six 80 mm standard 90 degree threaded elbows
• One 80 mm flanged ball valve, with a 60 mm diameter seat, 16 degree conical inlet and 30 degree conival outlet.
• The entrance is sharp-edged and flush with the tank

[1]: from thermo.units import Chemical


from fluids.units import *
from math import pi
water = Chemical('water', T=15*u.degC)
rho = water.rho
mu = water.mu

H = 7*u.m
L = 60*u.m
fd = 0.017 # assumed in their example
NPS, D_pipe, Do_pipe, t = nearest_pipe(Do=80*u.mm)

K = K_from_f(fd=fd, L=L, D=D_pipe)


K += entrance_sharp()
K += exit_normal()
K += 6*bend_rounded(D_pipe, angle=90*u.degrees, fd=fd, bend_diameters=0.65)
ball_valve_angle = 0.5*(15+30)*u.degrees # use the average angle
K += K_ball_valve_Crane(D1=D_pipe, D2=60*u.mm, angle=ball_valve_angle, fd=fd)

v = (2*u.gravity*H/K)**0.5
print('Velocity = %s' %v.to_base_units())
Q = v*pi/4*D_pipe**2
print('Flow rate = %s' %Q.to(u.L/u.min))
Re = Reynolds(D=D_pipe, rho=rho, mu=mu, V=v)
fd = friction_factor(Re=Re, eD=0.0018*u.inch/D_pipe)
Velocity = 2.77004132376 meter / second
Flow rate = 792.547439913 liter / minute

428 Chapter 3. Solved fluids mechanics problems


Fluids Documentation, Release 0.1

The radius of curvature of the elbows was not specified; 0.65 bend diameters matches their results most closely. They
modified the ball valve equation to support both an inlet and an outlet angle; the average value is used here.
Their calculated values are 2.74 m/s and flow rate of 781 L/min.
The calculation can be performed more accurately by iterating; a naive approach is shown below. A very different
flow rate is obtained when the roughness of the pipe is considered in the friction factor calculation.

[2]: fd = 0.017
for i in range(7):
K = K_from_f(fd=fd, L=L, D=D_pipe)
K += entrance_sharp()
K += exit_normal()
K += 6*bend_rounded(D_pipe, angle=90*u.degrees, fd=fd, bend_diameters=0.65)
ball_valve_angle = 0.5*(15+30)*u.degrees # use the average angle
K += K_ball_valve_Crane(D1=D_pipe, D2=60*u.mm, angle=ball_valve_angle, fd=fd)

v = (2*u.gravity*H/K)**0.5
Q = v*pi/4*D_pipe**2
print('Flow rate = %s' %Q.to(u.L/u.min))
Re = Reynolds(D=D_pipe, rho=rho, mu=mu, V=v)
fd = friction_factor(Re=Re, eD=0.0018*u.inch/D_pipe)
Flow rate = 792.547439913 liter / minute
Flow rate = 473.249278655 liter / minute
Flow rate = 472.693638206 liter / minute
Flow rate = 472.692023884 liter / minute
Flow rate = 472.692019188 liter / minute
Flow rate = 472.692019174 liter / minute
Flow rate = 472.692019174 liter / minute

3.7 7.7 Laminar flow in Valves, Fittings, and Pipe - System from Ex-
ample 7.6

SAE oil is discharged at 15 degrees Celsius from a tank with 7 m of head to atmosphere through:
• 60 meters of 80 mm schedule 40 pipe
• Six 80 mm standard 90 degree threaded elbows
• One 80 mm flanged ball valve, with a 60 mm diameter seat, 16 degree conical inlet and 30 degree conival outlet.
• The entrance is sharp-edged and flush with the tank
This is the same problem as 7.6, except the properties of the fluid are sufficiently viscous to put it into the laminar
regime although not by much.

[1]: from fluids.units import *


from math import pi
rho = 875.*u.kg/u.m**3
mu = 78*u.cP

H = 7*u.m
L = 60*u.m
NPS, D_pipe, Do_pipe, t = nearest_pipe(Do=80*u.mm)

fd = 0.017
(continues on next page)

3.7. 7.7 Laminar flow in Valves, Fittings, and Pipe - System from Example 7.6 429
Fluids Documentation, Release 0.1

(continued from previous page)


Re = 1E5
for i in range(20):
K = K_from_f(fd=fd, L=L, D=D_pipe)
K += entrance_sharp()
K += exit_normal()
K += 6*bend_rounded(D_pipe, angle=90*u.degrees, fd=fd, bend_diameters=0.65)
ball_valve_angle = 0.5*(15+30)*u.degrees # use the average angle
K += K_ball_valve_Crane(D1=D_pipe, D2=60*u.mm, angle=ball_valve_angle, fd=fd)

v = (2*u.gravity*H/K)**0.5
Q = v*pi/4*D_pipe**2
print('Flow rate = %s, Reynolds number = %s' %(Q.to(u.L/u.min), Re))
Re = Reynolds(D=D_pipe, rho=rho, mu=mu, V=v)
fd = friction_factor(Re=Re, eD=0.0018*u.inch/D_pipe)
Flow rate = 792.547439913 liter / minute, Reynolds number = 100000.0
Flow rate = 428.461048981 liter / minute, Reynolds number = 2421.30022376
˓→dimensionless

Flow rate = 485.75141276 liter / minute, Reynolds number = 1308.98515537 dimensionless


Flow rate = 515.733166793 liter / minute, Reynolds number = 1484.01211735
˓→dimensionless

Flow rate = 530.620769781 liter / minute, Reynolds number = 1575.60894058


˓→dimensionless

Flow rate = 537.828263434 liter / minute, Reynolds number = 1621.0918412 dimensionless


Flow rate = 541.275603892 liter / minute, Reynolds number = 1643.11135084
˓→dimensionless

Flow rate = 542.915000096 liter / minute, Reynolds number = 1653.64327082


˓→dimensionless

Flow rate = 543.692496106 liter / minute, Reynolds number = 1658.65176646


˓→dimensionless

Flow rate = 544.060753053 liter / minute, Reynolds number = 1661.02708328


˓→dimensionless

Flow rate = 544.23506934 liter / minute, Reynolds number = 1662.15213975 dimensionless


Flow rate = 544.317558945 liter / minute, Reynolds number = 1662.68469092
˓→dimensionless

Flow rate = 544.356589163 liter / minute, Reynolds number = 1662.93670372


˓→dimensionless

Flow rate = 544.375055237 liter / minute, Reynolds number = 1663.05594438


˓→dimensionless

Flow rate = 544.383791685 liter / minute, Reynolds number = 1663.11235981


˓→dimensionless

Flow rate = 544.387924908 liter / minute, Reynolds number = 1663.13905041


˓→dimensionless

Flow rate = 544.389880327 liter / minute, Reynolds number = 1663.15167776


˓→dimensionless

Flow rate = 544.390805428 liter / minute, Reynolds number = 1663.15765173


˓→dimensionless

Flow rate = 544.39124309 liter / minute, Reynolds number = 1663.16047799 dimensionless


Flow rate = 544.391450145 liter / minute, Reynolds number = 1663.16181509
˓→dimensionless

No solution is actually presented in the example; but the result of their initial guess of a velocity of 1.5 m/s gives 511.2
L/min.

430 Chapter 3. Solved fluids mechanics problems


Fluids Documentation, Release 0.1

3.8 7.8 Laminar flow in Valves, Fittings, and Pipe - SAE oil through a
pipe and globe valve

S.A.E. 30 Oil at 40 degrees Celsius and a flow rate of 600 barrels/hour flows in a 60 m long 200mm schedule 40 pipe
and passes through a 200 mm globe valve, full area seat.
Calculate the pressure drop.

[1]: from fluids.units import *


from thermo import Stream
from math import *
Q = 600*u.barrel/u.hour
L = 60*u.m
NPS, D_pipe, Do_pipe, t = nearest_pipe(Di=200*u.mm)

rho = 869.2*u.kg/u.m**3
mu = 130*u.cP

V = Q/(pi/4*D_pipe**2)
Re = Reynolds(D=D_pipe, V=V, rho=rho, mu=mu)
fd = friction_factor(Re=Re)
ft = friction_factor(Re=1E6, eD=0.0018*u.inch/D_pipe)
K = K_globe_valve_Crane(D1=D_pipe, D2=D_pipe, fd=ft)
K += K_from_f(fd=fd, L=L, D=D_pipe)
dP_from_K(K=K, V=V, rho=rho)
[1]: 5781.61276167 pascal

The example gives a pressure drop of 6382 Pa.

3.9 7.10 Piping Systems - Steam

40 bar steam, 450 degrees Celsius flows though a 120 m long horizontal 150mm schedule 80 pipe at a rate of 40000
kg/hr.
There are three 90 degree weld elbows with rc=1.5, 1 fully open class 600 150mm x 100mm venturi class gate valve,
one class 600 150 mm class y pattern globe valve with a seat diameter of 90% the inside pipe diameter (disc fully
lifted).
Calculate the pressure drop through the system.

[1]: from math import *


from fluids.units import *
from thermo.units import Stream

m = 40000*u.kg/u.hr
T = 450*u.degC
P = 40*u.bar

steam = Stream('water', T=T, P=P, m=m)

rho = steam.rho
mu = steam.mu
print('Density = %s' %rho)
print('Viscosity = %s' %mu)

3.8. 7.8 Laminar flow in Valves, Fittings, and Pipe - SAE oil through a pipe and globe valve 431
Fluids Documentation, Release 0.1

Density = 12.5195049457 kilogram / meter ** 3


Viscosity = 2.65571609065e-05 pascal * second

[2]: L = 120*u.m
NPS, D_pipe, Do_pipe, t = nearest_pipe(Do=150*u.mm, schedule='80')
Q = m/rho
v = Q/(pi/4*D_pipe**2)
Re = Reynolds(rho=rho, mu=mu, D=D_pipe, V=v)
fd = friction_factor(Re=Re, eD=0.0018*u.inch/D_pipe)
K_elbow = bend_rounded(Di=D_pipe, angle=90*u.degrees, fd=fd, bend_diameters=1.5)
K_friction = K_from_f(fd=fd, L=L, D=D_pipe)
K_globe_valve = K_globe_valve_Crane(D1=0.9*D_pipe, D2=D_pipe, fd=fd)
# Angle and inside diameter are taken from example 7.4,
K_gate_valve = K_gate_valve_Crane(D1=100*u.mm, D2=D_pipe, angle=13.115*u.degrees,
˓→fd=fd)

K_tot = K_gate_valve + K_globe_valve + 3*K_elbow + K_friction


dP = dP_from_K(K=K_tot, rho=rho, V=v)

print('Crane elbow term = 0.63; calculated = %s' % (3*K_elbow))


print('Crane globe valve term = 1.44; calculated = %s' % (K_globe_valve))
print('Crane gate valve term = 1.22; calculated = %s' % (K_gate_valve))
print('Crane friction term = 12.3; calculated = %s' % (K_friction))
print('Darcy friction factor = %s' %fd)
print('Pressure drop = %s' %dP.to(u.Pa))
Crane elbow term = 0.63; calculated = 1.26189256438 dimensionless
Crane globe valve term = 1.44; calculated = 21.1562338391 dimensionless
Crane gate valve term = 1.22; calculated = 2.10552435922 dimensionless
Crane friction term = 12.3; calculated = 33.3833135584 dimensionless
Darcy friction factor = 0.04071651477 dimensionless
Pressure drop = 1008693.59173 pascal

This compares terribly to the example, which calculates a pressure drop of 274800 Pa!
Two errors are apparent - their example uses a different coefficient (55) in the globe valve pressure drop equation than
that shown in their appendix (340); and they re-use their prior calculated gate valve, despite the friction factor being
different in this example. This, plus their use of a constant 0.015 friction factor, explains the difference.
The example below uses their calculated globe valve pressure drop and their friction factor. The result (268500 Pa)
compares well with their calculation; the additional decimals and better physical properties explain the rest.
[3]: L = 120*u.m
NPS, D_pipe, Do_pipe, t = nearest_pipe(Do=150*u.mm, schedule='80')
Q = m/rho
v = Q/(pi/4*D_pipe**2)
Re = Reynolds(rho=rho, mu=mu, D=D_pipe, V=v)
fd = 0.015
K_elbow = bend_rounded(Di=D_pipe, angle=90*u.degrees, fd=fd, bend_diameters=1.5)
K_friction = K_from_f(fd=fd, L=L, D=D_pipe)
K_globe_valve = 1.44
# Angle and inside diameter are taken from example 7.4,
K_gate_valve = K_gate_valve_Crane(D1=100*u.mm, D2=D_pipe, angle=13.115*u.degrees,
˓→fd=fd)

K_tot = K_gate_valve + K_globe_valve + 3*K_elbow + K_friction


dP = dP_from_K(K=K_tot, rho=rho, V=v)

(continues on next page)

432 Chapter 3. Solved fluids mechanics problems


Fluids Documentation, Release 0.1

(continued from previous page)


print('Crane elbow term = 0.63; calculated = %s' % (3*K_elbow))
print('Crane globe valve term = 1.44; calculated = %s' % (K_globe_valve))
print('Crane gate valve term = 1.22; calculated = %s' % (K_gate_valve))
print('Crane friction term = 12.3; calculated = %s' % (K_friction))
print('Darcy friction factor = %s' %fd)
print('Pressure drop = %s' %dP.to(u.Pa))
Crane elbow term = 0.63; calculated = 0.598864740713 dimensionless
Crane globe valve term = 1.44; calculated = 1.44
Crane gate valve term = 1.22; calculated = 1.16148152353 dimensionless
Crane friction term = 12.3; calculated = 12.2984421973 dimensionless
Darcy friction factor = 0.015
Pressure drop = 269976.656247 pascal

3.10 7.11 Flat heating Coils - Water

Water at 80 degrees Celsius flows through a flat heating coil at a rate of 60 L/min. There are 7 180 degree bends in it.
The coil is 8 m long, with 0.5 m of straight length on the inlet and exit. The r/D of the bends is 4. The pipe is schedule
40, 25 mm pipe.

[1]: from math import *


from fluids.units import *
from thermo.units import Chemical

water = Chemical('water', P=2*u.bar, T=80*u.degC) # P assumed


rho = water.rho
mu = water.mu

Q = 60*u.L/u.min
L = (1*8 + 0.5*2)*u.m

NPS, D_pipe, Do_pipe, t = nearest_pipe(Di=25*u.mm)


v = Q/(pi/4*D_pipe**2)
Re = Reynolds(rho=rho, mu=mu, D=D_pipe, V=v)
fd = friction_factor(Re=Re, eD=0.0018*u.inch/D_pipe)

K_elbow = bend_rounded(Di=D_pipe, angle=180*u.degrees, fd=fd, bend_diameters=5)


K_friction = K_from_f(fd=fd, L=L, D=D_pipe)

K_tot = 7*K_elbow + K_friction


dP = dP_from_K(K=K_tot, rho=rho, V=v)
print('Pressure drop = %s' %dP.to(u.Pa))
Pressure drop = 61330.665674 pascal

The value presented in the solution is 19609 Pa. They chose a constant friction factor of 0.024 in this calculation. If
this were used, the result compares much better. Their friction factor can be obtained at a roughness of 0.05 mm.

[2]: fd = 0.024
K_elbow = bend_rounded(Di=D_pipe, angle=180*u.degrees, fd=fd, bend_diameters=5)
K_friction = K_from_f(fd=fd, L=L, D=D_pipe)

K_tot = 7*K_elbow + K_friction


dP = dP_from_K(K=K_tot, rho=rho, V=v)
print('Pressure drop = %s' %dP.to(u.Pa))

3.10. 7.11 Flat heating Coils - Water 433


Fluids Documentation, Release 0.1

Pressure drop = 18539.7300274 pascal

3.11 7.13 Flow given in English Units - Oil

Fuel oil at a specific gravity of 0.815 (kinematic viscosity of 2.7 centistokes) flows at 2 inch, schedule 40 steel pipe
100 foot long at a rate of 2 US gallons/second.
Calculate the pressure drop in bars and psi.

[1]: from math import *


from fluids.units import *
from thermo import *

SG = 0.815
rho = SG*999.1*u.kg/u.m**3
nu = 2.7*u.centistokes
mu = nu_mu_converter(rho, nu=nu)
Q = 2*u.gal/u.s
L = 100*u.foot

NPS, D_pipe, Do_pipe, t = nearest_pipe(Di=2*u.inch)


v = Q/(pi/4*D_pipe**2)
Re = Reynolds(rho=rho, mu=mu, D=D_pipe, V=v)
fd = friction_factor(Re=Re, eD=0.0018*u.inch/D_pipe)
print('Darcy friction factor = %s' %fd)
K_friction = K_from_f(fd=fd, L=L, D=D_pipe)
dP = dP_from_K(K=K_friction, rho=rho, V=v)
print('Pressure drop = %s' %dP.to(u.Pa))
print('In imperial, pressure drop = %s' %dP.to(u.psi))
Darcy friction factor = 0.0609076579823 dimensionless
Pressure drop = 176425.270238 pascal
In imperial, pressure drop = 25.5883220737 pound_force_per_square_inch

The pressure drop calculated in the example is 66500 Pa (9.65 psi). The discrepancy is from their friction factor; they
use 0.0230. The result is matched exactly if their friction factor is used.

[2]: fd = 0.023
print('Darcy friction factor = %s' %fd)
K_friction = K_from_f(fd=fd, L=L, D=D_pipe)
dP = dP_from_K(K=K_friction, rho=rho, V=v)
print('Pressure drop = %s' %dP.to(u.Pa))
print('In imperial, pressure drop = %s' %dP.to(u.psi))
Darcy friction factor = 0.023
Pressure drop = 66621.8559355 pascal
In imperial, pressure drop = 9.66268326827 pound_force_per_square_inch

3.12 7.14 Bernoulli’s Theorem-Water

Water at 15 degrees Celsius is flowing through the piping system shown in Crane TP 410M’s example at 1500 L/min.
Calculate the velocity in both 4 and 5 inch sizes; and the pressure drop.

434 Chapter 3. Solved fluids mechanics problems


Fluids Documentation, Release 0.1

Note: This problem suggests to handle the changing size elbow by adding on the result of a smooth expansion, which
is also used here.
[1]: from math import *
from fluids.units import *
from thermo.units import Chemical

water = Chemical('water', P=2*u.bar, T=15*u.degC)


rho = water.rho
mu = water.mu

Q = 1500*u.L/u.min
r_d = 1.5
_, D1, _, _ = nearest_pipe(Di=100*u.mm)
_, D2, _, _ = nearest_pipe(Di=125*u.mm)
L1 = 34*u.m
L2 = (22+45)*u.m
dH = 22*u.m
beta = D1/D2

V1 = Q/(pi/4*D1**2)
V2 = Q/(pi/4*D2**2)
Re1 = Reynolds(rho=rho, mu=mu, V=V1, D=D1)
Re2 = Reynolds(rho=rho, mu=mu, V=V2, D=D2)
fd1 = friction_factor(Re=Re1, eD=0.0018*u.inch/D1)
fd2 = friction_factor(Re=Re2, eD=0.0018*u.inch/D2)
fd = (fd1+fd2)/2

dP = rho*u.gravity*dH

K_D1 = bend_rounded(Di=D1, angle=90*u.degrees, fd=fd, bend_diameters=r_d)


K_D1 += diffuser_conical(D1, D2, angle=30*u.degrees, fd=fd)
K_D1 += K_from_f(fd=fd1, L=L1, D=D1)

K_D2 = bend_rounded(Di=D2, angle=90*u.degrees, fd=fd, bend_diameters=r_d)


K_D2 += K_from_f(fd=fd2, L=L2, D=D2)

dP += dP_from_K(K=K_D1, rho=rho, V=V1)


dP += dP_from_K(K=K_D2, rho=rho, V=V2)
dP.to(u.Pa)
[1]: 332625.262817 pascal

The result calculated in Crane’s TP 410m is 26450 Pa. Their friction factor is 0.018. Again, it that value is used, the
result calculated matches theirs - except this is off by an order of magnitude.
In this edition, the gravitational term was forgotten. The prior 8th edition lists a value of 2.6 bar as the result for this
problem. If their friction factor is used with this model, the following calculates a pressure drop of 2.62 bar.
[2]: fd = fd1 = fd2 = .018
dP = rho*u.gravity*dH

K_D1 = bend_rounded(Di=D1, angle=90*u.degrees, fd=fd, bend_diameters=r_d)


K_D1 += contraction_round(D1, D2, r_d*D1)
K_D1 += K_from_f(fd=fd1, L=L1, D=D1)

K_D2 = bend_rounded(Di=D2, angle=90*u.degrees, fd=fd, bend_diameters=r_d)


K_D2 += K_from_f(fd=fd2, L=L2, D=D2)

(continues on next page)

3.12. 7.14 Bernoulli’s Theorem-Water 435


Fluids Documentation, Release 0.1

(continued from previous page)


dP += dP_from_K(K=K_D1, rho=rho, V=V1)
dP += dP_from_K(K=K_D2, rho=rho, V=V2)
dP.to(u.Pa)
[2]: 262439.430838 pascal

3.13 7.29 Orifice Flow Rate Calculation

[1]: from fluids.units import *


from thermo.units import Chemical

P1 = 2*u.bar # The full set of equations requires actual pressures not just the
˓→pressure difference, so an initial pressure of 2 bar is assumed.

P2 = P1 - 17*u.kPa
taps = 'D'
meter_type = 'ISO 5167 orifice'
Do = 50*u.mm

NPS, D, _, t_pipe = nearest_pipe(Do=80*u.mm, schedule=80)

D
[1]: 0.07366 meter

[2]: water = Chemical('water', T=15*u.degC, P=P1)


rho = water.rho
mu = water.mu
k = water.isentropic_exponent
rho, mu, k
[2]: (<Quantity(999.149354395, 'kilogram / meter ** 3')>,
<Quantity(0.00113751328021, 'pascal * second')>,
<Quantity(1.32952939555, 'dimensionless')>)

[3]: m = differential_pressure_meter_solver(D=D, D2=Do, P1=P1, P2=P2, rho=rho, mu=mu, k=k,


˓→meter_type=meter_type, taps=taps)

print(m)
Q = m/rho
print(Q.to('L/min'))
7.70427741167 kilogram / second
462.650196056 liter / minute

The answer given in TP410M is 478 gallons/minute; however the errata specifies this value is in units of liters/minute
insteead.
This calculation matches their result well, given they did not include expansivity in their calculations and read a value
of C from a graph.
A calculator at flow of fluids, which also does not include expansivity, gives an answer of 476.777 L/min, along with
7.93916 kg/s (http://www.flowoffluids.com/calculators/flow-through-orifices.aspx).

436 Chapter 3. Solved fluids mechanics problems


CHAPTER 4

Installation

Get the latest version of fluids from https://pypi.python.org/pypi/fluids/


If you have an installation of Python with pip, simple install it with:
$ pip install fluids
Alternatively, if you are using conda as your package management, you can simply install fluids in your environment
from conda-forge channel with:
$ conda install -c conda-forge fluids
To get the git version, run:
$ git clone git://github.com/CalebBell/fluids.git

437
Fluids Documentation, Release 0.1

438 Chapter 4. Installation


CHAPTER 5

Latest source code

The latest development version of fluids’s sources can be obtained at


https://github.com/CalebBell/fluids

439
Fluids Documentation, Release 0.1

440 Chapter 5. Latest source code


CHAPTER 6

Bug reports

To report bugs, please use the fluids’s Bug Tracker at:


https://github.com/CalebBell/fluids/issues
If you have further questions about the usage of the library, feel free to contact the author at
[email protected].

441
Fluids Documentation, Release 0.1

442 Chapter 6. Bug reports


CHAPTER 7

License information

Fluids is MIT licensed. See LICENSE.txt for full information on the terms & conditions for usage of this software,
and a DISCLAIMER OF ALL WARRANTIES.
Although not required by the fluids license, if it is convenient for you, please cite fluids if used in your work. Please
also consider contributing any changes you make back, such that they may be incorporated into the main library and
all of us will benefit from them.

443
Fluids Documentation, Release 0.1

444 Chapter 7. License information


CHAPTER 8

Citation

To cite fluids in publications use:

Caleb Bell (2016-2018). fluids: Fluid dynamics component of Chemical Engineering


˓→Design Library (ChEDL)

https://github.com/CalebBell/fluids.

445
Fluids Documentation, Release 0.1

446 Chapter 8. Citation


CHAPTER 9

Indices and tables

• genindex
• modindex
• search

447
Fluids Documentation, Release 0.1

448 Chapter 9. Indices and tables


Bibliography

[Rf2dc4e0525c7-1] NOAA, NASA, and USAF. “U.S. Standard Atmosphere, 1976” October 15, 1976. http://ntrs.
nasa.gov/search.jsp?R=19770009539.
[Rf2dc4e0525c7-2] “ISO 2533:1975 - Standard Atmosphere.” ISO. http://www.iso.org/iso/catalogue_detail.htm?
csnumber=7472.
[Rf2dc4e0525c7-3] Yager, Robert J. “Calculating Atmospheric Conditions (Temperature, Pressure, Air Density, and
Speed of Sound) Using C++,” June 2013. http://www.dtic.mil/cgi-bin/GetTRDoc?AD=ADA588839
[R4bc72d62ed0b-1] Picone, J. M., A. E. Hedin, D. P. Drob, and A. C. Aikin. “NRLMSISE-00 Empirical Model of
the Atmosphere: Statistical Comparisons and Scientific Issues.” Journal of Geophysical Research: Space
Physics 107, no. A12 (December 1, 2002): 1468. doi:10.1029/2002JA009430.
[R4bc72d62ed0b-2] Tapping, K. F. “The 10.7Cm Solar Radio Flux (F10.7).” Space Weather 11, no. 7 (July 1, 2013):
394-406. doi:10.1002/swe.20064.
[R4bc72d62ed0b-3] Natalia Papitashvili. “NRLMSISE-00 Atmosphere Model.” Accessed November 27, 2016. http:
//ccmc.gsfc.nasa.gov/modelweb/models/nrlmsise00.php.
[1] Kasten, Fritz, and Andrew T. Young. “Revised Optical Air Mass Tables and Approximation Formula.”
Applied Optics 28, no. 22 (November 15, 1989): 4735-38. https://doi.org/10.1364/AO.28.004735.
[1] Reda, Ibrahim, and Afshin Andreas. “Solar Position Algorithm for Solar Radiation Applications.” Solar
Energy 76, no. 5 (January 1, 2004): 577-89. https://doi.org/10.1016/j.solener.2003.12.003.
[2] “Navigation - What Azimuth Description Systems Are in Use? - Astronomy Stack Exchange.” https:
//astronomy.stackexchange.com/questions/237/what-azimuth-description-systems-are-in-use?rq=1.
[1] Will Holmgren, Calama-Consulting, Tony Lorenzo, Uwe Krien, bmu, DaCoEx, mayudong, et al.
Pvlib/Pvlib-Python: 0.5.1. Zenodo, 2017. https://doi.org/10.5281/zenodo.1016425.
[1] Reda, Ibrahim, and Afshin Andreas. “Solar Position Algorithm for Solar Radiation Applications.” Solar
Energy 76, no. 5 (January 1, 2004): 577-89. https://doi.org/10.1016/j.solener.2003.12.003.
[1] Reda, Ibrahim, and Afshin Andreas. “Solar Position Algorithm for Solar Radiation Applications.” Solar
Energy 76, no. 5 (January 1, 2004): 577-89. https://doi.org/10.1016/j.solener.2003.12.003.
[1] Hedin, A. E., N. W. Spencer, and T. L. Killeen. “Empirical Global Model of Upper Thermosphere Winds
Based on Atmosphere and Dynamics Explorer Satellite Data.” Journal of Geophysical Research: Space
Physics 93, no. A9 (September 1, 1988): 9959-78. doi:10.1029/JA093iA09p09959.

449
Fluids Documentation, Release 0.1

[2] Hedin, A. E., M. A. Biondi, R. G. Burnside, G. Hernandez, R. M. Johnson, T. L. Killeen, C. Maza-


udier, et al. “Revised Global Model of Thermosphere Winds Using Satellite and Ground-Based Ob-
servations.” Journal of Geophysical Research: Space Physics 96, no. A5 (May 1, 1991): 7657-88.
doi:10.1029/91JA00251.
[3] Hedin, A. E., E. L. Fleming, A. H. Manson, F. J. Schmidlin, S. K. Avery, R. R. Clark, S. J. Franke, et
al. “Empirical Wind Model for the Upper, Middle and Lower Atmosphere.” Journal of Atmospheric and
Terrestrial Physics 58, no. 13 (September 1996): 1421-47. doi:10.1016/0021-9169(95)00122-0.
[1] Drob, Douglas P., John T. Emmert, John W. Meriwether, Jonathan J. Makela, Eelco Doornbos,
Mark Conde, Gonzalo Hernandez, et al. “An Update to the Horizontal Wind Model (HWM): The
Quiet Time Thermosphere.” Earth and Space Science 2, no. 7 (July 1, 2015): 2014EA000089.
doi:10.1002/2014EA000089.
[1] Menon, E. Shashi. Gas Pipeline Hydraulics. 1st edition. Boca Raton, FL: CRC Press, 2005.
[2] Crane Co. Flow of Fluids Through Valves, Fittings, and Pipe. Crane, 2009.
[3] GPSA. GPSA Engineering Data Book. 13th edition. Gas Processors Suppliers Association, Tulsa, OK,
2012.
[4] Campbell, John M. Gas Conditioning and Processing, Vol. 2: The Equipment Modules. 7th edition.
Campbell Petroleum Series, 1992.
[5] Coelho, Paulo M., and Carlos Pinho. “Considerations about Equations for Steady State Flow in Natu-
ral Gas Pipelines.” Journal of the Brazilian Society of Mechanical Sciences and Engineering 29, no. 3
(September 2007): 262-73. doi:10.1590/S1678-58782007000300005.
[6] Ikoku, Chi U. Natural Gas Production Engineering. Malabar, Fla: Krieger Pub Co, 1991.
[1] Menon, E. Shashi. Gas Pipeline Hydraulics. 1st edition. Boca Raton, FL: CRC Press, 2005.
[2] Crane Co. Flow of Fluids Through Valves, Fittings, and Pipe. Crane, 2009.
[3] GPSA. GPSA Engineering Data Book. 13th edition. Gas Processors Suppliers Association, Tulsa, OK,
2012.
[4] Campbell, John M. Gas Conditioning and Processing, Vol. 2: The Equipment Modules. 7th edition.
Campbell Petroleum Series, 1992.
[5] Coelho, Paulo M., and Carlos Pinho. “Considerations about Equations for Steady State Flow in Natu-
ral Gas Pipelines.” Journal of the Brazilian Society of Mechanical Sciences and Engineering 29, no. 3
(September 2007): 262-73. doi:10.1590/S1678-58782007000300005.
[6] Ikoku, Chi U. Natural Gas Production Engineering. Malabar, Fla: Krieger Pub Co, 1991.
[1] Menon, E. Shashi. Gas Pipeline Hydraulics. 1st edition. Boca Raton, FL: CRC Press, 2005.
[2] Crane Co. Flow of Fluids Through Valves, Fittings, and Pipe. Crane, 2009.
[3] GPSA. GPSA Engineering Data Book. 13th edition. Gas Processors Suppliers Association, Tulsa, OK,
2012.
[4] Campbell, John M. Gas Conditioning and Processing, Vol. 2: The Equipment Modules. 7th edition.
Campbell Petroleum Series, 1992.
[5] Coelho, Paulo M., and Carlos Pinho. “Considerations about Equations for Steady State Flow in Natu-
ral Gas Pipelines.” Journal of the Brazilian Society of Mechanical Sciences and Engineering 29, no. 3
(September 2007): 262-73. doi:10.1590/S1678-58782007000300005.
[6] Ikoku, Chi U. Natural Gas Production Engineering. Malabar, Fla: Krieger Pub Co, 1991.

450 Bibliography
Fluids Documentation, Release 0.1

[1] Coelho, Paulo M., and Carlos Pinho. “Considerations about Equations for Steady State Flow in Natu-
ral Gas Pipelines.” Journal of the Brazilian Society of Mechanical Sciences and Engineering 29, no. 3
(September 2007): 262-73. doi:10.1590/S1678-58782007000300005.
[2] Menon, E. Shashi. Gas Pipeline Hydraulics. 1st edition. Boca Raton, FL: CRC Press, 2005.
[1] Coelho, Paulo M., and Carlos Pinho. “Considerations about Equations for Steady State Flow in Natu-
ral Gas Pipelines.” Journal of the Brazilian Society of Mechanical Sciences and Engineering 29, no. 3
(September 2007): 262-73. doi:10.1590/S1678-58782007000300005.
[2] Menon, E. Shashi. Gas Pipeline Hydraulics. 1st edition. Boca Raton, FL: CRC Press, 2005.
[3] GPSA. GPSA Engineering Data Book. 13th edition. Gas Processors Suppliers Association, Tulsa, OK,
2012.
[4] PetroWiki. “Pressure Drop Evaluation along Pipelines” Accessed September 11, 2016. http://petrowiki.
org/Pressure_drop_evaluation_along_pipelines#Spitzglass_equation_2.
[1] GPSA. GPSA Engineering Data Book. 13th edition. Gas Processors Suppliers Association, Tulsa, OK,
2012.
[2] F. N. Oliphant, “Production of Natural Gas,” Report. USGS, 1902.
[1] Menon, E. Shashi. Gas Pipeline Hydraulics. 1st edition. Boca Raton, FL: CRC Press, 2005.
[2] Coelho, Paulo M., and Carlos Pinho. “Considerations about Equations for Steady State Flow in Natu-
ral Gas Pipelines.” Journal of the Brazilian Society of Mechanical Sciences and Engineering 29, no. 3
(September 2007): 262-73. doi:10.1590/S1678-58782007000300005.
[1] Mohitpour, Mo, Golshan, and Allan Murray. Pipeline Design and Construction: A Practical Approach.
3rd edition. New York: Amer Soc Mechanical Engineers, 2006.
[2] Menon, E. Shashi. Gas Pipeline Hydraulics. 1st edition. Boca Raton, FL: CRC Press, 2005.
[3] Coelho, Paulo M., and Carlos Pinho. “Considerations about Equations for Steady State Flow in Natu-
ral Gas Pipelines.” Journal of the Brazilian Society of Mechanical Sciences and Engineering 29, no. 3
(September 2007): 262-73. doi:10.1590/S1678-58782007000300005.
[1] Mohitpour, Mo, Golshan, and Allan Murray. Pipeline Design and Construction: A Practical Approach.
3rd edition. New York: Amer Soc Mechanical Engineers, 2006.
[2] Menon, E. Shashi. Gas Pipeline Hydraulics. 1st edition. Boca Raton, FL: CRC Press, 2005.
[3] Coelho, Paulo M., and Carlos Pinho. “Considerations about Equations for Steady State Flow in Natu-
ral Gas Pipelines.” Journal of the Brazilian Society of Mechanical Sciences and Engineering 29, no. 3
(September 2007): 262-73. doi:10.1590/S1678-58782007000300005.
[1] Crane Co. Flow of Fluids Through Valves, Fittings, and Pipe. Crane, 2009.
[2] Kim, J. and Singh, N. “A Novel Equation for Isothermal Pipe Flow.”. Chemical Engineering, June 2012,
http://www.chemengonline.com/a-novel-equation-for-isothermal-pipe-flow/?printmode=1
[3] Wilkes, James O. Fluid Mechanics for Chemical Engineers with Microfluidics and CFD. 2 edition. Upper
Saddle River, NJ: Prentice Hall, 2005.
[4] Rennels, Donald C., and Hobart M. Hudson. Pipe Flow: A Practical and Comprehensive Guide. 1st
edition. Hoboken, N.J: Wiley, 2012.
[1] Couper, James R., W. Roy Penney, and James R. Fair. Chemical Process Equipment: Selection and De-
sign. 2nd ed. Amsterdam; Boston: Gulf Professional Publishing, 2009.
[1] Couper, James R., W. Roy Penney, and James R. Fair. Chemical Process Equipment: Selection and De-
sign. 2nd ed. Amsterdam; Boston: Gulf Professional Publishing, 2009.

Bibliography 451
Fluids Documentation, Release 0.1

[1] Couper, James R., W. Roy Penney, and James R. Fair. Chemical Process Equipment: Selection and De-
sign. 2nd ed. Amsterdam; Boston: Gulf Professional Publishing, 2009.
[1] Couper, James R., W. Roy Penney, and James R. Fair. Chemical Process Equipment: Selection and De-
sign. 2nd ed. Amsterdam; Boston: Gulf Professional Publishing, 2009.
[1] Couper, James R., W. Roy Penney, and James R. Fair. Chemical Process Equipment: Selection and De-
sign. 2nd ed. Amsterdam; Boston: Gulf Professional Publishing, 2009.
[2] GPSA. GPSA Engineering Data Book. 13th edition. Gas Processors Suppliers Association, Tulsa, OK,
2012.
[1] Cengel, Yunus, and John Cimbala. Fluid Mechanics: Fundamentals and Applications. Boston: McGraw
Hill Higher Education, 2006.
[1] Cengel, Yunus, and John Cimbala. Fluid Mechanics: Fundamentals and Applications. Boston: McGraw
Hill Higher Education, 2006.
[1] Wilkes, James O. Fluid Mechanics for Chemical Engineers with Microfluidics and CFD. 2 edition. Upper
Saddle River, NJ: Prentice Hall, 2005.
[1] API. 2014. API 520 - Part 1 Sizing, Selection, and Installation of Pressure-relieving Devices, Part I -
Sizing and Selection, 9E.
[1] Cengel, Yunus, and John Cimbala. Fluid Mechanics: Fundamentals and Applications. Boston: McGraw
Hill Higher Education, 2006.
[1] Cengel, Yunus, and John Cimbala. Fluid Mechanics: Fundamentals and Applications. Boston: McGraw
Hill Higher Education, 2006.
[1] Cengel, Yunus, and John Cimbala. Fluid Mechanics: Fundamentals and Applications. Boston: McGraw
Hill Higher Education, 2006.
[1] Cengel, Yunus, and John Cimbala. Fluid Mechanics: Fundamentals and Applications. Boston: McGraw
Hill Higher Education, 2006.
[1] IEC 60534-2-1 / ISA-75.01.01-2007
[1] IEC 60534-2-1 / ISA-75.01.01-2007
[1] ISA. “RP75.23 Considerations for Evaluating Control Valve Cavitation.” 1995.
[1] IEC 60534-2-1 / ISA-75.01.01-2007
[1] IEC 60534-2-1 / ISA-75.01.01-2007
[1] IEC 60534-2-1 / ISA-75.01.01-2007
[1] IEC 60534-2-1 / ISA-75.01.01-2007
[1] IEC 60534-2-1 / ISA-75.01.01-2007
[1] IEC 60534-2-1 / ISA-75.01.01-2007
[1] IEC 60534-8-4: Industrial-Process Control Valves - Part 8-4: Noise Considerations - Prediction of Noise
Generated by Hydrodynamic Flow. (2015)
[1] IEC 60534-8-3: Industrial-Process Control Valves - Part 8-3: Noise Considerations - Control Valve Aero-
dynamic Noise Prediction Method.”
[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.

452 Bibliography
Fluids Documentation, Release 0.1

[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.
[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.
[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.
[1] Green, Don, and Robert Perry. Perry’s Chemical Engineers’ Handbook, Eighth Edition. McGraw-Hill
Professional, 2007.
[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.
[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.
[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.
[1] Green, Don, and Robert Perry. Perry’s Chemical Engineers’ Handbook, Eighth Edition. McGraw-Hill
Professional, 2007.
[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.
[1] Green, Don, and Robert Perry. Perry’s Chemical Engineers’ Handbook, Eighth Edition. McGraw-Hill
Professional, 2007.
[1] Bergman, Theodore L., Adrienne S. Lavine, Frank P. Incropera, and David P. DeWitt. Introduction to
Heat Transfer. 6E. Hoboken, NJ: Wiley, 2011.
[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.

Bibliography 453
Fluids Documentation, Release 0.1

[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.
[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.
[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.
[1] Green, Don, and Robert Perry. Perry’s Chemical Engineers’ Handbook, Eighth Edition. McGraw-Hill
Professional, 2007.
[1] Catchpole, John P., and George. Fulford. “DIMENSIONLESS GROUPS.” Industrial & Engineering
Chemistry 58, no. 3 (March 1, 1966): 46-60. doi:10.1021/ie50675a012.
[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.
[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.
[1] Hall, A, G Stobie, and R Steven. “Further Evaluation of the Performance of Horizontally Installed Ori-
fice Plate and Cone Differential Pressure Meters with Wet Gas Flows.” In International SouthEast Asia
Hydrocarbon Flow Measurement Workshop, KualaLumpur, Malaysia, 2008.
[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.
[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.
[1] Green, Don, and Robert Perry. Perry’s Chemical Engineers’ Handbook, Eighth Edition. McGraw-Hill
Professional, 2007.
[1] Bergman, Theodore L., Adrienne S. Lavine, Frank P. Incropera, and David P. DeWitt. Introduction to
Heat Transfer. 6E. Hoboken, NJ: Wiley, 2011.
[1] Green, Don, and Robert Perry. Perry’s Chemical Engineers’ Handbook, Eighth Edition. McGraw-Hill
Professional, 2007.

454 Bibliography
Fluids Documentation, Release 0.1

[2] Cengel, Yunus, and John Cimbala. Fluid Mechanics: Fundamentals and Applications. Boston: McGraw
Hill Higher Education, 2006.
[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.
[1] Goldstein, Richard J. ECKERT NUMBER. Thermopedia. Hemisphere, 2011.
10.1615/AtoZ.e.eckert_number
[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.
[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.
[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 Sepa-
ration 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.
[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.
[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.
[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.
[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.
[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.

Bibliography 455
Fluids Documentation, Release 0.1

[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.
[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.
[1] Green, Don, and Robert Perry. Perry’s Chemical Engineers’ Handbook, Eighth Edition. McGraw-Hill
Professional, 2007.
[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.
[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.
[1] Blevins, Robert D. Applied Fluid Dynamics Handbook. New York, N.Y.: Van Nostrand Reinhold Co.,
1984.
[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.
[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.
[1] Cengel, Yunus, and John Cimbala. Fluid Mechanics: Fundamentals and Applications. Boston: McGraw
Hill Higher Education, 2006.
[1] Haynes, W.M., Thomas J. Bruno, and David R. Lide. CRC Handbook of Chemistry and Physics. [Boca
Raton, FL]: CRC press, 2014.
[1] Green, Don, and Robert Perry. Perry’s Chemical Engineers’ Handbook, Eighth Edition. McGraw-Hill
Professional, 2007.
[1] Green, Don, and Robert Perry. Perry’s Chemical Engineers’ Handbook, Eighth Edition. McGraw-Hill
Professional, 2007.
[2] Rushton, Albert, Anthony S. Ward, and Richard G. Holdich. Solid-Liquid Filtration and Separation Tech-
nology. 1st edition. Weinheim; New York: Wiley-VCH, 1996.

456 Bibliography
Fluids Documentation, Release 0.1

[1] Timmerman, Peter, and Jacobus P. van der Weele. “On the Rise and Fall of a Ball with Linear or Quadratic
Drag.” American Journal of Physics 67, no. 6 (June 1999): 538-46. https://doi.org/10.1119/1.19320.
[1] Rhodes, Martin J. Introduction to Particle Technology. Wiley, 2013.
[1] Barati, Reza, Seyed Ali Akbar Salehi Neyshabouri, and Goodarz Ahmadi. “Development of Empirical
Models with High Accuracy for Estimation of Drag Coefficient of Flow around a Smooth Sphere: An Evo-
lutionary Approach.” Powder Technology 257 (May 2014): 11-19. doi:10.1016/j.powtec.2014.02.045.
[1] Barati, Reza, Seyed Ali Akbar Salehi Neyshabouri, and Goodarz Ahmadi. “Development of Empirical
Models with High Accuracy for Estimation of Drag Coefficient of Flow around a Smooth Sphere: An Evo-
lutionary Approach.” Powder Technology 257 (May 2014): 11-19. doi:10.1016/j.powtec.2014.02.045.
[1] H. Rouse, Fluid Mechanics for Hydraulic Engineers, Dover, New York, N.Y., 1938
[2] Barati, Reza, Seyed Ali Akbar Salehi Neyshabouri, and Goodarz Ahmadi. “Development of Empirical
Models with High Accuracy for Estimation of Drag Coefficient of Flow around a Smooth Sphere: An Evo-
lutionary Approach.” Powder Technology 257 (May 2014): 11-19. doi:10.1016/j.powtec.2014.02.045.
[1] F. Engelund, E. Hansen, Monograph on Sediment Transport in Alluvial Streams, Monograpsh Denmark
Technical University, Hydraulic Lab, Denmark, 1967.
[2] Barati, Reza, Seyed Ali Akbar Salehi Neyshabouri, and Goodarz Ahmadi. “Development of Empirical
Models with High Accuracy for Estimation of Drag Coefficient of Flow around a Smooth Sphere: An Evo-
lutionary Approach.” Powder Technology 257 (May 2014): 11-19. doi:10.1016/j.powtec.2014.02.045.
[1] R. Clift, W.H. Gauvin, The motion of particles in turbulent gas streams, Proc. Chemeca, 70, 1970, pp.
14-28.
[2] Barati, Reza, Seyed Ali Akbar Salehi Neyshabouri, and Goodarz Ahmadi. “Development of Empirical
Models with High Accuracy for Estimation of Drag Coefficient of Flow around a Smooth Sphere: An Evo-
lutionary Approach.” Powder Technology 257 (May 2014): 11-19. doi:10.1016/j.powtec.2014.02.045.
[1] Morsi, S. A., and A. J. Alexander. “An Investigation of Particle Trajectories in Two-Phase Flow Systems.”
Journal of Fluid Mechanics 55, no. 02 (September 1972): 193-208. doi:10.1017/S0022112072001806.
[2] Barati, Reza, Seyed Ali Akbar Salehi Neyshabouri, and Goodarz Ahmadi. “Development of Empirical
Models with High Accuracy for Estimation of Drag Coefficient of Flow around a Smooth Sphere: An Evo-
lutionary Approach.” Powder Technology 257 (May 2014): 11-19. doi:10.1016/j.powtec.2014.02.045.
[1] W.H. Graf, Hydraulics of Sediment Transport, Water Resources Publications, Littleton, Colorado, 1984.
[2] Barati, Reza, Seyed Ali Akbar Salehi Neyshabouri, and Goodarz Ahmadi. “Development of Empirical
Models with High Accuracy for Estimation of Drag Coefficient of Flow around a Smooth Sphere: An Evo-
lutionary Approach.” Powder Technology 257 (May 2014): 11-19. doi:10.1016/j.powtec.2014.02.045.
[1] Flemmer, R. L. C., and C. L. Banks. “On the Drag Coefficient of a Sphere.” Powder Technology 48, no.
3 (November 1986): 217-21. doi:10.1016/0032-5910(86)80044-4.
[2] Barati, Reza, Seyed Ali Akbar Salehi Neyshabouri, and Goodarz Ahmadi. “Development of Empirical
Models with High Accuracy for Estimation of Drag Coefficient of Flow around a Smooth Sphere: An Evo-
lutionary Approach.” Powder Technology 257 (May 2014): 11-19. doi:10.1016/j.powtec.2014.02.045.
[1] Khan, A. R., and J. F. Richardson. “The Resistance to Motion of a Solid Sphere in a Fluid.” Chemical En-
gineering Communications 62, no. 1-6 (December 1, 1987): 135-50. doi:10.1080/00986448708912056.
[2] Barati, Reza, Seyed Ali Akbar Salehi Neyshabouri, and Goodarz Ahmadi. “Development of Empirical
Models with High Accuracy for Estimation of Drag Coefficient of Flow around a Smooth Sphere: An Evo-
lutionary Approach.” Powder Technology 257 (May 2014): 11-19. doi:10.1016/j.powtec.2014.02.045.
[1] Swamee, P. and Ojha, C. (1991). “Drag Coefficient and Fall Velocity of nonspherical particles.” J. Hy-
draul. Eng., 117(5), 660-667.

Bibliography 457
Fluids Documentation, Release 0.1

[2] Barati, Reza, Seyed Ali Akbar Salehi Neyshabouri, and Goodarz Ahmadi. “Development of Empirical
Models with High Accuracy for Estimation of Drag Coefficient of Flow around a Smooth Sphere: An Evo-
lutionary Approach.” Powder Technology 257 (May 2014): 11-19. doi:10.1016/j.powtec.2014.02.045.
[1] B.C. Yen, Sediment Fall Velocity in Oscillating Flow, University of Virginia, Department of Civil Engi-
neering, 1992.
[2] Barati, Reza, Seyed Ali Akbar Salehi Neyshabouri, and Goodarz Ahmadi. “Development of Empirical
Models with High Accuracy for Estimation of Drag Coefficient of Flow around a Smooth Sphere: An Evo-
lutionary Approach.” Powder Technology 257 (May 2014): 11-19. doi:10.1016/j.powtec.2014.02.045.
[1] Haider, A., and O. Levenspiel. “Drag Coefficient and Terminal Velocity of Spherical and Nonspherical
Particles.” Powder Technology 58, no. 1 (May 1989): 63-70. doi:10.1016/0032-5910(89)80008-7.
[2] Barati, Reza, Seyed Ali Akbar Salehi Neyshabouri, and Goodarz Ahmadi. “Development of Empirical
Models with High Accuracy for Estimation of Drag Coefficient of Flow around a Smooth Sphere: An Evo-
lutionary Approach.” Powder Technology 257 (May 2014): 11-19. doi:10.1016/j.powtec.2014.02.045.
[1] Cheng, Nian-Sheng. “Comparison of Formulas for Drag Coefficient and Settling Velocity
of Spherical Particles.” Powder Technology 189, no. 3 (February 13, 2009): 395-398.
doi:10.1016/j.powtec.2008.07.006.
[2] Barati, Reza, Seyed Ali Akbar Salehi Neyshabouri, and Goodarz Ahmadi. “Development of Empirical
Models with High Accuracy for Estimation of Drag Coefficient of Flow around a Smooth Sphere: An Evo-
lutionary Approach.” Powder Technology 257 (May 2014): 11-19. doi:10.1016/j.powtec.2014.02.045.
[1] Terfous, A., A. Hazzab, and A. Ghenaim. “Predicting the Drag Coefficient and Settling Velocity of Spher-
ical Particles.” Powder Technology 239 (May 2013): 12-20. doi:10.1016/j.powtec.2013.01.052.
[2] Barati, Reza, Seyed Ali Akbar Salehi Neyshabouri, and Goodarz Ahmadi. “Development of Empirical
Models with High Accuracy for Estimation of Drag Coefficient of Flow around a Smooth Sphere: An Evo-
lutionary Approach.” Powder Technology 257 (May 2014): 11-19. doi:10.1016/j.powtec.2014.02.045.
[1] Mikhailov, M. D., and A. P. Silva Freire. “The Drag Coefficient of a Sphere: An Approximation Using
Shanks Transform.” Powder Technology 237 (March 2013): 432-35. doi:10.1016/j.powtec.2012.12.033.
[2] Barati, Reza, Seyed Ali Akbar Salehi Neyshabouri, and Goodarz Ahmadi. “Development of Empirical
Models with High Accuracy for Estimation of Drag Coefficient of Flow around a Smooth Sphere: An Evo-
lutionary Approach.” Powder Technology 257 (May 2014): 11-19. doi:10.1016/j.powtec.2014.02.045.
[1] R. Clift, J.R. Grace, M.E. Weber, Bubbles, Drops, and Particles, Academic, New York, 1978.
[2] Barati, Reza, Seyed Ali Akbar Salehi Neyshabouri, and Goodarz Ahmadi. “Development of Empirical
Models with High Accuracy for Estimation of Drag Coefficient of Flow around a Smooth Sphere: An Evo-
lutionary Approach.” Powder Technology 257 (May 2014): 11-19. doi:10.1016/j.powtec.2014.02.045.
[1] Ceylan, Kadim, Ayşe Altunbaş, and Gudret Kelbaliyev. “A New Model for Estimation of Drag Force in
the Flow of Newtonian Fluids around Rigid or Deformable Particles.” Powder Technology 119, no. 2-3
(September 24, 2001): 250-56. doi:10.1016/S0032-5910(01)00261-3.
[2] Barati, Reza, Seyed Ali Akbar Salehi Neyshabouri, and Goodarz Ahmadi. “Development of Empirical
Models with High Accuracy for Estimation of Drag Coefficient of Flow around a Smooth Sphere: An Evo-
lutionary Approach.” Powder Technology 257 (May 2014): 11-19. doi:10.1016/j.powtec.2014.02.045.
[1] Almedeij, Jaber. “Drag Coefficient of Flow around a Sphere: Matching Asymptotically the Wide Trend.”
Powder Technology 186, no. 3 (September 10, 2008): 218-23. doi:10.1016/j.powtec.2007.12.006.
[2] Barati, Reza, Seyed Ali Akbar Salehi Neyshabouri, and Goodarz Ahmadi. “Development of Empirical
Models with High Accuracy for Estimation of Drag Coefficient of Flow around a Smooth Sphere: An Evo-
lutionary Approach.” Powder Technology 257 (May 2014): 11-19. doi:10.1016/j.powtec.2014.02.045.
[1] Morrison, Faith A. An Introduction to Fluid Mechanics. Cambridge University Press, 2013.

458 Bibliography
Fluids Documentation, Release 0.1

[2] Barati, Reza, Seyed Ali Akbar Salehi Neyshabouri, and Goodarz Ahmadi. “Development of Empirical
Models with High Accuracy for Estimation of Drag Coefficient of Flow around a Smooth Sphere: An Evo-
lutionary Approach.” Powder Technology 257 (May 2014): 11-19. doi:10.1016/j.powtec.2014.02.045.
[1] Song, Xianzhi, Zhengming Xu, Gensheng Li, Zhaoyu Pang, and Zhaopeng Zhu. “A New Model for
Predicting Drag Coefficient and Settling Velocity of Spherical and Non-Spherical Particle in Newtonian
Fluid.” Powder Technology 321 (November 2017): 242-50. doi:10.1016/j.powtec.2017.08.017.
[1] Blevins, Robert D. Applied Fluid Dynamics Handbook. New York, N.Y.: Van Nostrand Reinhold Co.,
1984.
[1] Blevins, Robert D. Applied Fluid Dynamics Handbook. New York, N.Y.: Van Nostrand Reinhold Co.,
1984.
[1] Blevins, Robert D. Applied Fluid Dynamics Handbook. New York, N.Y.: Van Nostrand Reinhold Co.,
1984.
[1] Blevins, Robert D. Applied Fluid Dynamics Handbook. New York, N.Y.: Van Nostrand Reinhold Co.,
1984.
[1] Blevins, Robert D. Applied Fluid Dynamics Handbook. New York, N.Y.: Van Nostrand Reinhold Co.,
1984.
[1] Rennels, Donald C., and Hobart M. Hudson. Pipe Flow: A Practical and Comprehensive Guide. 1st
edition. Hoboken, N.J: Wiley, 2012.
[1] Rennels, Donald C., and Hobart M. Hudson. Pipe Flow: A Practical and Comprehensive Guide. 1st
edition. Hoboken, N.J: Wiley, 2012.
[2] Miller, Donald S. Internal Flow Systems: Design and Performance Prediction. Gulf Publishing Company,
1990.
[3] Idel’chik, I. E. Handbook of Hydraulic Resistance: Coefficients of Local Resistance and of Fric-
tion (Spravochnik Po Gidravlicheskim Soprotivleniyam, Koeffitsienty Mestnykh Soprotivlenii i Sopro-
tivleniya Treniya). National technical information Service, 1966.
[1] Miller, Donald S. Internal Flow Systems: Design and Performance Prediction. Gulf Publishing Company,
1990.
[1] Rennels, Donald C., and Hobart M. Hudson. Pipe Flow: A Practical and Comprehensive Guide. 1st
edition. Hoboken, N.J: Wiley, 2012.
[2] Idel’chik, I. E. Handbook of Hydraulic Resistance: Coefficients of Local Resistance and of Fric-
tion (Spravochnik Po Gidravlicheskim Soprotivleniyam, Koeffitsienty Mestnykh Soprotivlenii i Sopro-
tivleniya Treniya). National technical information Service, 1966.
[3] Blevins, Robert D. Applied Fluid Dynamics Handbook. New York, N.Y.: Van Nostrand Reinhold Co.,
1984.
[4] Crane Co. Flow of Fluids Through Valves, Fittings, and Pipe. Crane, 2009.
[5] Swamee, Prabhata K., and Ashok K. Sharma. Design of Water Supply Pipe Networks. John Wiley &
Sons, 2008.
[6] Miller, Donald S. Internal Flow Systems: Design and Performance Prediction. Gulf Publishing Company,
1990.
[1] Crane Co. Flow of Fluids Through Valves, Fittings, and Pipe. Crane, 2009.
[1] Rennels, Donald C., and Hobart M. Hudson. Pipe Flow: A Practical and Comprehensive Guide. 1st
edition. Hoboken, N.J: Wiley, 2012.
[1] Rennels, Donald C., and Hobart M. Hudson. Pipe Flow: A Practical and Comprehensive Guide. 1st
edition. Hoboken, N.J: Wiley, 2012.

Bibliography 459
Fluids Documentation, Release 0.1

[1] Rennels, Donald C., and Hobart M. Hudson. Pipe Flow: A Practical and Comprehensive Guide. 1st
edition. Hoboken, N.J: Wiley, 2012.
[2] Idel’chik, I. E. Handbook of Hydraulic Resistance: Coefficients of Local Resistance and of Fric-
tion (Spravochnik Po Gidravlicheskim Soprotivleniyam, Koeffitsienty Mestnykh Soprotivlenii i Sopro-
tivleniya Treniya). National technical information Service, 1966.
[3] Crane Co. Flow of Fluids Through Valves, Fittings, and Pipe. Crane, 2009.
[4] Swamee, Prabhata K., and Ashok K. Sharma. Design of Water Supply Pipe Networks. John Wiley &
Sons, 2008.
[5] Miller, Donald S. Internal Flow Systems: Design and Performance Prediction. Gulf Publishing Company,
1990.
[1] Rennels, Donald C., and Hobart M. Hudson. Pipe Flow: A Practical and Comprehensive Guide. 1st
edition. Hoboken, N.J: Wiley, 2012.
[1] Rennels, Donald C., and Hobart M. Hudson. Pipe Flow: A Practical and Comprehensive Guide. 1st
edition. Hoboken, N.J: Wiley, 2012.
[1] Rennels, Donald C., and Hobart M. Hudson. Pipe Flow: A Practical and Comprehensive Guide. 1st
edition. Hoboken, N.J: Wiley, 2012.
[1] Rennels, Donald C., and Hobart M. Hudson. Pipe Flow: A Practical and Comprehensive Guide. 1st
edition. Hoboken, N.J: Wiley, 2012.
[2] Miller, Donald S. Internal Flow Systems: Design and Performance Prediction. Gulf Publishing Company,
1990.
[3] Idel’chik, I. E. Handbook of Hydraulic Resistance: Coefficients of Local Resistance and of Fric-
tion (Spravochnik Po Gidravlicheskim Soprotivleniyam, Koeffitsienty Mestnykh Soprotivlenii i Sopro-
tivleniya Treniya). National technical information Service, 1966.
[4] Blevins, Robert D. Applied Fluid Dynamics Handbook. New York, N.Y.: Van Nostrand Reinhold Co.,
1984.
[5] Crane Co. Flow of Fluids Through Valves, Fittings, and Pipe. Crane, 2009.
[6] Swamee, Prabhata K., and Ashok K. Sharma. Design of Water Supply Pipe Networks. John Wiley &
Sons, 2008.
[1] Rennels, Donald C., and Hobart M. Hudson. Pipe Flow: A Practical and Comprehensive Guide. 1st
edition. Hoboken, N.J: Wiley, 2012.
[2] Miller, Donald S. Internal Flow Systems: Design and Performance Prediction. Gulf Publishing Company,
1990.
[3] Idel’chik, I. E. Handbook of Hydraulic Resistance: Coefficients of Local Resistance and of Fric-
tion (Spravochnik Po Gidravlicheskim Soprotivleniyam, Koeffitsienty Mestnykh Soprotivlenii i Sopro-
tivleniya Treniya). National technical information Service, 1966.
[4] Harris, Charles William. The Influence of Pipe Thickness on Re-Entrant Intake Losses. Vol. 48. University
of Washington, 1928.
[5] Blevins, Robert D. Applied Fluid Dynamics Handbook. New York, N.Y.: Van Nostrand Reinhold Co.,
1984.
[6] Crane Co. Flow of Fluids Through Valves, Fittings, and Pipe. Crane, 2009.
[1] Rennels, Donald C., and Hobart M. Hudson. Pipe Flow: A Practical and Comprehensive Guide. 1st
edition. Hoboken, N.J: Wiley, 2012.

460 Bibliography
Fluids Documentation, Release 0.1

[2] Idel’chik, I. E. Handbook of Hydraulic Resistance: Coefficients of Local Resistance and of Fric-
tion (Spravochnik Po Gidravlicheskim Soprotivleniyam, Koeffitsienty Mestnykh Soprotivlenii i Sopro-
tivleniya Treniya). National technical information Service, 1966.
[3] Blevins, Robert D. Applied Fluid Dynamics Handbook. New York, N.Y.: Van Nostrand Reinhold Co.,
1984.
[1] Rennels, Donald C., and Hobart M. Hudson. Pipe Flow: A Practical and Comprehensive Guide. 1st
edition. Hoboken, N.J: Wiley, 2012.
[2] Hamilton, James Baker. Suppression of Pipe Intake Losses by Various Degrees of Rounding. Seattle: Pub-
lished by the University of Washington, 1929. https://search.library.wisc.edu/catalog/999823652202121.
[3] Miller, Donald S. Internal Flow Systems: Design and Performance Prediction. Gulf Publishing Company,
1990.
[4] Harris, Charles William. Elimination of Hydraulic Eddy Current Loss at Intake, Agreement of Theory
and Experiment. University of Washington, 1930.
[5] Swamee, Prabhata K., and Ashok K. Sharma. Design of Water Supply Pipe Networks. John Wiley &
Sons, 2008.
[6] Crane Co. Flow of Fluids Through Valves, Fittings, and Pipe. Crane, 2009.
[7] Blevins, Robert D. Applied Fluid Dynamics Handbook. New York, N.Y.: Van Nostrand Reinhold Co.,
1984.
[8] Idel’chik, I. E. Handbook of Hydraulic Resistance: Coefficients of Local Resistance and of Fric-
tion (Spravochnik Po Gidravlicheskim Soprotivleniyam, Koeffitsienty Mestnykh Soprotivlenii i Sopro-
tivleniya Treniya). National technical information Service, 1966.
[1] Rennels, Donald C., and Hobart M. Hudson. Pipe Flow: A Practical and Comprehensive Guide. 1st
edition. Hoboken, N.J: Wiley, 2012.
[2] Idel’chik, I. E. Handbook of Hydraulic Resistance: Coefficients of Local Resistance and of Fric-
tion (Spravochnik Po Gidravlicheskim Soprotivleniyam, Koeffitsienty Mestnykh Soprotivlenii i Sopro-
tivleniya Treniya). National technical information Service, 1966.
[1] Rennels, Donald C., and Hobart M. Hudson. Pipe Flow: A Practical and Comprehensive Guide. 1st
edition. Hoboken, N.J: Wiley, 2012.
[1] Miller, Donald S. Internal Flow Systems: Design and Performance Prediction. Gulf Publishing Company,
1990.
[1] Rennels, Donald C., and Hobart M. Hudson. Pipe Flow: A Practical and Comprehensive Guide. 1st
edition. Hoboken, N.J: Wiley, 2012.
[1] Rennels, Donald C., and Hobart M. Hudson. Pipe Flow: A Practical and Comprehensive Guide. 1st
edition. Hoboken, N.J: Wiley, 2012.
[2] Miller, Donald S. Internal Flow Systems: Design and Performance Prediction. Gulf Publishing Company,
1990.
[3] Crane Co. Flow of Fluids Through Valves, Fittings, and Pipe. Crane, 2009.
[4] Swamee, Prabhata K., and Ashok K. Sharma. Design of Water Supply Pipe Networks. John Wiley &
Sons, 2008.
[5] Ito, H.”Pressure Losses in Smooth Pipe Bends.” Journal of Fluids Engineering 82, no. 1 (March 1, 1960):
131-40. doi:10.1115/1.3662501
[6] Blevins, Robert D. Applied Fluid Dynamics Handbook. New York, N.Y.: Van Nostrand Reinhold Co.,
1984.

Bibliography 461
Fluids Documentation, Release 0.1

[1] Miller, Donald S. Internal Flow Systems: Design and Performance Prediction. Gulf Publishing Company,
1990.
[1] Crane Co. Flow of Fluids Through Valves, Fittings, and Pipe. Crane, 2009.
[1] Rennels, Donald C., and Hobart M. Hudson. Pipe Flow: A Practical and Comprehensive Guide. 1st
edition. Hoboken, N.J: Wiley, 2012.
[2] Miller, Donald S. Internal Flow Systems: Design and Performance Prediction. Gulf Publishing Company,
1990.
[3] Crane Co. Flow of Fluids Through Valves, Fittings, and Pipe. Crane, 2009.
[4] Blevins, Robert D. Applied Fluid Dynamics Handbook. New York, N.Y.: Van Nostrand Reinhold Co.,
1984.
[1] Miller, Donald S. Internal Flow Systems: Design and Performance Prediction. Gulf Publishing Company,
1990.
[1] Rennels, Donald C., and Hobart M. Hudson. Pipe Flow: A Practical and Comprehensive Guide. 1st
edition. Hoboken, N.J: Wiley, 2012.
[1] Rennels, Donald C., and Hobart M. Hudson. Pipe Flow: A Practical and Comprehensive Guide. 1st
edition. Hoboken, N.J: Wiley, 2012.
[1] Silverberg, Peter, and Ron Darby. “Correlate Pressure Drops through Fittings: Three Constants Accu-
rately Calculate Flow through Elbows, Valves and Tees.” Chemical Engineering 106, no. 7 (July 1999):
101.
[2] Silverberg, Peter. “Correlate Pressure Drops Through Fittings.” Chemical Engineering 108, no. 4 (April
2001): 127,129-130.
[1] Hooper, W. B., “The 2-K Method Predicts Head Losses in Pipe Fittings,” Chem. Eng., p. 97, Aug. 24
(1981).
[2] Hooper, William B. “Calculate Head Loss Caused by Change in Pipe Size.” Chemical Engineering 95,
no. 16 (November 7, 1988): 89.
[3] Kayode Coker. Ludwig’s Applied Process Design for Chemical and Petrochemical Plants. 4E. Amster-
dam; Boston: Gulf Professional Publishing, 2007.
[1] ISA-75.01.01-2007 (60534-2-1 Mod) Draft
[1] ISA-75.01.01-2007 (60534-2-1 Mod) Draft
[1] ISA-75.01.01-2007 (60534-2-1 Mod) Draft
[1] ISA-75.01.01-2007 (60534-2-1 Mod) Draft
[1] ISA-75.01.01-2007 (60534-2-1 Mod) Draft
[1] ISA-75.01.01-2007 (60534-2-1 Mod) Draft
[1] Rennels, Donald C., and Hobart M. Hudson. Pipe Flow: A Practical and Comprehensive Guide. 1st
edition. Hoboken, N.J: Wiley, 2012.
[1] Crane Co. Flow of Fluids Through Valves, Fittings, and Pipe. Crane, 2009.
[2] Harvey Wilson. “Pressure Drop in Pipe Fittings and Valves | Equivalent Length and Resistance
Coefficient.” Katmar Software. Accessed July 28, 2017. http://www.katmarsoftware.com/articles/
pipe-fitting-pressure-drop.htm.
[1] Crane Co. Flow of Fluids Through Valves, Fittings, and Pipe. Crane, 2009.
[1] Crane Co. Flow of Fluids Through Valves, Fittings, and Pipe. Crane, 2009.

462 Bibliography
Fluids Documentation, Release 0.1

[1] Crane Co. Flow of Fluids Through Valves, Fittings, and Pipe. Crane, 2009.
[1] Crane Co. Flow of Fluids Through Valves, Fittings, and Pipe. Crane, 2009.
[1] Crane Co. Flow of Fluids Through Valves, Fittings, and Pipe. Crane, 2009.
[1] Crane Co. Flow of Fluids Through Valves, Fittings, and Pipe. Crane, 2009.
[1] Crane Co. Flow of Fluids Through Valves, Fittings, and Pipe. Crane, 2009.
[1] Crane Co. Flow of Fluids Through Valves, Fittings, and Pipe. Crane, 2009.
[1] Crane Co. Flow of Fluids Through Valves, Fittings, and Pipe. Crane, 2009.
[1] Crane Co. Flow of Fluids Through Valves, Fittings, and Pipe. Crane, 2009.
[1] Crane Co. Flow of Fluids Through Valves, Fittings, and Pipe. Crane, 2009.
[1] Crane Co. Flow of Fluids Through Valves, Fittings, and Pipe. Crane, 2009.
[1] Crane Co. Flow of Fluids Through Valves, Fittings, and Pipe. Crane, 2009.
[1] Crane Co. Flow of Fluids Through Valves, Fittings, and Pipe. Crane, 2009.
[1] Crane Co. Flow of Fluids Through Valves, Fittings, and Pipe. Crane, 2009.
[1] Crane Co. Flow of Fluids Through Valves, Fittings, and Pipe. Crane, 2009.
[1] Crane Co. Flow of Fluids Through Valves, Fittings, and Pipe. Crane, 2009.
[1] American Society of Mechanical Engineers. Mfc-3M-2004 Measurement Of Fluid Flow In Pipes Using
Orifice, Nozzle, And Venturi. ASME, 2001.
[2] ISO 5167-2:2003 - Measurement of Fluid Flow by Means of Pressure Differential Devices Inserted in
Circular Cross-Section Conduits Running Full – Part 2: Orifice Plates.
[3] Reader-Harris, M. J., “The Equation for the Expansibility Factor for Orifice Plates,” Proceedings of
FLOMEKO 1998, Lund, Sweden, 1998: 209-214.
[4] Reader-Harris, Michael. Orifice Plates and Venturi Tubes. Springer, 2015.
[1] American Society of Mechanical Engineers. Mfc-3M-2004 Measurement Of Fluid Flow In Pipes Using
Orifice, Nozzle, And Venturi. ASME, 2001.
[2] ISO 5167-2:2003 - Measurement of Fluid Flow by Means of Pressure Differential Devices Inserted in
Circular Cross-Section Conduits Running Full – Part 2: Orifice Plates.
[1] American Society of Mechanical Engineers. Mfc-3M-2004 Measurement Of Fluid Flow In Pipes Using
Orifice, Nozzle, And Venturi. ASME, 2001.
[2] ISO 5167-2:2003 - Measurement of Fluid Flow by Means of Pressure Differential Devices Inserted in
Circular Cross-Section Conduits Running Full – Part 2: Orifice Plates.
[1] American Society of Mechanical Engineers. Mfc-3M-2004 Measurement Of Fluid Flow In Pipes Using
Orifice, Nozzle, And Venturi. ASME, 2001.
[2] ISO 5167-2:2003 - Measurement of Fluid Flow by Means of Pressure Differential Devices Inserted in
Circular Cross-Section Conduits Running Full – Part 2: Orifice Plates.
[1] American Society of Mechanical Engineers. Mfc-3M-2004 Measurement Of Fluid Flow In Pipes Using
Orifice, Nozzle, And Venturi. ASME, 2001.
[2] ISO 5167-2:2003 - Measurement of Fluid Flow by Means of Pressure Differential Devices Inserted in
Circular Cross-Section Conduits Running Full – Part 2: Orifice Plates.
[1] American Society of Mechanical Engineers. Mfc-3M-2004 Measurement Of Fluid Flow In Pipes Using
Orifice, Nozzle, And Venturi. ASME, 2001.

Bibliography 463
Fluids Documentation, Release 0.1

[2] ISO 5167-2:2003 - Measurement of Fluid Flow by Means of Pressure Differential Devices Inserted in
Circular Cross-Section Conduits Running Full – Part 2: Orifice Plates.
[1] American Society of Mechanical Engineers. Mfc-3M-2004 Measurement Of Fluid Flow In Pipes Using
Orifice, Nozzle, And Venturi. ASME, 2001.
[1] American Society of Mechanical Engineers. Mfc-3M-2004 Measurement Of Fluid Flow In Pipes Using
Orifice, Nozzle, And Venturi. ASME, 2001.
[2] Miller, Richard W. Flow Measurement Engineering Handbook. 3rd edition. New York: McGraw-Hill
Education, 1996.
[1] American Society of Mechanical Engineers. Mfc-3M-2004 Measurement Of Fluid Flow In Pipes Using
Orifice, Nozzle, And Venturi. ASME, 2001.
[2] ISO 5167-3:2003 - Measurement of Fluid Flow by Means of Pressure Differential Devices Inserted in
Circular Cross-Section Conduits Running Full – Part 3: Nozzles and Venturi Nozzles.
[1] American Society of Mechanical Engineers. Mfc-3M-2004 Measurement Of Fluid Flow In Pipes Using
Orifice, Nozzle, And Venturi. ASME, 2001.
[2] ISO 5167-3:2003 - Measurement of Fluid Flow by Means of Pressure Differential Devices Inserted in
Circular Cross-Section Conduits Running Full – Part 3: Nozzles and Venturi Nozzles.
[1] American Society of Mechanical Engineers. Mfc-3M-2004 Measurement Of Fluid Flow In Pipes Using
Orifice, Nozzle, And Venturi. ASME, 2001.
[2] ISO 5167-3:2003 - Measurement of Fluid Flow by Means of Pressure Differential Devices Inserted in
Circular Cross-Section Conduits Running Full – Part 3: Nozzles and Venturi Nozzles.
[1] American Society of Mechanical Engineers. Mfc-3M-2004 Measurement Of Fluid Flow In Pipes Using
Orifice, Nozzle, And Venturi. ASME, 2001.
[2] ISO 5167-3:2003 - Measurement of Fluid Flow by Means of Pressure Differential Devices Inserted in
Circular Cross-Section Conduits Running Full – Part 3: Nozzles and Venturi Nozzles.
[1] American Society of Mechanical Engineers. MFC-3M-1989 Measurement Of Fluid Flow In Pipes Using
Orifice, Nozzle, And Venturi. ASME, 2005.
[2] Miller, Richard W. Flow Measurement Engineering Handbook. 3rd edition. New York: McGraw-Hill
Education, 1996.
[1] American Society of Mechanical Engineers. Mfc-3M-2004 Measurement Of Fluid Flow In Pipes Using
Orifice, Nozzle, And Venturi. ASME, 2001.
[2] ISO 5167-4:2003 - Measurement of Fluid Flow by Means of Pressure Differential Devices Inserted in
Circular Cross-Section Conduits Running Full – Part 4: Venturi Tubes.
[1] Hollingshead, Colter. “Discharge Coefficient Performance of Venturi, Standard Concentric Orifice Plate,
V-Cone, and Wedge Flow Meters at Small Reynolds Numbers.” May 1, 2011. https://digitalcommons.
usu.edu/etd/869.
[1] Hollingshead, Colter. “Discharge Coefficient Performance of Venturi, Standard Concentric Orifice Plate,
V-Cone, and Wedge Flow Meters at Small Reynolds Numbers.” May 1, 2011. https://digitalcommons.
usu.edu/etd/869.
[2] IntraWedge WEDGE FLOW METER Type: IWM. January 2011. http://www.intra-automation.com/
download.php?file=pdf/products/technical_information/en/ti_iwm_en.pdf
[1] Stewart, D. G., M. Reader-Harris, and NEL Dr RJW Peters. “Derivation of an Expansibility Factor for the
V-Cone Meter.” In Flow Measurement International Conference, Peebles, Scotland, UK, 2001.
[2] ISO 5167-5:2016 - Measurement of Fluid Flow by Means of Pressure Differential Devices Inserted in
Circular Cross-Section Conduits Running Full – Part 5: Cone meters.

464 Bibliography
Fluids Documentation, Release 0.1

[1] ISO 5167-5:2016 - Measurement of Fluid Flow by Means of Pressure Differential Devices Inserted in
Circular Cross-Section Conduits Running Full – Part 5: Cone meters.
[1] Miller, Richard W. Flow Measurement Engineering Handbook. 3rd edition. New York: McGraw-Hill
Education, 1996.
[2] Seshadri, V., S. N. Singh, and S. Bhargava. “Effect of Wedge Shape and Pressure Tap Locations on the
Characteristics of a Wedge Flowmeter.” IJEMS Vol.01(5), October 1994.
[1] ISO/DIS 5167-6 - Measurement of Fluid Flow by Means of Pressure Differential Devices Inserted in
Circular Cross-Section Conduits Running Full – Part 6: Wedge Meters.
[1] ISO/DIS 5167-6 - Measurement of Fluid Flow by Means of Pressure Differential Devices Inserted in
Circular Cross-Section Conduits Running Full – Part 6: Wedge Meters.
[1] Reader-harris, Michael, and Tuv Nel. An Improved Model for Venturi-Tube Over-Reading in Wet Gas,
2009.
[2] ISO/TR 11583:2012 Measurement of Wet Gas Flow by Means of Pressure Differential Devices Inserted
in Circular Cross-Section Conduits.
[1] Reader-harris, Michael, and Tuv Nel. An Improved Model for Venturi-Tube Over-Reading in Wet Gas,
2009.
[2] ISO/TR 11583:2012 Measurement of Wet Gas Flow by Means of Pressure Differential Devices Inserted
in Circular Cross-Section Conduits.
[1] Avila, Kerstin, David Moxey, Alberto de Lozar, Marc Avila, Dwight Barkley, and Björn Hof. “The Onset
of Turbulence in Pipe Flow.” Science 333, no. 6039 (July 8, 2011): 192-96. doi:10.1126/science.1203223.
[1] Schlunder, Ernst U, and International Center for Heat and Mass Transfer. Heat Exchanger Design Hand-
book. Washington: Hemisphere Pub. Corp., 1983.
[1] Colebrook, C F.”Turbulent Flow in Pipes, with Particular Reference to the Transition Region Be-
tween the Smooth and Rough Pipe Laws.” Journal of the ICE 11, no. 4 (February 1, 1939): 133-156.
doi:10.1680/ijoti.1939.13150.
[1] Clamond, Didier. “Efficient Resolution of the Colebrook Equation.” Industrial & Engi-
neering Chemistry Research 48, no. 7 (April 1, 2009): 3665-71. doi:10.1021/ie801626g.
http://math.unice.fr/%7Edidierc/DidPublis/ICR_2009.pdf
[1] Cengel, Yunus, and John Cimbala. Fluid Mechanics: Fundamentals and Applications. Boston: McGraw
Hill Higher Education, 2006.
[2] McKEON, B. J., C. J. SWANSON, M. V. ZAGAROLA, R. J. DONNELLY, and A. J. SMITS.
“Friction Factors for Smooth Pipe Flow.” Journal of Fluid Mechanics 511 (July 1, 2004): 41-44.
doi:10.1017/S0022112004009796.
[1] Crane Co. Flow of Fluids Through Valves, Fittings, and Pipe. Crane, 2009.
[1] Shoham, Ovadia. Mechanistic Modeling of Gas-Liquid Two-Phase Flow in Pipes. Pap/Cdr edition.
Richardson, TX: Society of Petroleum Engineers, 2006.
[1] Menon, E. Shashi. Gas Pipeline Hydraulics. 1st edition. Boca Raton, FL: CRC Press, 2005.
[1] Idelchik, I. E, and A. S Ginevskiı̆. Handbook of Hydraulic Resistance. Redding, CT: Begell House, 2007.
[2] Farshad, Fred F., and Herman H. Rieke. “Surface Roughness Design Values for Modern Pipes.” SPE
Drilling & Completion 21, no. 3 (September 1, 2006): 212-215. doi:10.2118/89040-PA.
[1] Idelchik, I. E, and A. S Ginevskiı̆. Handbook of Hydraulic Resistance. Redding, CT: Begell House, 2007.
[1] Farshad, Fred F., and Herman H. Rieke. “Surface Roughness Design Values for Modern Pipes.” SPE
Drilling & Completion 21, no. 3 (September 1, 2006): 212-215. doi:10.2118/89040-PA.

Bibliography 465
Fluids Documentation, Release 0.1

[1] Winning, H. and T. Coole. “Explicit Friction Factor Accuracy and Computational Efficiency for Turbulent
Flow in Pipes.” Flow, Turbulence and Combustion 90, no. 1 (January 1, 2013): 1-27. doi:10.1007/s10494-
012-9419-7
[2] Moody, L.F.: An approximate formula for pipe friction factors. Trans. Am. Soc. Mech. Eng. 69,1005-1006
(1947)
[1] Winning, H. and T. Coole. “Explicit Friction Factor Accuracy and Computational Efficiency for Turbulent
Flow in Pipes.” Flow, Turbulence and Combustion 90, no. 1 (January 1, 2013): 1-27. doi:10.1007/s10494-
012-9419-7
[1] Winning, H. and T. Coole. “Explicit Friction Factor Accuracy and Computational Efficiency for Turbulent
Flow in Pipes.” Flow, Turbulence and Combustion 90, no. 1 (January 1, 2013): 1-27. doi:10.1007/s10494-
012-9419-7
[2] Wood, D.J.: An Explicit Friction Factor Relationship, vol. 60. Civil Engineering American Society of
Civil Engineers (1966)
[1] Winning, H. and T. Coole. “Explicit Friction Factor Accuracy and Computational Efficiency for Turbulent
Flow in Pipes.” Flow, Turbulence and Combustion 90, no. 1 (January 1, 2013): 1-27. doi:10.1007/s10494-
012-9419-7
[2] Churchill, Stuart W. “Empirical Expressions for the Shear Stress in Turbulent Flow in Commercial Pipe.”
AIChE Journal 19, no. 2 (March 1, 1973): 375-76. doi:10.1002/aic.690190228.
[1] Winning, H. and T. Coole. “Explicit Friction Factor Accuracy and Computational Efficiency for Turbulent
Flow in Pipes.” Flow, Turbulence and Combustion 90, no. 1 (January 1, 2013): 1-27. doi:10.1007/s10494-
012-9419-7
[2] Eck, B.: Technische Stromungslehre. Springer, New York (1973)
[1] Winning, H. and T. Coole. “Explicit Friction Factor Accuracy and Computational Efficiency for Turbulent
Flow in Pipes.” Flow, Turbulence and Combustion 90, no. 1 (January 1, 2013): 1-27. doi:10.1007/s10494-
012-9419-7
[2] Jain, Akalank K.”Accurate Explicit Equation for Friction Factor.” Journal of the Hydraulics Division 102,
no. 5 (May 1976): 674-77.
[1] Winning, H. and T. Coole. “Explicit Friction Factor Accuracy and Computational Efficiency for Turbulent
Flow in Pipes.” Flow, Turbulence and Combustion 90, no. 1 (January 1, 2013): 1-27. doi:10.1007/s10494-
012-9419-7
[2] Swamee, Prabhata K., and Akalank K. Jain.”Explicit Equations for Pipe-Flow Problems.” Journal of the
Hydraulics Division 102, no. 5 (May 1976): 657-664.
[1] Winning, H. and T. Coole. “Explicit Friction Factor Accuracy and Computational Efficiency for Turbulent
Flow in Pipes.” Flow, Turbulence and Combustion 90, no. 1 (January 1, 2013): 1-27. doi:10.1007/s10494-
012-9419-7
[2] Churchill, S.W.: Friction factor equation spans all fluid flow regimes. Chem. Eng. J. 91, 91-92 (1977)
[1] Winning, H. and T. Coole. “Explicit Friction Factor Accuracy and Computational Efficiency for Turbulent
Flow in Pipes.” Flow, Turbulence and Combustion 90, no. 1 (January 1, 2013): 1-27. doi:10.1007/s10494-
012-9419-7
[2] Chen, Ning Hsing. “An Explicit Equation for Friction Factor in Pipe.” Industrial & Engineering Chemistry
Fundamentals 18, no. 3 (August 1, 1979): 296-97. doi:10.1021/i160071a019.
[1] Winning, H. and T. Coole. “Explicit Friction Factor Accuracy and Computational Efficiency for Turbulent
Flow in Pipes.” Flow, Turbulence and Combustion 90, no. 1 (January 1, 2013): 1-27. doi:10.1007/s10494-
012-9419-7

466 Bibliography
Fluids Documentation, Release 0.1

[2] Round, G. F.”An Explicit Approximation for the Friction Factor-Reynolds Number Relation for Rough
and Smooth Pipes.” The Canadian Journal of Chemical Engineering 58, no. 1 (February 1, 1980): 122-23.
doi:10.1002/cjce.5450580119.
[1] Winning, H. and T. Coole. “Explicit Friction Factor Accuracy and Computational Efficiency for Turbulent
Flow in Pipes.” Flow, Turbulence and Combustion 90, no. 1 (January 1, 2013): 1-27. doi:10.1007/s10494-
012-9419-7
[2] Shacham, M. “Comments on: ‘An Explicit Equation for Friction Factor in Pipe.’” Industrial & Engineer-
ing Chemistry Fundamentals 19, no. 2 (May 1, 1980): 228-228. doi:10.1021/i160074a019.
[1] Winning, H. and T. Coole. “Explicit Friction Factor Accuracy and Computational Efficiency for Turbulent
Flow in Pipes.” Flow, Turbulence and Combustion 90, no. 1 (January 1, 2013): 1-27. doi:10.1007/s10494-
012-9419-7
[2] Barr, Dih, and Colebrook White.”Technical Note. Solutions Of The Colebrook-White Function For
Resistance To Uniform Turbulent Flow.” ICE Proceedings 71, no. 2 (January 6, 1981): 529-35.
doi:10.1680/iicep.1981.1895.
[1] Winning, H. and T. Coole. “Explicit Friction Factor Accuracy and Computational Efficiency for Turbulent
Flow in Pipes.” Flow, Turbulence and Combustion 90, no. 1 (January 1, 2013): 1-27. doi:10.1007/s10494-
012-9419-7
[2] Zigrang, D. J., and N. D. Sylvester.”Explicit Approximations to the Solution of Colebrook’s Friction
Factor Equation.” AIChE Journal 28, no. 3 (May 1, 1982): 514-15. doi:10.1002/aic.690280323.
[1] Winning, H. and T. Coole. “Explicit Friction Factor Accuracy and Computational Efficiency for Turbulent
Flow in Pipes.” Flow, Turbulence and Combustion 90, no. 1 (January 1, 2013): 1-27. doi:10.1007/s10494-
012-9419-7
[2] Zigrang, D. J., and N. D. Sylvester.”Explicit Approximations to the Solution of Colebrook’s Friction
Factor Equation.” AIChE Journal 28, no. 3 (May 1, 1982): 514-15. doi:10.1002/aic.690280323.
[1] Winning, H. and T. Coole. “Explicit Friction Factor Accuracy and Computational Efficiency for Turbulent
Flow in Pipes.” Flow, Turbulence and Combustion 90, no. 1 (January 1, 2013): 1-27. doi:10.1007/s10494-
012-9419-7
[2] Haaland, S. E.”Simple and Explicit Formulas for the Friction Factor in Turbulent Pipe Flow.” Journal of
Fluids Engineering 105, no. 1 (March 1, 1983): 89-90. doi:10.1115/1.3240948.
[1] Winning, H. and T. Coole. “Explicit Friction Factor Accuracy and Computational Efficiency for Turbulent
Flow in Pipes.” Flow, Turbulence and Combustion 90, no. 1 (January 1, 2013): 1-27. doi:10.1007/s10494-
012-9419-7
[2] Serghides T.K (1984).”Estimate friction factor accurately” Chemical Engineering, Vol. 91(5), pp. 63-64.
[1] Winning, H. and T. Coole. “Explicit Friction Factor Accuracy and Computational Efficiency for Turbulent
Flow in Pipes.” Flow, Turbulence and Combustion 90, no. 1 (January 1, 2013): 1-27. doi:10.1007/s10494-
012-9419-7
[2] Serghides T.K (1984).”Estimate friction factor accurately” Chemical Engineering, Vol. 91(5), pp. 63-64.
[1] Winning, H. and T. Coole. “Explicit Friction Factor Accuracy and Computational Efficiency for Turbulent
Flow in Pipes.” Flow, Turbulence and Combustion 90, no. 1 (January 1, 2013): 1-27. doi:10.1007/s10494-
012-9419-7
[2] Tsal, R.J.: Altshul-Tsal friction factor equation. Heat-Piping-Air Cond. 8, 30-45 (1989)
[1] Winning, H. and T. Coole. “Explicit Friction Factor Accuracy and Computational Efficiency for Turbulent
Flow in Pipes.” Flow, Turbulence and Combustion 90, no. 1 (January 1, 2013): 1-27. doi:10.1007/s10494-
012-9419-7
[2] Manadilli, G.: Replace implicit equations with signomial functions. Chem. Eng. 104, 129 (1997)

Bibliography 467
Fluids Documentation, Release 0.1

[1] Winning, H. and T. Coole. “Explicit Friction Factor Accuracy and Computational Efficiency for Turbulent
Flow in Pipes.” Flow, Turbulence and Combustion 90, no. 1 (January 1, 2013): 1-27. doi:10.1007/s10494-
012-9419-7
[2] Romeo, Eva, Carlos Royo, and Antonio Monzon.”Improved Explicit Equations for Estimation of the
Friction Factor in Rough and Smooth Pipes.” Chemical Engineering Journal 86, no. 3 (April 28, 2002):
369-74. doi:10.1016/S1385-8947(01)00254-6.
[1] Winning, H. and T. Coole. “Explicit Friction Factor Accuracy and Computational Efficiency for Turbulent
Flow in Pipes.” Flow, Turbulence and Combustion 90, no. 1 (January 1, 2013): 1-27. doi:10.1007/s10494-
012-9419-7
[2] Travis, Quentin B., and Larry W. Mays.”Relationship between Hazen-William and Colebrook-White
Roughness Values.” Journal of Hydraulic Engineering 133, no. 11 (November 2007): 1270-73.
doi:10.1061/(ASCE)0733-9429(2007)133:11(1270).
[1] Winning, H. and T. Coole. “Explicit Friction Factor Accuracy and Computational Efficiency for Turbulent
Flow in Pipes.” Flow, Turbulence and Combustion 90, no. 1 (January 1, 2013): 1-27. doi:10.1007/s10494-
012-9419-7
[2] Rao, A.R., Kumar, B.: Friction factor for turbulent pipe flow. Division of Mechanical Sciences, Civil
Engineering Indian Institute of Science Bangalore, India ID Code 9587 (2007)
[1] Winning, H. and T. Coole. “Explicit Friction Factor Accuracy and Computational Efficiency for Turbulent
Flow in Pipes.” Flow, Turbulence and Combustion 90, no. 1 (January 1, 2013): 1-27. doi:10.1007/s10494-
012-9419-7
[2] Buzzelli, D.: Calculating friction in one step. Mach. Des. 80, 54-55 (2008)
[1] Winning, H. and T. Coole. “Explicit Friction Factor Accuracy and Computational Efficiency for Turbulent
Flow in Pipes.” Flow, Turbulence and Combustion 90, no. 1 (January 1, 2013): 1-27. doi:10.1007/s10494-
012-9419-7
[2] Avci, Atakan, and Irfan Karagoz.”A Novel Explicit Equation for Friction Factor in Smooth and Rough
Pipes.” Journal of Fluids Engineering 131, no. 6 (2009): 061203. doi:10.1115/1.3129132.
[1] Winning, H. and T. Coole. “Explicit Friction Factor Accuracy and Computational Efficiency for Turbulent
Flow in Pipes.” Flow, Turbulence and Combustion 90, no. 1 (January 1, 2013): 1-27. doi:10.1007/s10494-
012-9419-7
[2] Papaevangelou, G., Evangelides, C., Tzimopoulos, C.: A New Explicit Relation for the Friction Factor
Coefficient in the Darcy-Weisbach Equation, pp. 166-172. Protection and Restoration of the Environment
Corfu, Greece: University of Ioannina Greece and Stevens Institute of Technology New Jersey (2010)
[1] Winning, H. and T. Coole. “Explicit Friction Factor Accuracy and Computational Efficiency for Turbulent
Flow in Pipes.” Flow, Turbulence and Combustion 90, no. 1 (January 1, 2013): 1-27. doi:10.1007/s10494-
012-9419-7
[2] Brkic, Dejan.”Review of Explicit Approximations to the Colebrook Relation for Flow Friction.” Journal
of Petroleum Science and Engineering 77, no. 1 (April 2011): 34-48. doi:10.1016/j.petrol.2011.02.006.
[1] Winning, H. and T. Coole. “Explicit Friction Factor Accuracy and Computational Efficiency for Turbulent
Flow in Pipes.” Flow, Turbulence and Combustion 90, no. 1 (January 1, 2013): 1-27. doi:10.1007/s10494-
012-9419-7
[2] Brkic, Dejan.”Review of Explicit Approximations to the Colebrook Relation for Flow Friction.” Journal
of Petroleum Science and Engineering 77, no. 1 (April 2011): 34-48. doi:10.1016/j.petrol.2011.02.006.
[1] Winning, H. and T. Coole. “Explicit Friction Factor Accuracy and Computational Efficiency for Turbulent
Flow in Pipes.” Flow, Turbulence and Combustion 90, no. 1 (January 1, 2013): 1-27. doi:10.1007/s10494-
012-9419-7

468 Bibliography
Fluids Documentation, Release 0.1

[2] Fang, Xiande, Yu Xu, and Zhanru Zhou.”New Correlations of Single-Phase Friction Factor for Turbulent
Pipe Flow and Evaluation of Existing Single-Phase Friction Factor Correlations.” Nuclear Engineering
and Design, The International Conference on Structural Mechanics in Reactor Technology (SMiRT19)
Special Section, 241, no. 3 (March 2011): 897-902. doi:10.1016/j.nucengdes.2010.12.019.
[1] Blasius, H.”Das Aehnlichkeitsgesetz bei Reibungsvorgängen in Flüssigkeiten.” In Mitteilungen über
Forschungsarbeiten auf dem Gebiete des Ingenieurwesens, edited by Verein deutscher Ingenieure,
1-41. Berlin, Heidelberg: Springer Berlin Heidelberg, 1913. http://rd.springer.com/chapter/10.1007/
978-3-662-02239-9_1.
[2] Hager, W. H. “Blasius: A Life in Research and Education.” In Experiments in Fluids, 566–571, 2003.
[1] Rennels, Donald C., and Hobart M. Hudson. Pipe Flow: A Practical and Comprehensive Guide. 1st
edition. Hoboken, N.J: Wiley, 2012.
[2] McGovern, Jim. “Technical Note: Friction Factor Diagrams for Pipe Flow.” Paper, October 3, 2011.
http://arrow.dit.ie/engschmecart/28.
[1] Rennels, Donald C., and Hobart M. Hudson. Pipe Flow: A Practical and Comprehensive Guide. 1st
edition. Hoboken, N.J: Wiley, 2012.
[2] McGovern, Jim. “Technical Note: Friction Factor Diagrams for Pipe Flow.” Paper, October 3, 2011.
http://arrow.dit.ie/engschmecart/28.
[1] Crane Co. Flow of Fluids Through Valves, Fittings, and Pipe. Crane, 2009.
[1] White, C. M. “Streamline Flow through Curved Pipes.” Proceedings of the Royal Society of Lon-
don A: Mathematical, Physical and Engineering Sciences 123, no. 792 (April 6, 1929): 645-63.
doi:10.1098/rspa.1929.0089.
[2] El-Genk, Mohamed S., and Timothy M. Schriener. “A Review and Correlations for Convection Heat
Transfer and Pressure Losses in Toroidal and Helically Coiled Tubes.” Heat Transfer Engineering 0, no.
0 (June 7, 2016): 1-28. doi:10.1080/01457632.2016.1194693.
[3] Blevins, Robert D. Applied Fluid Dynamics Handbook. New York, N.Y.: Van Nostrand Reinhold Co.,
1984.
[1] Mori, Yasuo, and Wataru Nakayama. “Study on Forced Convective Heat Transfer in Curved Pipes: 1st
Report, Laminar Region.” Transactions of the Japan Society of Mechanical Engineers 30, no. 216 (1964):
977-88. doi:10.1299/kikai1938.30.977.
[2] El-Genk, Mohamed S., and Timothy M. Schriener. “A Review and Correlations for Convection Heat
Transfer and Pressure Losses in Toroidal and Helically Coiled Tubes.” Heat Transfer Engineering 0, no.
0 (June 7, 2016): 1-28. doi:10.1080/01457632.2016.1194693.
[3] Pimenta, T. A., and J. B. L. M. Campos. “Friction Losses of Newtonian and Non-Newtonian Fluids
Flowing in Laminar Regime in a Helical Coil.” Experimental Thermal and Fluid Science 36 (January
2012): 194-204. doi:10.1016/j.expthermflusci.2011.09.013.
[1] Schmidt, Eckehard F. “Wärmeübergang Und Druckverlust in Rohrschlangen.” Chemie Ingenieur Technik
39, no. 13 (July 10, 1967): 781-89. doi:10.1002/cite.330391302.
[2] El-Genk, Mohamed S., and Timothy M. Schriener. “A Review and Correlations for Convection Heat
Transfer and Pressure Losses in Toroidal and Helically Coiled Tubes.” Heat Transfer Engineering 0, no.
0 (June 7, 2016): 1-28. doi:10.1080/01457632.2016.1194693.
[3] Pimenta, T. A., and J. B. L. M. Campos. “Friction Losses of Newtonian and Non-Newtonian Fluids
Flowing in Laminar Regime in a Helical Coil.” Experimental Thermal and Fluid Science 36 (January
2012): 194-204. doi:10.1016/j.expthermflusci.2011.09.013.
[1] Schmidt, Eckehard F. “Wärmeübergang Und Druckverlust in Rohrschlangen.” Chemie Ingenieur Technik
39, no. 13 (July 10, 1967): 781-89. doi:10.1002/cite.330391302.

Bibliography 469
Fluids Documentation, Release 0.1

[2] El-Genk, Mohamed S., and Timothy M. Schriener. “A Review and Correlations for Convection Heat
Transfer and Pressure Losses in Toroidal and Helically Coiled Tubes.” Heat Transfer Engineering 0, no.
0 (June 7, 2016): 1-28. doi:10.1080/01457632.2016.1194693.
[1] Mori, Yasuo, and Wataru Nakayama. “Study of Forced Convective Heat Transfer in Curved Pipes (2nd
Report, Turbulent Region).” International Journal of Heat and Mass Transfer 10, no. 1 (January 1, 1967):
37-59. doi:10.1016/0017-9310(67)90182-2.
[2] El-Genk, Mohamed S., and Timothy M. Schriener. “A Review and Correlations for Convection Heat
Transfer and Pressure Losses in Toroidal and Helically Coiled Tubes.” Heat Transfer Engineering 0, no.
0 (June 7, 2016): 1-28. doi:10.1080/01457632.2016.1194693.
[3] Ali, Shaukat. “Pressure Drop Correlations for Flow through Regular Helical Coil Tubes.” Fluid Dynamics
Research 28, no. 4 (April 2001): 295-310. doi:10.1016/S0169-5983(00)00034-4.
[1] Prasad, B. V. S. S. S., D. H. Das, and A. K. Prabhakar. “Pressure Drop, Heat Transfer and Performance
of a Helically Coiled Tubular Exchanger.” Heat Recovery Systems and CHP 9, no. 3 (January 1, 1989):
249-56. doi:10.1016/0890-4332(89)90008-2.
[2] El-Genk, Mohamed S., and Timothy M. Schriener. “A Review and Correlations for Convection Heat
Transfer and Pressure Losses in Toroidal and Helically Coiled Tubes.” Heat Transfer Engineering 0, no.
0 (June 7, 2016): 1-28. doi:10.1080/01457632.2016.1194693.
[1] Czop, V., D. Barbier, and S. Dong. “Pressure Drop, Void Fraction and Shear Stress Measurements in an
Adiabatic Two-Phase Flow in a Coiled Tube.” Nuclear Engineering and Design 149, no. 1 (September 1,
1994): 323-33. doi:10.1016/0029-5493(94)90298-4.
[2] El-Genk, Mohamed S., and Timothy M. Schriener. “A Review and Correlations for Convection Heat
Transfer and Pressure Losses in Toroidal and Helically Coiled Tubes.” Heat Transfer Engineering 0, no.
0 (June 7, 2016): 1-28. doi:10.1080/01457632.2016.1194693.
[1] Guo, Liejin, Ziping Feng, and Xuejun Chen. “An Experimental Investigation of the Frictional Pressure
Drop of Steam–water Two-Phase Flow in Helical Coils.” International Journal of Heat and Mass Transfer
44, no. 14 (July 2001): 2601-10. doi:10.1016/S0017-9310(00)00312-4.
[2] El-Genk, Mohamed S., and Timothy M. Schriener. “A Review and Correlations for Convection Heat
Transfer and Pressure Losses in Toroidal and Helically Coiled Tubes.” Heat Transfer Engineering 0, no.
0 (June 7, 2016): 1-28. doi:10.1080/01457632.2016.1194693.
[1] Ju, Huaiming, Zhiyong Huang, Yuanhui Xu, Bing Duan, and Yu Yu. “Hydraulic Performance of Small
Bending Radius Helical Coil-Pipe.” Journal of Nuclear Science and Technology 38, no. 10 (October 1,
2001): 826-31. doi:10.1080/18811248.2001.9715102.
[2] El-Genk, Mohamed S., and Timothy M. Schriener. “A Review and Correlations for Convection Heat
Transfer and Pressure Losses in Toroidal and Helically Coiled Tubes.” Heat Transfer Engineering 0, no.
0 (June 7, 2016): 1-28. doi:10.1080/01457632.2016.1194693.
[1] Srinivasan, PS, SS Nandapurkar, and FA Holland. “Friction Factors for Coils.” TRANSACTIONS OF
THE INSTITUTION OF CHEMICAL ENGINEERS AND THE CHEMICAL ENGINEER 48, no. 4-6
(1970): T156
[2] Blevins, Robert D. Applied Fluid Dynamics Handbook. New York, N.Y.: Van Nostrand Reinhold Co.,
1984.
[3] Rohsenow, Warren and James Hartnett and Young Cho. Handbook of Heat Transfer, 3E. New York:
McGraw-Hill, 1998.
[1] Mandal, Monisha Mridha, and K. D. P. Nigam. “Experimental Study on Pressure Drop and Heat Trans-
fer of Turbulent Flow in Tube in Tube Helical Heat Exchanger.” Industrial & Engineering Chemistry
Research 48, no. 20 (October 21, 2009): 9318-24. doi:10.1021/ie9002393.

470 Bibliography
Fluids Documentation, Release 0.1

[2] El-Genk, Mohamed S., and Timothy M. Schriener. “A Review and Correlations for Convection Heat
Transfer and Pressure Losses in Toroidal and Helically Coiled Tubes.” Heat Transfer Engineering 0, no.
0 (June 7, 2016): 1-28. doi:10.1080/01457632.2016.1194693.
[1] Seth, K. K., and E. P. Stahel. “HEAT TRANSFER FROM HELICAL COILS IMMERSED IN
AGITATED VESSELS.” Industrial & Engineering Chemistry 61, no. 6 (June 1, 1969): 39-49.
doi:10.1021/ie50714a007.
[1] H. Ito. “Friction factors for turbulent flow in curved pipes.” Journal Basic Engineering, Transactions of
the ASME, 81 (1959): 123-134.
[2] El-Genk, Mohamed S., and Timothy M. Schriener. “A Review and Correlations for Convection Heat
Transfer and Pressure Losses in Toroidal and Helically Coiled Tubes.” Heat Transfer Engineering 0, no.
0 (June 7, 2016): 1-28. doi:10.1080/01457632.2016.1194693.
[3] Mori, Yasuo, and Wataru Nakayama. “Study on Forced Convective Heat Transfer in Curved Pipes.”
International Journal of Heat and Mass Transfer 10, no. 5 (May 1, 1967): 681-95. doi:10.1016/0017-
9310(67)90113-5.
[1] Kubair, Venugopala, and N. R. Kuloor. “Heat Transfer to Newtonian Fluids in Coiled Pipes in Lam-
inar Flow.” International Journal of Heat and Mass Transfer 9, no. 1 (January 1, 1966): 63-75.
doi:10.1016/0017-9310(66)90057-3.
[2] El-Genk, Mohamed S., and Timothy M. Schriener. “A Review and Correlations for Convection Heat
Transfer and Pressure Losses in Toroidal and Helically Coiled Tubes.” Heat Transfer Engineering 0, no.
0 (June 7, 2016): 1-28. doi:10.1080/01457632.2016.1194693.
[1] Kutateladze, S. S, and V. M Borishanskiı̆. A Concise Encyclopedia of Heat Transfer. Oxford; New York:
Pergamon Press, 1966.
[2] El-Genk, Mohamed S., and Timothy M. Schriener. “A Review and Correlations for Convection Heat
Transfer and Pressure Losses in Toroidal and Helically Coiled Tubes.” Heat Transfer Engineering 0, no.
0 (June 7, 2016): 1-28. doi:10.1080/01457632.2016.1194693.
[1] Schmidt, Eckehard F. “Wärmeübergang Und Druckverlust in Rohrschlangen.” Chemie Ingenieur Technik
39, no. 13 (July 10, 1967): 781-89. doi:10.1002/cite.330391302.
[2] El-Genk, Mohamed S., and Timothy M. Schriener. “A Review and Correlations for Convection Heat
Transfer and Pressure Losses in Toroidal and Helically Coiled Tubes.” Heat Transfer Engineering 0, no.
0 (June 7, 2016): 1-28. doi:10.1080/01457632.2016.1194693.
[3] Schlunder, Ernst U, and International Center for Heat and Mass Transfer. Heat Exchanger Design Hand-
book. Washington: Hemisphere Pub. Corp., 1983.
[1] Srinivasan, P. S., Nandapurkar, S. S., and Holland, F. A., “Pressure Drop and Heat Transfer in Coils”,
Chemical Engineering, 218, CE131-119, (1968).
[2] El-Genk, Mohamed S., and Timothy M. Schriener. “A Review and Correlations for Convection Heat
Transfer and Pressure Losses in Toroidal and Helically Coiled Tubes.” Heat Transfer Engineering 0, no.
0 (June 7, 2016): 1-28. doi:10.1080/01457632.2016.1194693.
[3] Rohsenow, Warren and James Hartnett and Young Cho. Handbook of Heat Transfer, 3E. New York:
McGraw-Hill, 1998.
[1] Martin, Holger. “Economic optimization of compact heat exchangers.” EF-Conference on Compact Heat
Exchangers and Enhancement Technology for the Process Industries, Banff, Canada, July 18-23, 1999,
1999. https://publikationen.bibliothek.kit.edu/1000034866.
[2] Martin, Holger. “A Theoretical Approach to Predict the Performance of Chevron-Type Plate Heat Ex-
changers.” Chemical Engineering and Processing: Process Intensification 35, no. 4 (January 1, 1996):
301-10. https://doi.org/10.1016/0255-2701(95)04129-X.

Bibliography 471
Fluids Documentation, Release 0.1

[3] Shah, Ramesh K., and Dusan P. Sekulic. Fundamentals of Heat Exchanger Design. 1st edition. Hoboken,
NJ: Wiley, 2002.
[1] Gesellschaft, V. D. I., ed. VDI Heat Atlas. 2nd edition. Berlin; New York:: Springer, 2010.
[1] Kumar, H. “The plate heat exchanger: construction and design.” In First U.K. National Conference on
Heat Transfer: Held at the University of Leeds, 3-5 July 1984, Institute of Chemical Engineering Sympo-
sium Series, vol. 86, pp. 1275-1288. 1984.
[2] Ayub, Zahid H. “Plate Heat Exchanger Literature Survey and New Heat Transfer and Pressure Drop
Correlations for Refrigerant Evaporators.” Heat Transfer Engineering 24, no. 5 (September 1, 2003): 3-
16. doi:10.1080/01457630304056.
[1] Muley, A., and R. M. Manglik. “Experimental Study of Turbulent Flow Heat Transfer and Pressure Drop
in a Plate Heat Exchanger With Chevron Plates.” Journal of Heat Transfer 121, no. 1 (February 1, 1999):
110-17. doi:10.1115/1.2825923.
[2] Ayub, Zahid H. “Plate Heat Exchanger Literature Survey and New Heat Transfer and Pressure Drop
Correlations for Refrigerant Evaporators.” Heat Transfer Engineering 24, no. 5 (September 1, 2003): 3-
16. doi:10.1080/01457630304056.
[1] El-Genk, Mohamed S., and Timothy M. Schriener. “A Review and Correlations for Convection Heat
Transfer and Pressure Losses in Toroidal and Helically Coiled Tubes.” Heat Transfer Engineering 0, no.
0 (June 7, 2016): 1-28. doi:10.1080/01457632.2016.1194693.
[Ra5f43f3cdb76-1] Amalfi, Raffaele L., Farzad Vakili-Farahani, and John R. Thome. “Flow Boiling and Frictional
Pressure Gradients in Plate Heat Exchangers. Part 1: Review and Experimental Database.” International
Journal of Refrigeration 61 (January 2016): 166-84. doi:10.1016/j.ijrefrig.2015.07.010.
[R6a2fe8cbf2f6-1] Yang, Yujie, and Yanzhong Li. “General Prediction of the Thermal Hydraulic Performance for
Plate-Fin Heat Exchanger with Offset Strip Fins.” International Journal of Heat and Mass Transfer 78
(November 1, 2014): 860-70. doi:10.1016/j.ijheatmasstransfer.2014.07.060.
[R6a2fe8cbf2f6-2] Sheik Ismail, L., R. Velraj, and C. Ranganayakulu. “Studies on Pumping Power in Terms of Pres-
sure Drop and Heat Transfer Characteristics of Compact Plate-Fin Heat Exchangers-A Review.” Renew-
able and Sustainable Energy Reviews 14, no. 1 (January 2010): 478-85. doi:10.1016/j.rser.2009.06.033.
[R9da9598dd59d-1] Chen, W. F., and E. M. Lui, eds. Handbook of Structural Engineering, Second Edition. Boca
Raton, Fla: CRC Press, 2005.
[R9da9598dd59d-2] Ansary, A. M. El, A. A. El Damatty, and A. O. Nassef. Optimum Shape and Design of Cooling
Towers, 2011.
[1] Schlunder, Ernst U, and International Center for Heat and Mass Transfer. Heat Exchanger Design Hand-
book. Washington: Hemisphere Pub. Corp., 1983.
[1] Weisstein, Eric W. “Spherical Cap.” Text. Accessed December 22, 2015. http://mathworld.wolfram.com/
SphericalCap.html.
[1] Weisstein, Eric W. “Spherical Cap.” Text. Accessed December 22, 2015. http://mathworld.wolfram.com/
SphericalCap.html.
[1] Jones, D. “Calculating Tank Volume.” Text. Accessed December 22, 2015. http://www.webcalc.com.br/
blog/Tank_Volume.PDF
[1] Jones, D. “Calculating Tank Volume.” Text. Accessed December 22, 2015. http://www.webcalc.com.br/
blog/Tank_Volume.PDF
[1] Jones, D. “Calculating Tank Volume.” Text. Accessed December 22, 2015. http://www.webcalc.com.br/
blog/Tank_Volume.PDF
[1] Jones, D. “Calculating Tank Volume.” Text. Accessed December 22, 2015. http://www.webcalc.com.br/
blog/Tank_Volume.PDF

472 Bibliography
Fluids Documentation, Release 0.1

[1] Jones, D. “Calculating Tank Volume.” Text. Accessed December 22, 2015. http://www.webcalc.com.br/
blog/Tank_Volume.PDF
[1] Jones, D. “Calculating Tank Volume.” Text. Accessed December 22, 2015. http://www.webcalc.com.br/
blog/Tank_Volume.PDF
[1] Jones, D. “Calculating Tank Volume.” Text. Accessed December 22, 2015. http://www.webcalc.com.br/
blog/Tank_Volume.PDF
[1] Jones, D. “Calculating Tank Volume.” Text. Accessed December 22, 2015. http://www.webcalc.com.br/
blog/Tank_Volume.PDF
[1] Jones, D. “Calculating Tank Volume.” Text. Accessed December 22, 2015. http://www.webcalc.com.br/
blog/Tank_Volume.PDF
[1] Jones, D. “Compute Fluid Volumes in Vertical Tanks.” Chemical Processing. December 18, 2003. http:
//www.chemicalprocessing.com/articles/2003/193/
[1] Jones, D. “Compute Fluid Volumes in Vertical Tanks.” Chemical Processing. December 18, 2003. http:
//www.chemicalprocessing.com/articles/2003/193/
[1] Jones, D. “Compute Fluid Volumes in Vertical Tanks.” Chemical Processing. December 18, 2003. http:
//www.chemicalprocessing.com/articles/2003/193/
[1] Jones, D. “Compute Fluid Volumes in Vertical Tanks.” Chemical Processing. December 18, 2003. http:
//www.chemicalprocessing.com/articles/2003/193/
[1] Jones, D. “Calculating Tank Volume.” Text. Accessed December 22, 2015. http://www.webcalc.com.br/
blog/Tank_Volume.PDF
[1] Weisstein, Eric W. “Spheroid.” Text. Accessed March 14, 2016. http://mathworld.wolfram.com/Spheroid.
html.
[1] Weisstein, Eric W. “Cone.” Text. Accessed March 14, 2016. http://mathworld.wolfram.com/Cone.html.
[1] Weisstein, Eric W. “Cone.” Text. Accessed March 14, 2016. http://mathworld.wolfram.com/Cone.html.
[1] Honeywell. “Calculate Surface Areas and Cross-sectional Areas in Vessels with
Dished Heads”. https://www.honeywellprocess.com/library/marketing/whitepapers/
WP-VesselsWithDishedHeads-UniSimDesign.pdf Whitepaper. 2014.
[1] Jones, D. “Compute Fluid Volumes in Vertical Tanks.” Chemical Processing. December 18, 2003. http:
//www.chemicalprocessing.com/articles/2003/193/
[1] Rhodes, Martin J., ed. Introduction to Particle Technology. 2E. Chichester, England; Hoboken, NJ: Wiley,
2008.
[2] “Sphericity.” Wikipedia, March 8, 2017. https://en.wikipedia.org/w/index.php?title=Sphericity&oldid=
769183043
[1] Schlunder, Ernst U, and International Center for Heat and Mass Transfer. Heat Exchanger Design Hand-
book. Washington: Hemisphere Pub. Corp., 1983.
[1] Karassik, Igor J., Joseph P. Messina, Paul Cooper, and Charles C. Heald. Pump Handbook. 4th edition.
New York: McGraw-Hill Education, 2007.
[2] Winoto S. H., Li H., and Shah D. A. “Efficiency of Jet Pumps.” Journal of Hydraulic Engineering 126,
no. 2 (February 1, 2000): 150-56. https://doi.org/10.1061/(ASCE)0733-9429(2000)126:2(150).
[3] Elmore, Emily, Khalid Al-Mutairi, Bilal Hussain, and A. Sheriff El-Gizawy. “Development of Analytical
Model for Predicting Dual-Phase Ejector Performance,” November 11, 2016, V007T09A013.
[4] Ejectors and Jet Pumps. Design and Performance for Incompressible Liquid Flow. 85032. ESDU Interna-
tional PLC, 1985.

Bibliography 473
Fluids Documentation, Release 0.1

[1] Ejectors and Jet Pumps. Design and Performance for Incompressible Liquid Flow. 85032. ESDU Interna-
tional PLC, 1985.
[1] Paul, Edward L, Victor A Atiemo-Obeng, and Suzanne M Kresta. Handbook of Industrial Mixing: Sci-
ence and Practice. Hoboken, N.J.: Wiley-Interscience, 2004.
[1] Paul, Edward L, Victor A Atiemo-Obeng, and Suzanne M Kresta. Handbook of Industrial Mixing: Sci-
ence and Practice. Hoboken, N.J.: Wiley-Interscience, 2004.
[2] Rieger, F., V. Novak, and D. Havelkov (1988). The influence of the geometrical shape on the power
requirements of ribbon impellers, Int. Chem. Eng., 28, 376-383.
[1] Paul, Edward L, Victor A Atiemo-Obeng, and Suzanne M Kresta. Handbook of Industrial Mixing: Sci-
ence and Practice. Hoboken, N.J.: Wiley-Interscience, 2004.
[2] Grenville, R. K., T. M. Hutchinson, and R. W. Higbee (2001). Optimisation of helical ribbon geometry
for blending in the laminar regime, presented at MIXING XVIII, NAMF.
[1] Paul, Edward L, Victor A Atiemo-Obeng, and Suzanne M Kresta. Handbook of Industrial Mixing: Sci-
ence and Practice. Hoboken, N.J.: Wiley-Interscience, 2004.
[2] Giorges, Aklilu T. G., Larry J. Forney, and Xiaodong Wang. “Numerical Study of Multi-Jet Mix-
ing.” Chemical Engineering Research and Design, Fluid Flow, 79, no. 5 (July 2001): 515-22.
doi:10.1205/02638760152424280.
[1] Paul, Edward L, Victor A Atiemo-Obeng, and Suzanne M Kresta. Handbook of Industrial Mixing: Sci-
ence and Practice. Hoboken, N.J.: Wiley-Interscience, 2004.
[2] Streiff, F. A., S. Jaffer, and G. Schneider (1999). Design and application of motionless mixer technology,
Proc. ISMIP3, Osaka, pp. 107-114.
[1] Paul, Edward L, Victor A Atiemo-Obeng, and Suzanne M Kresta. Handbook of Industrial Mixing: Sci-
ence and Practice. Hoboken, N.J.: Wiley-Interscience, 2004.
[2] Streiff, F. A., S. Jaffer, and G. Schneider (1999). Design and application of motionless mixer technology,
Proc. ISMIP3, Osaka, pp. 107-114.
[1] Shen, John. “Discharge Characteristics of Triangular-Notch Thin-Plate Weirs: Studies of Flow to Water
over Weirs and Dams.” USGS Numbered Series. Water Supply Paper. U.S. Geological Survey: U.S.
G.P.O., 1981
[2] Blevins, Robert D. Applied Fluid Dynamics Handbook. New York, N.Y.: Van Nostrand Reinhold Co.,
1984.
[1] Kindsvater, Carl E., and Rolland W. Carter. “Discharge Characteristics of Rectangular Thin-Plate Weirs.”
Journal of the Hydraulics Division 83, no. 6 (December 1957): 1-36.
[2] Blevins, Robert D. Applied Fluid Dynamics Handbook. New York, N.Y.: Van Nostrand Reinhold Co.,
1984.
[1] Normen für Wassermessungen: bei Durchführung von Abnahmeversuchen an Wasserkraftmaschinen.
SIA, 1924.
[2] Blevins, Robert D. Applied Fluid Dynamics Handbook. New York, N.Y.: Van Nostrand Reinhold Co.,
1984.
[1] Ackers, Peter, W. R. White, J. A. Perkins, and A. J. M. Harrison. Weirs and Flumes for Flow Measurement.
Chichester; New York: John Wiley & Sons Ltd, 1978.
[2] Blevins, Robert D. Applied Fluid Dynamics Handbook. New York, N.Y.: Van Nostrand Reinhold Co.,
1984.
[3] Cengel, Yunus, and John Cimbala. Fluid Mechanics: Fundamentals and Applications. Boston: McGraw
Hill Higher Education, 2006.

474 Bibliography
Fluids Documentation, Release 0.1

[1] Normen für Wassermessungen: bei Durchführung von Abnahmeversuchen an Wasserkraftmaschinen.


SIA, 1924.
[2] Blevins, Robert D. Applied Fluid Dynamics Handbook. New York, N.Y.: Van Nostrand Reinhold Co.,
1984.
[1] King, H. W., Floyd A. Nagler, A. Streiff, R. L. Parshall, W. S. Pardoe, R. E. Ballester, Gardner S. Williams,
Th Rehbock, Erik G. W. Lindquist, and Clemens Herschel. “Discussion of ‘Precise Weir Measurements.’”
Transactions of the American Society of Civil Engineers 93, no. 1 (January 1929): 1111-78.
[2] Blevins, Robert D. Applied Fluid Dynamics Handbook. New York, N.Y.: Van Nostrand Reinhold Co.,
1984.
[1] Kindsvater, Carl E., and Rolland W. Carter. “Discharge Characteristics of Rectangular Thin-Plate Weirs.”
Journal of the Hydraulics Division 83, no. 6 (December 1957): 1-36.
[2] Blevins, Robert D. Applied Fluid Dynamics Handbook. New York, N.Y.: Van Nostrand Reinhold Co.,
1984.
[1] Blevins, Robert D. Applied Fluid Dynamics Handbook. New York, N.Y.: Van Nostrand Reinhold Co.,
1984.
[2] Cengel, Yunus, and John Cimbala. Fluid Mechanics: Fundamentals and Applications. Boston: McGraw
Hill Higher Education, 2006.
[1] Chow, Ven Te. Open-Channel Hydraulics. New York: McGraw-Hill, 1959.
[1] Chow, Ven Te. Open-Channel Hydraulics. New York: McGraw-Hill, 1959.
[1] Blevins, Robert D. Applied Fluid Dynamics Handbook. New York, N.Y.: Van Nostrand Reinhold Co.,
1984.
[2] Cengel, Yunus, and John Cimbala. Fluid Mechanics: Fundamentals and Applications. Boston: McGraw
Hill Higher Education, 2006.
[3] Chow, Ven Te. Open-Channel Hydraulics. New York: McGraw-Hill, 1959.
[1] Ergun, S. (1952) “Fluid flow through packed columns”, Chem. Eng. Prog., 48, 89-94.
[2] Erdim, Esra, Ömer Akgiray, and İbrahim Demir. “A Revisit of Pressure Drop-Flow Rate Cor-
relations for Packed Beds of Spheres.” Powder Technology 283 (October 2015): 488-504.
doi:10.1016/j.powtec.2015.06.017.
[3] Jones, D. P., and H. Krier. “Gas Flow Resistance Measurements Through Packed Beds at High Reynolds
Numbers.” Journal of Fluids Engineering 105, no. 2 (June 1, 1983): 168-172. doi:10.1115/1.3240959.
[1] Kuo, K. K. and Nydegger, C., “Flow Resistance Measurement and Correlation in Packed Beds of WC
870 Ball Propellants,” Journal of Ballistics , Vol. 2, No. 1, pp. 1-26, 1978.
[2] Erdim, Esra, Ömer Akgiray, and İbrahim Demir. “A Revisit of Pressure Drop-Flow Rate Cor-
relations for Packed Beds of Spheres.” Powder Technology 283 (October 2015): 488-504.
doi:10.1016/j.powtec.2015.06.017.
[3] Jones, D. P., and H. Krier. “Gas Flow Resistance Measurements Through Packed Beds at High Reynolds
Numbers.” Journal of Fluids Engineering 105, no. 2 (June 1, 1983): 168-172. doi:10.1115/1.3240959.
[1] Jones, D. P., and H. Krier. “Gas Flow Resistance Measurements Through Packed Beds at High Reynolds
Numbers.” Journal of Fluids Engineering 105, no. 2 (June 1, 1983): 168-172. doi:10.1115/1.3240959.
[2] Erdim, Esra, Ömer Akgiray, and İbrahim Demir. “A Revisit of Pressure Drop-Flow Rate Cor-
relations for Packed Beds of Spheres.” Powder Technology 283 (October 2015): 488-504.
doi:10.1016/j.powtec.2015.06.017.

Bibliography 475
Fluids Documentation, Release 0.1

[1] P.C. Carman, Fluid flow through granular beds, Transactions of the London Institute of Chemical Engi-
neers 15 (1937) 150-166.
[2] Erdim, Esra, Ömer Akgiray, and İbrahim Demir. “A Revisit of Pressure Drop-Flow Rate Cor-
relations for Packed Beds of Spheres.” Powder Technology 283 (October 2015): 488-504.
doi:10.1016/j.powtec.2015.06.017.
[3] Allen, K. G., T. W. von Backstrom, and D. G. Kroger. “Packed Bed Pressure Drop Dependence on Particle
Shape, Size Distribution, Packing Arrangement and Roughness.” Powder Technology 246 (September
2013): 590-600. doi:10.1016/j.powtec.2013.06.022.
[1] Hicks, R. E. “Pressure Drop in Packed Beds of Spheres.” Industrial Engineering Chemistry Fundamentals
9, no. 3 (August 1, 1970): 500-502. doi:10.1021/i160035a032.
[2] Erdim, Esra, Ömer Akgiray, and İbrahim Demir. “A Revisit of Pressure Drop-Flow Rate Cor-
relations for Packed Beds of Spheres.” Powder Technology 283 (October 2015): 488-504.
doi:10.1016/j.powtec.2015.06.017.
[3] Allen, K. G., T. W. von Backstrom, and D. G. Kroger. “Packed Bed Pressure Drop Dependence on Particle
Shape, Size Distribution, Packing Arrangement and Roughness.” Powder Technology 246 (September
2013): 590-600. doi:10.1016/j.powtec.2013.06.022.
[1] H. Brauer, Grundlagen der Einphasen -und Mehrphasenstromungen, Sauerlander AG, Aarau, 1971.
[2] Erdim, Esra, Ömer Akgiray, and İbrahim Demir. “A Revisit of Pressure Drop-Flow Rate Cor-
relations for Packed Beds of Spheres.” Powder Technology 283 (October 2015): 488-504.
doi:10.1016/j.powtec.2015.06.017.
[2] Allen, K. G., T. W. von Backstrom, and D. G. Kroger. “Packed Bed Pressure Drop Dependence on Particle
Shape, Size Distribution, Packing Arrangement and Roughness.” Powder Technology 246 (September
2013): 590-600. doi:10.1016/j.powtec.2013.06.022.
[1] KTA. KTA 3102.3 Reactor Core Design of High-Temperature Gas-Cooled Reactors Part 3: Loss of Pres-
sure through Friction in Pebble Bed Cores. Germany, 1981.
[2] Erdim, Esra, Ömer Akgiray, and İbrahim Demir. “A Revisit of Pressure Drop-Flow Rate Cor-
relations for Packed Beds of Spheres.” Powder Technology 283 (October 2015): 488-504.
doi:10.1016/j.powtec.2015.06.017.
[1] Erdim, Esra, Ömer Akgiray, and İbrahim Demir. “A Revisit of Pressure Drop-Flow Rate Cor-
relations for Packed Beds of Spheres.” Powder Technology 283 (October 2015): 488-504.
doi:10.1016/j.powtec.2015.06.017.
[1] R.W. Fahien, C.B. Schriver, Paper presented at the 1961 Denver meeting of AIChE, in: R.W. Fahien,
Fundamentals of Transport Phenomena, McGraw-Hill, New York, 1983.
[2] Erdim, Esra, Ömer Akgiray, and İbrahim Demir. “A Revisit of Pressure Drop-Flow Rate Cor-
relations for Packed Beds of Spheres.” Powder Technology 283 (October 2015): 488-504.
doi:10.1016/j.powtec.2015.06.017.
[1] Tallmadge, J. A. “Packed Bed Pressure Drop-an Extension to Higher Reynolds Numbers.” AIChE Journal
16, no. 6 (November 1, 1970): 1092-93.
[2] Erdim, Esra, Ömer Akgiray, and İbrahim Demir. “A Revisit of Pressure Drop-Flow Rate Cor-
relations for Packed Beds of Spheres.” Powder Technology 283 (October 2015): 488-504.
doi:10.1016/j.powtec.2015.06.017.
[3] Montillet, A., E. Akkari, and J. Comiti. “About a Correlating Equation for Predicting Pressure Drops
through Packed Beds of Spheres in a Large Range of Reynolds Numbers.” Chemical Engineering and
Processing: Process Intensification 46, no. 4 (April 2007): 329-33. doi:10.1016/j.cep.2006.07.002.

476 Bibliography
Fluids Documentation, Release 0.1

[1] Idelchik, I. E. Flow Resistance: A Design Guide for Engineers. Hemisphere Publishing Corporation, New
York, 1989.
[2] Allen, K. G., T. W. von Backstrom, and D. G. Kroger. “Packed Bed Pressure Drop Dependence on Particle
Shape, Size Distribution, Packing Arrangement and Roughness.” Powder Technology 246 (September
2013): 590-600. doi:10.1016/j.powtec.2013.06.022.
[1] KTA. KTA 3102.3 Reactor Core Design of High-Temperature Gas-Cooled Reactors Part 3: Loss of Pres-
sure through Friction in Pebble Bed Cores. Germany, 1981.
[2] Erdim, Esra, Ömer Akgiray, and İbrahim Demir. “A Revisit of Pressure Drop-Flow Rate Cor-
relations for Packed Beds of Spheres.” Powder Technology 283 (October 2015): 488-504.
doi:10.1016/j.powtec.2015.06.017.
[1] Montillet, A., E. Akkari, and J. Comiti. “About a Correlating Equation for Predicting Pressure Drops
through Packed Beds of Spheres in a Large Range of Reynolds Numbers.” Chemical Engineering and
Processing: Process Intensification 46, no. 4 (April 2007): 329-33. doi:10.1016/j.cep.2006.07.002.
[2] Allen, K. G., T. W. von Backstrom, and D. G. Kroger. “Packed Bed Pressure Drop Dependence on Particle
Shape, Size Distribution, Packing Arrangement and Roughness.” Powder Technology 246 (September
2013): 590-600. doi:10.1016/j.powtec.2013.06.022.
[1] Guo, Zehua, Zhongning Sun, Nan Zhang, Ming Ding, and Jiaqing Liu. “Pressure Drop in Slender
Packed Beds with Novel Packing Arrangement.” Powder Technology 321 (November 2017): 286-92.
doi:10.1016/j.powtec.2017.08.024.
[1] Benyahia, F., and K. E. O’Neill. “Enhanced Voidage Correlations for Packed Beds of Various Par-
ticle Shapes and Sizes.” Particulate Science and Technology 23, no. 2 (April 1, 2005): 169-77.
doi:10.1080/02726350590922242.
[1] Benyahia, F., and K. E. O’Neill. “Enhanced Voidage Correlations for Packed Beds of Various Par-
ticle Shapes and Sizes.” Particulate Science and Technology 23, no. 2 (April 1, 2005): 169-77.
doi:10.1080/02726350590922242.
[1] Benyahia, F., and K. E. O’Neill. “Enhanced Voidage Correlations for Packed Beds of Various Par-
ticle Shapes and Sizes.” Particulate Science and Technology 23, no. 2 (April 1, 2005): 169-77.
doi:10.1080/02726350590922242.
[1] Robbins [Chem. Eng. Progr., p. 87 (May 1991) Improved Pressure Drop Prediction with a New Correla-
tion.
[1] Stichlmair, J., J. L. Bravo, and J. R. Fair. “General Model for Prediction of Pressure Drop and Capacity
of Countercurrent Gas/liquid Packed Columns.” Gas Separation & Purification 3, no. 1 (March 1989):
19-28. doi:10.1016/0950-4214(89)80016-7.
[1] Stichlmair, J., J. L. Bravo, and J. R. Fair. “General Model for Prediction of Pressure Drop and Capacity
of Countercurrent Gas/liquid Packed Columns.” Gas Separation & Purification 3, no. 1 (March 1989):
19-28. doi:10.1016/0950-4214(89)80016-7.
[2] Piche, Simon R., Faical Larachi, and Bernard P. A. Grandjean. “Improving the Prediction of Irrigated
Pressure Drop in Packed Absorption Towers.” The Canadian Journal of Chemical Engineering 79, no. 4
(August 1, 2001): 584-94. doi:10.1002/cjce.5450790417.
[1] Stichlmair, J., J. L. Bravo, and J. R. Fair. “General Model for Prediction of Pressure Drop and Capacity
of Countercurrent Gas/liquid Packed Columns.” Gas Separation & Purification 3, no. 1 (March 1989):
19-28. doi:10.1016/0950-4214(89)80016-7.
[1] Setekleiv, A. Eddie, and Hallvard F. Svendsen. “Dry Pressure Drop in Spiral Wound Wire Mesh Pads at
Low and Elevated Pressures.” Chemical Engineering Research and Design 109 (May 2016): 141-149.
doi:10.1016/j.cherd.2016.01.019.

Bibliography 477
Fluids Documentation, Release 0.1

[1] Setekleiv, A. Eddie, and Hallvard F. Svendsen. “Dry Pressure Drop in Spiral Wound Wire Mesh Pads at
Low and Elevated Pressures.” Chemical Engineering Research and Design 109 (May 2016): 141-149.
doi:10.1016/j.cherd.2016.01.019.
[1] El-Dessouky, Hisham T, Imad M Alatiqi, Hisham M Ettouney, and Noura S Al-Deffeeri. “Performance
of Wire Mesh Mist Eliminator.” Chemical Engineering and Processing: Process Intensification 39, no. 2
(March 2000): 129-39. doi:10.1016/S0255-2701(99)00033-1.
[1] El-Dessouky, Hisham T, Imad M Alatiqi, Hisham M Ettouney, and Noura S Al-Deffeeri. “Performance
of Wire Mesh Mist Eliminator.” Chemical Engineering and Processing: Process Intensification 39, no. 2
(March 2000): 129-39. doi:10.1016/S0255-2701(99)00033-1.
[1] Helsør, T., and H. Svendsen. “Experimental Characterization of Pressure Drop in Dry Demisters at
Low and Elevated Pressures.” Chemical Engineering Research and Design 85, no. 3 (2007): 377-85.
doi:10.1205/cherd06048.
[1] Helsør, T., and H. Svendsen. “Experimental Characterization of Pressure Drop in Dry Demisters at
Low and Elevated Pressures.” Chemical Engineering Research and Design 85, no. 3 (2007): 377-85.
doi:10.1205/cherd06048.
[R6899669cf6c8-1] ISO 9276-2:2014 - Representation of Results of Particle Size Analysis - Part 2: Calculation of
Average Particle Sizes/Diameters and Moments from Particle Size Distributions.
[1] ASTM E11 - 17 - Standard Specification for Woven Wire Test Sieve Cloth and Test Sieves.
[2] ISO 3310-1:2016 - Test Sieves – Technical Requirements and Testing – Part 1: Test Sieves of Metal Wire
Cloth.
[1] Mugele, R. A., and H. D. Evans. “Droplet Size Distribution in Sprays.” Industrial & Engineering Chem-
istry 43, no. 6 (June 1951): 1317-24. https://doi.org/10.1021/ie50498a023.
[2] ASTM E799 - 03(2015) - Standard Practice for Determining Data Criteria and Processing for Liquid Drop
Size Analysis.
[3] ISO 9276-2:2014 - Representation of Results of Particle Size Analysis - Part 2: Calculation of Average
Particle Sizes/Diameters and Moments from Particle Size Distributions.
[1] ISO 9276-2:2014 - Representation of Results of Particle Size Analysis - Part 2: Calculation of Average
Particle Sizes/Diameters and Moments from Particle Size Distributions.
[1] Masuda, Hiroaki, Ko Higashitani, and Hideto Yoshida. Powder Technology: Fundamentals of Particles,
Powder Beds, and Particle Generation. CRC Press, 2006.
[1] ISO 9276-2:2014 - Representation of Results of Particle Size Analysis - Part 2: Calculation of Average
Particle Sizes/Diameters and Moments from Particle Size Distributions.
[R8b42d45c9b22-1] ASTM E799 - 03(2015) - Standard Practice for Determining Data Criteria and Processing for
Liquid Drop Size Analysis.
[R8b42d45c9b22-2] ISO 9276-2:2014 - Representation of Results of Particle Size Analysis - Part 2: Calculation of
Average Particle Sizes/Diameters and Moments from Particle Size Distributions.
[1] ASTM E799 - 03(2015) - Standard Practice for Determining Data Criteria and Processing for Liquid Drop
Size Analysis.
[1] Mugele, R. A., and H. D. Evans. “Droplet Size Distribution in Sprays.” Industrial & Engineering Chem-
istry 43, no. 6 (June 1951): 1317-24. https://doi.org/10.1021/ie50498a023.
[2] ASTM E799 - 03(2015) - Standard Practice for Determining Data Criteria and Processing for Liquid Drop
Size Analysis.
[3] ISO 9276-2:2014 - Representation of Results of Particle Size Analysis - Part 2: Calculation of Average
Particle Sizes/Diameters and Moments from Particle Size Distributions.

478 Bibliography
Fluids Documentation, Release 0.1

[1] ISO 9276-2:2014 - Representation of Results of Particle Size Analysis - Part 2: Calculation of Average
Particle Sizes/Diameters and Moments from Particle Size Distributions.
[1] ISO 9276-2:2014 - Representation of Results of Particle Size Analysis - Part 2: Calculation of Average
Particle Sizes/Diameters and Moments from Particle Size Distributions.
[1] ISO 9276-2:2014 - Representation of Results of Particle Size Analysis - Part 2: Calculation of Average
Particle Sizes/Diameters and Moments from Particle Size Distributions.
[1] ISO 9276-2:2014 - Representation of Results of Particle Size Analysis - Part 2: Calculation of Average
Particle Sizes/Diameters and Moments from Particle Size Distributions.
[1] Schuhmann, R., 1940. Principles of Comminution, I-Size Distribution and Surface Calculations. Amer-
ican Institute of Mining, Metallurgical and Petroleum Engineers Technical Publication 1189. Mining
Technology, volume 4, p. 1-11.
[2] Bayat, Hossein, Mostafa Rastgo, Moharram Mansouri Zadeh, and Harry Vereecken. “Particle Size Dis-
tribution Models, Their Characteristics and Fitting Capability.” Journal of Hydrology 529 (October 1,
2015): 872-89.
[1] Schuhmann, R., 1940. Principles of Comminution, I-Size Distribution and Surface Calculations. Amer-
ican Institute of Mining, Metallurgical and Petroleum Engineers Technical Publication 1189. Mining
Technology, volume 4, p. 1-11.
[2] Bayat, Hossein, Mostafa Rastgo, Moharram Mansouri Zadeh, and Harry Vereecken. “Particle Size Dis-
tribution Models, Their Characteristics and Fitting Capability.” Journal of Hydrology 529 (October 1,
2015): 872-89.
[1] Rosin, P. “The Laws Governing the Fineness of Powdered Coal.” J. Inst. Fuel. 7 (1933): 29-36.
[2] Bayat, Hossein, Mostafa Rastgo, Moharram Mansouri Zadeh, and Harry Vereecken. “Particle Size Dis-
tribution Models, Their Characteristics and Fitting Capability.” Journal of Hydrology 529 (October 1,
2015): 872-89.
[1] Rosin, P. “The Laws Governing the Fineness of Powdered Coal.” J. Inst. Fuel. 7 (1933): 29-36.
[2] Bayat, Hossein, Mostafa Rastgo, Moharram Mansouri Zadeh, and Harry Vereecken. “Particle Size Dis-
tribution Models, Their Characteristics and Fitting Capability.” Journal of Hydrology 529 (October 1,
2015): 872-89.
[1] ASTM E11 - 17 - Standard Specification for Woven Wire Test Sieve Cloth and Test Sieves.
[1] ISO 3310-1:2016 - Test Sieves – Technical Requirements and Testing – Part 1: Test Sieves of Metal Wire
Cloth.
[1] ISO 3310-1:2016 - Test Sieves – Technical Requirements and Testing – Part 1: Test Sieves of Metal Wire
Cloth.
[1] ISO 3310-1:2016 - Test Sieves – Technical Requirements and Testing – Part 1: Test Sieves of Metal Wire
Cloth.
[1] ISO 3310-1:2016 - Test Sieves – Technical Requirements and Testing – Part 1: Test Sieves of Metal Wire
Cloth.
[1] ISO 3310-1:2016 - Test Sieves – Technical Requirements and Testing – Part 1: Test Sieves of Metal Wire
Cloth.
[1] ASTM E11 - 17 - Standard Specification for Woven Wire Test Sieve Cloth and Test Sieves.
[2] ISO 3310-1:2016 - Test Sieves – Technical Requirements and Testing – Part 1: Test Sieves of Metal Wire
Cloth.
[1] American National Standards Institute, and American Society of Mechanical Engineers. B36.10M-2004:
Welded and Seamless Wrought Steel Pipe. New York: American Society of Mechanical Engineers, 2004.

Bibliography 479
Fluids Documentation, Release 0.1

[2] American National Standards Institute, and American Society of Mechanical Engineers. B36-19M-2004:
Stainless Steel Pipe. New York, N.Y.: American Society of Mechanical Engineers, 2004.
[1] Oberg, Erik, Franklin D. Jones, and Henry H. Ryffel. Machinery’s Handbook. Industrial Press, Incorpo-
rated, 2012.
[1] Oberg, Erik, Franklin D. Jones, and Henry H. Ryffel. Machinery’s Handbook. Industrial Press, Incorpo-
rated, 2012.
[1] GoHz.com. Variable Frequency Drive Efficiency. http://www.variablefrequencydrive.org/vfd-efficiency
[1] Natural Resources Canada. Electric Motors (1 to 500 HP/0.746 to 375 kW). As modified 2015-12-17.
https://www.nrcan.gc.ca/energy/regulations-codes-standards/products/6885
[1] Washington State Energy Office. Energy-Efficient Electric Motor Selection Handbook. 1993.
[1] Seider, Warren D., J. D. Seader, and Daniel R. Lewin. Product and Process Design Principles: Synthesis,
Analysis, and Evaluation. 2 edition. New York: Wiley, 2003.
[2] Corripio, A.B., K.S. Chrien, and L.B. Evans, “Estimate Costs of Centrifugal Pumps and Electric Motors,”
Chem. Eng., 89, 115-118, February 22 (1982).
[1] Seider, Warren D., J. D. Seader, and Daniel R. Lewin. Product and Process Design Principles: Synthesis,
Analysis, and Evaluation. 2 edition. New York: Wiley, 2003.
[2] Corripio, A.B., K.S. Chrien, and L.B. Evans, “Estimate Costs of Centrifugal Pumps and Electric Motors,”
Chem. Eng., 89, 115-118, February 22 (1982).
[1] HI 1.3 Rotodynamic Centrifugal Pumps for Design and Applications
[1] Green, Don, and Robert Perry. Perry’s Chemical Engineers’ Handbook, Eighth Edition. McGraw-Hill
Professional, 2007.
[1] All About Circuits. Synchronous Motors. Chapter 13 - AC Motors http://www.allaboutcircuits.com/
textbook/alternating-current/chpt-13/synchronous-motors/
[1] Natural Resources Canada. Electric Motors (1 to 500 HP/0.746 to 375 kW). As modified 2015-12-17.
https://www.nrcan.gc.ca/energy/regulations-codes-standards/products/6885
[1] Electrical Construction, and Maintenance. “Calculating Single- and 3-Phase Parameters.” April 1, 2008.
http://ecmweb.com/basics/calculating-single-and-3-phase-parameters.
[1] API Standard 526.
[1] API Standard 520, Part 1 - Sizing and Selection.
[1] API Standard 520, Part 1 - Sizing and Selection.
[1] API Standard 520, Part 1 - Sizing and Selection.
[1] API Standard 520, Part 1 - Sizing and Selection.
[1] API Standard 520, Part 1 - Sizing and Selection.
[1] API Standard 520, Part 1 - Sizing and Selection.
[1] API Standard 520, Part 1 - Sizing and Selection.
[1] API Standard 520, Part 1 - Sizing and Selection.
[1] API Standard 520, Part 1 - Sizing and Selection.
[1] Souders, Mott., and George Granger. Brown. “Design of Fractionating Columns I. Entrainment and Ca-
pacity.” Industrial & Engineering Chemistry 26, no. 1 (January 1, 1934): 98-103. https://doi.org/10.1021/
ie50289a025.

480 Bibliography
Fluids Documentation, Release 0.1

[2] Vasude, Gael D. Ulrich and Palligarnai T. Chemical Engineering Process Design and Economics: A
Practical Guide. 2nd edition. Durham, N.H: Process Publishing, 2004.
[1] Watkins (1967). Sizing Separators and Accumulators, Hydrocarbon Processing, November 1967.
[2] Blackwell, W. Wayne. Chemical Process Design on a Programmable Calculator. New York: Mcgraw-Hill,
1984.
[3] Branan, Carl R. Pocket Guide to Chemical Engineering. 1st edition. Houston, Tex: Gulf Professional
Publishing, 1999.
[2] Otto H. York Company, “Mist Elimination in Gas Treatment Plants and Refineries,” Engineering, Parsip-
pany, NJ.
[1] Svrcek, W. Y., and W. D. Monnery. “Design Two-Phase Separators within the Right Limits” Chemical
Engineering Progress, (October 1, 1993): 53-60.
[1] Svrcek, W. Y., and W. D. Monnery. “Design Two-Phase Separators within the Right Limits” Chemical
Engineering Progress, (October 1, 1993): 53-60.
[1] Rizk, F. “Pneumatic conveying at optimal operation conditions and a solution of Bath’s equation.” Pro-
ceedings of Pneumotransport 3, paper D4. BHRA Fluid Engineering, Cranfield, England (1973)
[2] Klinzing, G. E., F. Rizk, R. Marcus, and L. S. Leung. Pneumatic Conveying of Solids: A Theoretical and
Practical Approach. Springer, 2013.
[3] Rhodes, Martin J. Introduction to Particle Technology. Wiley, 2013.
[1] Matsumoto, Shigeru, Michio Kara, Shozaburo Saito, and Siro Maeda. “Minimum Transport Velocity for
Horizontal Pneumatic Conveying.” Journal of Chemical Engineering of Japan 7, no. 6 (1974): 425-30.
doi:10.1252/jcej.7.425.
[2] Jones, Peter J., and L. S. Leung. “A Comparison of Correlations for Saltation Velocity in Horizontal
Pneumatic Conveying.” Industrial & Engineering Chemistry Process Design and Development 17, no. 4
(October 1, 1978): 571-75. doi:10.1021/i260068a031
[1] Matsumoto, Shigeru, Shundo Harada, Shozaburo Saito, and Siro Maeda. “Saltation Velocity for Hor-
izontal Pneumatic Conveying.” Journal of Chemical Engineering of Japan 8, no. 4 (1975): 331-33.
doi:10.1252/jcej.8.331.
[2] Jones, Peter J., and L. S. Leung. “A Comparison of Correlations for Saltation Velocity in Horizontal
Pneumatic Conveying.” Industrial & Engineering Chemistry Process Design and Development 17, no. 4
(October 1, 1978): 571-75. doi:10.1021/i260068a031
[1] Matsumoto, Shigeru, Makoto Kikuta, and Siro Maeda. “Effect of Particle Size on the Minimum Transport
Velocity for Horizontal Pneumatic Conveying of Solids.” Journal of Chemical Engineering of Japan 10,
no. 4 (1977): 273-79. doi:10.1252/jcej.10.273.
[2] Klinzing, G. E., F. Rizk, R. Marcus, and L. S. Leung. Pneumatic Conveying of Solids: A Theoretical and
Practical Approach. Springer, 2013.
[3] Gomes, L. M., and A. L. Amarante Mesquita. “On the Prediction of Pickup and Saltation Velocities
in Pneumatic Conveying.” Brazilian Journal of Chemical Engineering 31, no. 1 (March 2014): 35-46.
doi:10.1590/S0104-66322014000100005
[4] Rabinovich, Evgeny, and Haim Kalman. “Threshold Velocities of Particle-Fluid Flows in Horizontal
Pipes and Ducts: Literature Review.” Reviews in Chemical Engineering 27, no. 5-6 (January 1, 2011).
doi:10.1515/REVCE.2011.011.
[1] Schade, B., Zum Ubergang Sprung-Strahnen-forderung bei der Horizontalen Pneumatischen Feststoffor-
drung. Dissertation, University of Karlsruche (1987)

Bibliography 481
Fluids Documentation, Release 0.1

[2] Rabinovich, Evgeny, and Haim Kalman. “Threshold Velocities of Particle-Fluid Flows in Horizontal
Pipes and Ducts: Literature Review.” Reviews in Chemical Engineering 27, no. 5-6 (January 1, 2011).
doi:10.1515/REVCE.2011.011.
[3] Setia, G., S. S. Mallick, R. Pan, and P. W. Wypych. “Modeling Minimum Transport Boundary for
Fluidized Dense-Phase Pneumatic Conveying Systems.” Powder Technology 277 (June 2015): 244-51.
doi:10.1016/j.powtec.2015.02.050.
[4] Bansal, A., S. S. Mallick, and P. W. Wypych. “Investigating Straight-Pipe Pneumatic Conveying Charac-
teristics for Fluidized Dense-Phase Pneumatic Conveying.” Particulate Science and Technology 31, no. 4
(July 4, 2013): 348-56. doi:10.1080/02726351.2012.732677.
[5] Gomes, L. M., and A. L. Amarante Mesquita. “On the Prediction of Pickup and Saltation Velocities
in Pneumatic Conveying.” Brazilian Journal of Chemical Engineering 31, no. 1 (March 2014): 35-46.
doi:10.1590/S0104-66322014000100005
[1] Weber, M. 1981. Principles of hydraulic and pneumatic conveying in pipes. Bulk Solids Handling 1:
57-63.
[2] Rabinovich, Evgeny, and Haim Kalman. “Threshold Velocities of Particle-Fluid Flows in Horizontal
Pipes and Ducts: Literature Review.” Reviews in Chemical Engineering 27, no. 5-6 (January 1, 2011).
doi:10.1515/REVCE.2011.011.
[3] Setia, G., S. S. Mallick, R. Pan, and P. W. Wypych. “Modeling Minimum Transport Boundary for
Fluidized Dense-Phase Pneumatic Conveying Systems.” Powder Technology 277 (June 2015): 244-51.
doi:10.1016/j.powtec.2015.02.050.
[4] Bansal, A., S. S. Mallick, and P. W. Wypych. “Investigating Straight-Pipe Pneumatic Conveying Charac-
teristics for Fluidized Dense-Phase Pneumatic Conveying.” Particulate Science and Technology 31, no. 4
(July 4, 2013): 348-56. doi:10.1080/02726351.2012.732677.
[5] Gomes, L. M., and A. L. Amarante Mesquita. “On the Prediction of Pickup and Saltation Velocities
in Pneumatic Conveying.” Brazilian Journal of Chemical Engineering 31, no. 1 (March 2014): 35-46.
doi:10.1590/S0104-66322014000100005
[1] Weber, M. 1981. Principles of hydraulic and pneumatic conveying in pipes. Bulk Solids Handling 1:
57-63.
[2] Rabinovich, Evgeny, and Haim Kalman. “Threshold Velocities of Particle-Fluid Flows in Horizontal
Pipes and Ducts: Literature Review.” Reviews in Chemical Engineering 27, no. 5-6 (January 1, 2011).
doi:10.1515/REVCE.2011.011.
[3] Gomes, L. M., and A. L. Amarante Mesquita. “On the Prediction of Pickup and Saltation Velocities
in Pneumatic Conveying.” Brazilian Journal of Chemical Engineering 31, no. 1 (March 2014): 35-46.
doi:10.1590/S0104-66322014000100005
[1] Rohsenow, Warren and James Hartnett and Young Cho. Handbook of Heat Transfer, 3E. New York:
McGraw-Hill, 1998.
[2] Awad, M. M., and Y. S. Muzychka. “Effective Property Models for Homogeneous Two-
Phase Flows.” Experimental Thermal and Fluid Science 33, no. 1 (October 1, 2008): 106-13.
doi:10.1016/j.expthermflusci.2008.07.006.
[3] Kim, Sung-Min, and Issam Mudawar. “Review of Databases and Predictive Methods for Pressure Drop in
Adiabatic, Condensing and Boiling Mini/Micro-Channel Flows.” International Journal of Heat and Mass
Transfer 77 (October 2014): 74-97. doi:10.1016/j.ijheatmasstransfer.2014.04.035.
[1] Shoham, Ovadia. Mechanistic Modeling of Gas-Liquid Two-Phase Flow in Pipes. Pap/Cdr edition.
Richardson, TX: Society of Petroleum Engineers, 2006.
[2] Rohsenow, Warren and James Hartnett and Young Cho. Handbook of Heat Transfer, 3E. New York:
McGraw-Hill, 1998.

482 Bibliography
Fluids Documentation, Release 0.1

[3] Kim, Sung-Min, and Issam Mudawar. “Review of Databases and Predictive Methods for Pressure Drop in
Adiabatic, Condensing and Boiling Mini/Micro-Channel Flows.” International Journal of Heat and Mass
Transfer 77 (October 2014): 74-97. doi:10.1016/j.ijheatmasstransfer.2014.04.035.
[1] Rohsenow, Warren and James Hartnett and Young Cho. Handbook of Heat Transfer, 3E. New York:
McGraw-Hill, 1998.
[2] Kim, Sung-Min, and Issam Mudawar. “Review of Databases and Predictive Methods for Pressure Drop in
Adiabatic, Condensing and Boiling Mini/Micro-Channel Flows.” International Journal of Heat and Mass
Transfer 77 (October 2014): 74-97. doi:10.1016/j.ijheatmasstransfer.2014.04.035.
[3] Thome, John R. “Engineering Data Book III.” Wolverine Tube Inc (2004). http://www.wlv.com/
heat-transfer-databook/
[1] Rohsenow, Warren and James Hartnett and Young Cho. Handbook of Heat Transfer, 3E. New York:
McGraw-Hill, 1998.
[2] Kim, Sung-Min, and Issam Mudawar. “Review of Databases and Predictive Methods for Pressure Drop in
Adiabatic, Condensing and Boiling Mini/Micro-Channel Flows.” International Journal of Heat and Mass
Transfer 77 (October 2014): 74-97. doi:10.1016/j.ijheatmasstransfer.2014.04.035.
[1] Beggs, D.H., and J.P. Brill. “A Study of Two-Phase Flow in Inclined Pipes.” Journal of Petroleum Tech-
nology 25, no. 05 (May 1, 1973): 607-17. https://doi.org/10.2118/4007-PA.
[2] Brill, James P., and Howard Dale Beggs. Two-Phase Flow in Pipes, 1994.
[3] Shoham, Ovadia. Mechanistic Modeling of Gas-Liquid Two-Phase Flow in Pipes. Pap/Cdr edition.
Richardson, TX: Society of Petroleum Engineers, 2006.
[1] Lockhart, R. W. & Martinelli, R. C. (1949), “Proposed correlation of data for isothermal two-phase,
two-component flow in pipes”, Chemical Engineering Progress 45 (1), 39-48.
[2] Chisholm, D.”A Theoretical Basis for the Lockhart-Martinelli Correlation for Two-Phase Flow.” Inter-
national Journal of Heat and Mass Transfer 10, no. 12 (December 1967): 1767-78. doi:10.1016/0017-
9310(67)90047-6.
[3] Cui, Xiaozhou, and John J. J. Chen.”A Re-Examination of the Data of Lockhart-
Martinelli.” International Journal of Multiphase Flow 36, no. 10 (October 2010): 836-46.
doi:10.1016/j.ijmultiphaseflow.2010.06.001.
[4] Kim, Sung-Min, and Issam Mudawar. “Universal Approach to Predicting Two-Phase Frictional Pressure
Drop for Adiabatic and Condensing Mini/ Micro-Channel Flows.” International Journal of Heat and Mass
Transfer 55, no. 11-12 (May 2012): 3246-61. doi:10.1016/j.ijheatmasstransfer.2012.02.047.
[1] Friedel, L. “Improved Friction Pressure Drop Correlations for Horizontal and Vertical Two-Phase Pipe
Flow.” , in: Proceedings, European Two Phase Flow Group Meeting, Ispra, Italy, 1979: 485-481.
[2] Whalley, P. B. Boiling, Condensation, and Gas-Liquid Flow. Oxford: Oxford University Press, 1987.
[3] Triplett, K. A., S. M. Ghiaasiaan, S. I. Abdel-Khalik, A. LeMouel, and B. N. McCord. “Gas-liquid Two-
Phase Flow in Microchannels: Part II: Void Fraction and Pressure Drop.” International Journal of Multi-
phase Flow 25, no. 3 (April 1999): 395-410. doi:10.1016/S0301-9322(98)00055-X.
[4] Mekisso, Henock Mateos. “Comparison of Frictional Pressure Drop Correlations for Isothermal Two-
Phase Horizontal Flow.” Thesis, Oklahoma State University, 2013. https://shareok.org/handle/11244/
11109.
[5] Thome, John R. “Engineering Data Book III.” Wolverine Tube Inc (2004). http://www.wlv.com/
heat-transfer-databook/
[6] Ghiaasiaan, S. Mostafa. Two-Phase Flow, Boiling, and Condensation: In Conventional and Miniature
Systems. Cambridge University Press, 2007.

Bibliography 483
Fluids Documentation, Release 0.1

[1] Chisholm, D. “Pressure Gradients due to Friction during the Flow of Evaporating Two-Phase Mixtures in
Smooth Tubes and Channels.” International Journal of Heat and Mass Transfer 16, no. 2 (February 1973):
347-58. doi:10.1016/0017-9310(73)90063-X.
[2] Mekisso, Henock Mateos. “Comparison of Frictional Pressure Drop Correlations for Isothermal Two-
Phase Horizontal Flow.” Thesis, Oklahoma State University, 2013. https://shareok.org/handle/11244/
11109.
[3] Thome, John R. “Engineering Data Book III.” Wolverine Tube Inc (2004). http://www.wlv.com/
heat-transfer-databook/
[4] Chisholm, D. “Research Note: Influence of Pipe Surface Roughness on Friction Pressure Gradient during
Two-Phase Flow.” Journal of Mechanical Engineering Science 20, no. 6 (December 1, 1978): 353-354.
doi:10.1243/JMES_JOUR_1978_020_061_02.
[1] Kim, Sung-Min, and Issam Mudawar. “Universal Approach to Predicting Two-Phase Frictional Pressure
Drop for Adiabatic and Condensing Mini/ Micro-Channel Flows.” International Journal of Heat and Mass
Transfer 55, no. 11-12 (May 2012): 3246-61. doi:10.1016/j.ijheatmasstransfer.2012.02.047.
[2] Kim, Sung-Min, and Issam Mudawar. “Review of Databases and Predictive Methods for Pressure Drop in
Adiabatic, Condensing and Boiling Mini/Micro-Channel Flows.” International Journal of Heat and Mass
Transfer 77 (October 2014): 74-97. doi:10.1016/j.ijheatmasstransfer.2014.04.035.
[1] Baroczy, C. J. “A systematic correlation for two-phase pressure drop.” In Chem. Eng. Progr., Symp. Ser.,
62: No. 64, 232-49 (1966).
[2] Chisholm, D. “Pressure Gradients due to Friction during the Flow of Evaporating Two-Phase Mixtures in
Smooth Tubes and Channels.” International Journal of Heat and Mass Transfer 16, no. 2 (February 1973):
347-58. doi:10.1016/0017-9310(73)90063-X.
[3] Mekisso, Henock Mateos. “Comparison of Frictional Pressure Drop Correlations for Isothermal Two-
Phase Horizontal Flow.” Thesis, Oklahoma State University, 2013. https://shareok.org/handle/11244/
11109.
[1] Theissing, Peter. “Eine Allgemeingültige Methode Zur Berechnung Des Reibungsdruckverlustes Der
Mehrphasenströmung (A Generally Valid Method for Calculating Frictional Pressure Drop on Multiphase
Flow).” Chemie Ingenieur Technik 52, no. 4 (January 1, 1980): 344-345. doi:10.1002/cite.330520414.
[2] Mekisso, Henock Mateos. “Comparison of Frictional Pressure Drop Correlations for Isothermal Two-
Phase Horizontal Flow.” Thesis, Oklahoma State University, 2013. https://shareok.org/handle/11244/
11109.
[3] Greco, A., and G. P. Vanoli. “Experimental Two-Phase Pressure Gradients during Evaporation of Pure
and Mixed Refrigerants in a Smooth Horizontal Tube. Comparison with Correlations.” Heat and Mass
Transfer 42, no. 8 (April 6, 2006): 709-725. doi:10.1007/s00231-005-0020-7.
[1] Müller-Steinhagen, H, and K Heck. “A Simple Friction Pressure Drop Correlation for Two-Phase Flow
in Pipes.” Chemical Engineering and Processing: Process Intensification 20, no. 6 (November 1, 1986):
297-308. doi:10.1016/0255-2701(86)80008-3.
[2] Mekisso, Henock Mateos. “Comparison of Frictional Pressure Drop Correlations for Isothermal Two-
Phase Horizontal Flow.” Thesis, Oklahoma State University, 2013. https://shareok.org/handle/11244/
11109.
[3] Thome, John R. “Engineering Data Book III.” Wolverine Tube Inc (2004). http://www.wlv.com/
heat-transfer-databook/
[1] Gronnerud, R. “Investigation of Liquid Hold-Up, Flow Resistance and Heat Transfer in Circulation Type
Evaporators. 4. Two-Phase Flow Resistance in Boiling Refrigerants.” Proc. Freudenstadt Meet., IIR/C. R.
Réun. Freudenstadt, IIF. 1972-1: 127-138. 1972.

484 Bibliography
Fluids Documentation, Release 0.1

[2] ASHRAE Handbook: Fundamentals. American Society of Heating, Refrigerating and Air-Conditioning
Engineers, Incorporated, 2013.
[3] Mekisso, Henock Mateos. “Comparison of Frictional Pressure Drop Correlations for Isothermal Two-
Phase Horizontal Flow.” Thesis, Oklahoma State University, 2013. https://shareok.org/handle/11244/
11109.
[4] Thome, John R. “Engineering Data Book III.” Wolverine Tube Inc (2004). http://www.wlv.com/
heat-transfer-databook/
[1] Lombardi, C., and E. Pedrocchi. “Pressure Drop Correlation in Two- Phase Flow.” Energ. Nucl. (Milan)
19: No. 2, 91-99, January 1, 1972.
[2] Mekisso, Henock Mateos. “Comparison of Frictional Pressure Drop Correlations for Isothermal Two-
Phase Horizontal Flow.” Thesis, Oklahoma State University, 2013. https://shareok.org/handle/11244/
11109.
[3] Turgut, Oğuz Emrah, Mustafa Turhan Çoban, and Mustafa Asker. “Comparison of Flow Boiling Pressure
Drop Correlations for Smooth Macrotubes.” Heat Transfer Engineering 37, no. 6 (April 12, 2016): 487-
506. doi:10.1080/01457632.2015.1060733.
[1] Jung, D. S., and R. Radermacher. “Prediction of Pressure Drop during Horizontal Annular Flow Boiling
of Pure and Mixed Refrigerants.” International Journal of Heat and Mass Transfer 32, no. 12 (December
1, 1989): 2435-46. doi:10.1016/0017-9310(89)90203-2.
[2] Kim, Sung-Min, and Issam Mudawar. “Universal Approach to Predicting Two-Phase Frictional Pressure
Drop for Adiabatic and Condensing Mini/ Micro-Channel Flows.” International Journal of Heat and Mass
Transfer 55, no. 11–12 (May 2012): 3246-61. doi:10.1016/j.ijheatmasstransfer.2012.02.047.
[3] Filip, Alina, Florin Băltăreţu, and Radu-Mircea Damian. “Comparison of Two-Phase Pressure Drop Mod-
els for Condensing Flows in Horizontal Tubes.” Mathematical Modelling in Civil Engineering 10, no. 4
(2015): 19-27. doi:10.2478/mmce-2014-0019.
[1] 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.
[2] Kim, Sung-Min, and Issam Mudawar. “Universal Approach to Predicting Two-Phase Frictional Pressure
Drop for Adiabatic and Condensing Mini/ Micro-Channel Flows.” International Journal of Heat and Mass
Transfer 55, no. 11–12 (May 2012): 3246-61. doi:10.1016/j.ijheatmasstransfer.2012.02.047.
[3] Choi, Kwang-Il, A. S. Pamitran, Chun-Young Oh, and Jong-Taek Oh. “Two-Phase Pressure Drop of
R-410A in Horizontal Smooth Minichannels.” International Journal of Refrigeration 31, no. 1 (January
2008): 119-29. doi:10.1016/j.ijrefrig.2007.06.006.
[1] Chen, Ing Youn, Kai-Shing Yang, Yu-Juei Chang, and Chi-Chung Wang. “Two-Phase Pressure Drop of
Air–water and R-410A in Small Horizontal Tubes.” International Journal of Multiphase Flow 27, no. 7
(July 2001): 1293-99. doi:10.1016/S0301-9322(01)00004-0.
[2] Kim, Sung-Min, and Issam Mudawar. “Universal Approach to Predicting Two-Phase Frictional Pressure
Drop for Adiabatic and Condensing Mini/ Micro-Channel Flows.” International Journal of Heat and Mass
Transfer 55, no. 11–12 (May 2012): 3246-61. doi:10.1016/j.ijheatmasstransfer.2012.02.047.
[3] Choi, Kwang-Il, A. S. Pamitran, Chun-Young Oh, and Jong-Taek Oh. “Two-Phase Pressure Drop of
R-410A in Horizontal Smooth Minichannels.” International Journal of Refrigeration 31, no. 1 (January
2008): 119-29. doi:10.1016/j.ijrefrig.2007.06.006.
[1] Zhang, Ming, and Ralph L. Webb. “Correlation of Two-Phase Friction for Refrigerants in Small-Diameter
Tubes.” Experimental Thermal and Fluid Science 25, no. 3-4 (October 2001): 131-39. doi:10.1016/S0894-
1777(01)00066-8.

Bibliography 485
Fluids Documentation, Release 0.1

[2] Choi, Kwang-Il, A. S. Pamitran, Chun-Young Oh, and Jong-Taek Oh. “Two-Phase Pressure Drop of
R-410A in Horizontal Smooth Minichannels.” International Journal of Refrigeration 31, no. 1 (January
2008): 119-29. doi:10.1016/j.ijrefrig.2007.06.006.
[1] Xu, Yu, and Xiande Fang. “A New Correlation of Two-Phase Frictional Pressure Drop for
Condensing Flow in Pipes.” Nuclear Engineering and Design 263 (October 2013): 87-96.
doi:10.1016/j.nucengdes.2013.04.017.
[1] Yu, W., D. M. France, M. W. Wambsganss, and J. R. Hull. “Two-Phase Pressure Drop, Boiling Heat
Transfer, and Critical Heat Flux to Water in a Small-Diameter Horizontal Tube.” International Journal of
Multiphase Flow 28, no. 6 (June 2002): 927-41. doi:10.1016/S0301-9322(02)00019-8.
[2] Kim, Sung-Min, and Issam Mudawar. “Universal Approach to Predicting Two-Phase Frictional Pressure
Drop for Adiabatic and Condensing Mini/ Micro-Channel Flows.” International Journal of Heat and Mass
Transfer 55, no. 11-12 (May 2012): 3246-61. doi:10.1016/j.ijheatmasstransfer.2012.02.047.
[3] Xu, Yu, Xiande Fang, Xianghui Su, Zhanru Zhou, and Weiwei Chen. “Evaluation of Frictional Pressure
Drop Correlations for Two-Phase Flow in Pipes.” Nuclear Engineering and Design, SI: CFD4NRS-3, 253
(December 2012): 86-97. doi:10.1016/j.nucengdes.2012.08.007.
[1] Wang, Chi-Chuan, Ching-Shan Chiang, and Ding-Chong Lu. “Visual Observation of Two-Phase Flow
Pattern of R-22, R-134a, and R-407C in a 6.5-Mm Smooth Tube.” Experimental Thermal and Fluid
Science 15, no. 4 (November 1, 1997): 395-405. doi:10.1016/S0894-1777(97)00007-1.
[2] Kim, Sung-Min, and Issam Mudawar. “Universal Approach to Predicting Two-Phase Frictional Pressure
Drop for Adiabatic and Condensing Mini/ Micro-Channel Flows.” International Journal of Heat and Mass
Transfer 55, no. 11-12 (May 2012): 3246-61. doi:10.1016/j.ijheatmasstransfer.2012.02.047.
[3] Xu, Yu, Xiande Fang, Xianghui Su, Zhanru Zhou, and Weiwei Chen. “Evaluation of Frictional Pressure
Drop Correlations for Two-Phase Flow in Pipes.” Nuclear Engineering and Design, SI: CFD4NRS-3, 253
(December 2012): 86-97. doi:10.1016/j.nucengdes.2012.08.007.
[1] Hwang, Yun Wook, and Min Soo Kim. “The Pressure Drop in Microtubes and the Correlation De-
velopment.” International Journal of Heat and Mass Transfer 49, no. 11-12 (June 2006): 1804-12.
doi:10.1016/j.ijheatmasstransfer.2005.10.040.
[2] Kim, Sung-Min, and Issam Mudawar. “Universal Approach to Predicting Two-Phase Frictional Pressure
Drop for Adiabatic and Condensing Mini/ Micro-Channel Flows.” International Journal of Heat and Mass
Transfer 55, no. 11-12 (May 2012): 3246-61. doi:10.1016/j.ijheatmasstransfer.2012.02.047.
[3] Xu, Yu, Xiande Fang, Xianghui Su, Zhanru Zhou, and Weiwei Chen. “Evaluation of Frictional Pressure
Drop Correlations for Two-Phase Flow in Pipes.” Nuclear Engineering and Design, SI: CFD4NRS-3, 253
(December 2012): 86-97. doi:10.1016/j.nucengdes.2012.08.007.
[1] Zhang, W., T. Hibiki, and K. Mishima. “Correlations of Two-Phase Frictional Pressure Drop and Void
Fraction in Mini-Channel.” International Journal of Heat and Mass Transfer 53, no. 1-3 (January 15,
2010): 453-65. doi:10.1016/j.ijheatmasstransfer.2009.09.011.
[2] Kim, Sung-Min, and Issam Mudawar. “Universal Approach to Predicting Two-Phase Frictional Pressure
Drop for Adiabatic and Condensing Mini/ Micro-Channel Flows.” International Journal of Heat and Mass
Transfer 55, no. 11-12 (May 2012): 3246-61. doi:10.1016/j.ijheatmasstransfer.2012.02.047.
[3] Xu, Yu, Xiande Fang, Xianghui Su, Zhanru Zhou, and Weiwei Chen. “Evaluation of Frictional Pressure
Drop Correlations for Two-Phase Flow in Pipes.” Nuclear Engineering and Design, SI: CFD4NRS-3, 253
(December 2012): 86-97. doi:10.1016/j.nucengdes.2012.08.007.
[1] Mishima, K., and T. Hibiki. “Some Characteristics of Air-Water Two- Phase Flow in Small Diam-
eter Vertical Tubes.” International Journal of Multiphase Flow 22, no. 4 (August 1, 1996): 703-12.
doi:10.1016/0301-9322(96)00010-9.

486 Bibliography
Fluids Documentation, Release 0.1

[2] Kim, Sung-Min, and Issam Mudawar. “Universal Approach to Predicting Two-Phase Frictional Pressure
Drop for Adiabatic and Condensing Mini/ Micro-Channel Flows.” International Journal of Heat and Mass
Transfer 55, no. 11-12 (May 2012): 3246-61. doi:10.1016/j.ijheatmasstransfer.2012.02.047.
[3] Xu, Yu, Xiande Fang, Xianghui Su, Zhanru Zhou, and Weiwei Chen. “Evaluation of Frictional Pressure
Drop Correlations for Two-Phase Flow in Pipes.” Nuclear Engineering and Design, SI: CFD4NRS-3, 253
(December 2012): 86-97. doi:10.1016/j.nucengdes.2012.08.007.
[1] Bankoff, S. G. “A Variable Density Single-Fluid Model for Two-Phase Flow With Particular Ref-
erence to Steam-Water Flow.” Journal of Heat Transfer 82, no. 4 (November 1, 1960): 265-72.
doi:10.1115/1.3679930.
[2] Thome, John R. “Engineering Data Book III.” Wolverine Tube Inc (2004). http://www.wlv.com/
heat-transfer-databook/
[3] Moreno Quibén, Jesús. “Experimental and Analytical Study of Two- Phase Pressure Drops during Evap-
oration in Horizontal Tubes,” 2005. doi:10.5075/epfl-thesis-3337.
[4] Mekisso, Henock Mateos. “Comparison of Frictional Pressure Drop Correlations for Isothermal Two-
Phase Horizontal Flow.” Thesis, Oklahoma State University, 2013. https://shareok.org/handle/11244/
11109.
[1] Thom, J. R. S. “Prediction of Pressure Drop during Forced Circulation Boiling of Water.” International
Journal of Heat and Mass Transfer 7, no. 7 (July 1, 1964): 709-24. doi:10.1016/0017-9310(64)90002-X.
[2] Xu, Yu, and Xiande Fang. “Correlations of Void Fraction for Two- Phase Refriger-
ant Flow in Pipes.” Applied Thermal Engineering 64, no. 1-2 (March 2014): 242–51.
doi:10.1016/j.applthermaleng.2013.12.032.
[3] Dalkilic, A. S., S. Laohalertdecha, and S. Wongwises. “Effect of Void Fraction Models on the
Two-Phase Friction Factor of R134a during Condensation in Vertical Downward Flow in a Smooth
Tube.” International Communications in Heat and Mass Transfer 35, no. 8 (October 2008): 921-27.
doi:10.1016/j.icheatmasstransfer.2008.04.001.
[1] Zivi, S. M. “Estimation of Steady-State Steam Void-Fraction by Means of the Principle of Minimum
Entropy Production.” Journal of Heat Transfer 86, no. 2 (May 1, 1964): 247-51. doi:10.1115/1.3687113.
[2] Xu, Yu, and Xiande Fang. “Correlations of Void Fraction for Two- Phase Refriger-
ant Flow in Pipes.” Applied Thermal Engineering 64, no. 1-2 (March 2014): 242–51.
doi:10.1016/j.applthermaleng.2013.12.032.
[3] Dalkilic, A. S., S. Laohalertdecha, and S. Wongwises. “Effect of Void Fraction Models on the
Two-Phase Friction Factor of R134a during Condensation in Vertical Downward Flow in a Smooth
Tube.” International Communications in Heat and Mass Transfer 35, no. 8 (October 2008): 921-27.
doi:10.1016/j.icheatmasstransfer.2008.04.001.
[1] Smith, S. L. “Void Fractions in Two-Phase Flow: A Correlation Based upon an Equal Velocity Head
Model.” Proceedings of the Institution of Mechanical Engineers 184, no. 1 (June 1, 1969): 647-64.
doi:10.1243/PIME_PROC_1969_184_051_02.
[2] Xu, Yu, and Xiande Fang. “Correlations of Void Fraction for Two- Phase Refriger-
ant Flow in Pipes.” Applied Thermal Engineering 64, no. 1-2 (March 2014): 242–51.
doi:10.1016/j.applthermaleng.2013.12.032.
[3] Dalkilic, A. S., S. Laohalertdecha, and S. Wongwises. “Effect of Void Fraction Models on the
Two-Phase Friction Factor of R134a during Condensation in Vertical Downward Flow in a Smooth
Tube.” International Communications in Heat and Mass Transfer 35, no. 8 (October 2008): 921-27.
doi:10.1016/j.icheatmasstransfer.2008.04.001.
[1] Fauske, H., Critical two-phase, steam-water flows, in: Heat Transfer and Fluid Mechanics Institute 1961:
Proceedings. Stanford University Press, 1961, p. 79-89.

Bibliography 487
Fluids Documentation, Release 0.1

[2] Xu, Yu, and Xiande Fang. “Correlations of Void Fraction for Two- Phase Refriger-
ant Flow in Pipes.” Applied Thermal Engineering 64, no. 1-2 (March 2014): 242–51.
doi:10.1016/j.applthermaleng.2013.12.032.
[3] Dalkilic, A. S., S. Laohalertdecha, and S. Wongwises. “Effect of Void Fraction Models on the
Two-Phase Friction Factor of R134a during Condensation in Vertical Downward Flow in a Smooth
Tube.” International Communications in Heat and Mass Transfer 35, no. 8 (October 2008): 921-27.
doi:10.1016/j.icheatmasstransfer.2008.04.001.
[1] Chisholm, D. “Pressure Gradients due to Friction during the Flow of Evaporating Two-Phase Mixtures
in Smooth Tubes and Channels.” International Journal of Heat and Mass Transfer 16, no. 2 (February 1,
1973): 347-58. doi:10.1016/0017-9310(73)90063-X.
[2] Xu, Yu, and Xiande Fang. “Correlations of Void Fraction for Two- Phase Refriger-
ant Flow in Pipes.” Applied Thermal Engineering 64, no. 1-2 (March 2014): 242–51.
doi:10.1016/j.applthermaleng.2013.12.032.
[3] Dalkilic, A. S., S. Laohalertdecha, and S. Wongwises. “Effect of Void Fraction Models on the
Two-Phase Friction Factor of R134a during Condensation in Vertical Downward Flow in a Smooth
Tube.” International Communications in Heat and Mass Transfer 35, no. 8 (October 2008): 921-27.
doi:10.1016/j.icheatmasstransfer.2008.04.001.
[1] J.M. Turner, G.B. Wallis, The Separate-cylinders Model of Two-phase Flow, NYO-3114-6, Thayer’s
School Eng., Dartmouth College, Hanover, New Hampshire, USA, 1965.
[2] Xu, Yu, and Xiande Fang. “Correlations of Void Fraction for Two- Phase Refriger-
ant Flow in Pipes.” Applied Thermal Engineering 64, no. 1-2 (March 2014): 242–51.
doi:10.1016/j.applthermaleng.2013.12.032.
[3] Dalkilic, A. S., S. Laohalertdecha, and S. Wongwises. “Effect of Void Fraction Models on the
Two-Phase Friction Factor of R134a during Condensation in Vertical Downward Flow in a Smooth
Tube.” International Communications in Heat and Mass Transfer 35, no. 8 (October 2008): 921-27.
doi:10.1016/j.icheatmasstransfer.2008.04.001.
[1] Xu, Yu, and Xiande Fang. “Correlations of Void Fraction for Two- Phase Refriger-
ant Flow in Pipes.” Applied Thermal Engineering 64, no. 1-2 (March 2014): 242–51.
doi:10.1016/j.applthermaleng.2013.12.032.
[2] Dalkilic, A. S., S. Laohalertdecha, and S. Wongwises. “Effect of Void Fraction Models on the
Two-Phase Friction Factor of R134a during Condensation in Vertical Downward Flow in a Smooth
Tube.” International Communications in Heat and Mass Transfer 35, no. 8 (October 2008): 921-27.
doi:10.1016/j.icheatmasstransfer.2008.04.001.
[3] Woldesemayat, Melkamu A., and Afshin J. Ghajar. “Comparison of Void Fraction Correlations for Dif-
ferent Flow Patterns in Horizontal and Upward Inclined Pipes.” International Journal of Multiphase Flow
33, no. 4 (April 2007): 347-370. doi:10.1016/j.ijmultiphaseflow.2006.09.004.
[1] Chisholm, Duncan. Two-Phase Flow in Pipelines and Heat Exchangers. Institution of Chemical Engi-
neers, 1983.
[2] Armand, Aleksandr Aleksandrovich. The Resistance During the Movement of a Two-Phase System in
Horizontal Pipes. Atomic Energy Research Establishment, 1959.
[3] Xu, Yu, and Xiande Fang. “Correlations of Void Fraction for Two- Phase Refriger-
ant Flow in Pipes.” Applied Thermal Engineering 64, no. 1-2 (March 2014): 242–51.
doi:10.1016/j.applthermaleng.2013.12.032.
[4] Dalkilic, A. S., S. Laohalertdecha, and S. Wongwises. “Effect of Void Fraction Models on the
Two-Phase Friction Factor of R134a during Condensation in Vertical Downward Flow in a Smooth
Tube.” International Communications in Heat and Mass Transfer 35, no. 8 (October 2008): 921-27.
doi:10.1016/j.icheatmasstransfer.2008.04.001.

488 Bibliography
Fluids Documentation, Release 0.1

[5] Woldesemayat, Melkamu A., and Afshin J. Ghajar. “Comparison of Void Fraction Correlations for Dif-
ferent Flow Patterns in Horizontal and Upward Inclined Pipes.” International Journal of Multiphase Flow
33, no. 4 (April 2007): 347-370. doi:10.1016/j.ijmultiphaseflow.2006.09.004.
[1] Armand, Aleksandr Aleksandrovich. The Resistance During the Movement of a Two-Phase System in
Horizontal Pipes. Atomic Energy Research Establishment, 1959.
[2] Xu, Yu, and Xiande Fang. “Correlations of Void Fraction for Two- Phase Refriger-
ant Flow in Pipes.” Applied Thermal Engineering 64, no. 1-2 (March 2014): 242–51.
doi:10.1016/j.applthermaleng.2013.12.032.
[3] Dalkilic, A. S., S. Laohalertdecha, and S. Wongwises. “Effect of Void Fraction Models on the
Two-Phase Friction Factor of R134a during Condensation in Vertical Downward Flow in a Smooth
Tube.” International Communications in Heat and Mass Transfer 35, no. 8 (October 2008): 921-27.
doi:10.1016/j.icheatmasstransfer.2008.04.001.
[4] Woldesemayat, Melkamu A., and Afshin J. Ghajar. “Comparison of Void Fraction Correlations for Dif-
ferent Flow Patterns in Horizontal and Upward Inclined Pipes.” International Journal of Multiphase Flow
33, no. 4 (April 2007): 347-370. doi:10.1016/j.ijmultiphaseflow.2006.09.004.
[1] Nishino, Haruo, and Yasaburo Yamazaki. “A New Method of Evaluating Steam Volume Fractions in
Boiling Systems.” Journal of the Atomic Energy Society of Japan / Atomic Energy Society of Japan 5,
no. 1 (1963): 39-46. doi:10.3327/jaesj.5.39.
[2] Xu, Yu, and Xiande Fang. “Correlations of Void Fraction for Two- Phase Refriger-
ant Flow in Pipes.” Applied Thermal Engineering 64, no. 1-2 (March 2014): 242–51.
doi:10.1016/j.applthermaleng.2013.12.032.
[3] Woldesemayat, Melkamu A., and Afshin J. Ghajar. “Comparison of Void Fraction Correlations for Dif-
ferent Flow Patterns in Horizontal and Upward Inclined Pipes.” International Journal of Multiphase Flow
33, no. 4 (April 2007): 347-370. doi:10.1016/j.ijmultiphaseflow.2006.09.004.
[1] Guzhov, A. I, Vasiliı̆ Andreevich Mamaev, and G. E Odishariia. A Study of Transportation in Gas-Liquid
Systems. Une Étude Sur Le Transport Des Systèmes Gaz-Liquides. Bruxelles: International Gas Union,
1967.
[2] Xu, Yu, and Xiande Fang. “Correlations of Void Fraction for Two- Phase Refriger-
ant Flow in Pipes.” Applied Thermal Engineering 64, no. 1-2 (March 2014): 242–51.
doi:10.1016/j.applthermaleng.2013.12.032. 921-27. doi:10.1016/j.icheatmasstransfer.2008.04.001.
[3] Woldesemayat, Melkamu A., and Afshin J. Ghajar. “Comparison of Void Fraction Correlations for Dif-
ferent Flow Patterns in Horizontal and Upward Inclined Pipes.” International Journal of Multiphase Flow
33, no. 4 (April 2007): 347-370. doi:10.1016/j.ijmultiphaseflow.2006.09.004.
[1] Kawahara, A., M. Sadatomi, K. Okayama, M. Kawaji, and P. M.-Y. Chung. “Effects of Channel Diameter
and Liquid Properties on Void Fraction in Adiabatic Two-Phase Flow Through Microchannels.” Heat
Transfer Engineering 26, no. 3 (February 16, 2005): 13-19. doi:10.1080/01457630590907158.
[2] Xu, Yu, and Xiande Fang. “Correlations of Void Fraction for Two- Phase Refriger-
ant Flow in Pipes.” Applied Thermal Engineering 64, no. 1-2 (March 2014): 242–51.
doi:10.1016/j.applthermaleng.2013.12.032.
[3] Dalkilic, A. S., S. Laohalertdecha, and S. Wongwises. “Effect of Void Fraction Models on the
Two-Phase Friction Factor of R134a during Condensation in Vertical Downward Flow in a Smooth
Tube.” International Communications in Heat and Mass Transfer 35, no. 8 (October 2008): 921-27.
doi:10.1016/j.icheatmasstransfer.2008.04.001.
[1] Baroczy, C. Correlation of liquid fraction in two-phase flow with applications to liquid metals, Chem.
Eng. Prog. Symp. Ser. 61 (1965) 179-191.

Bibliography 489
Fluids Documentation, Release 0.1

[2] Xu, Yu, and Xiande Fang. “Correlations of Void Fraction for Two- Phase Refriger-
ant Flow in Pipes.” Applied Thermal Engineering 64, no. 1-2 (March 2014): 242–51.
doi:10.1016/j.applthermaleng.2013.12.032.
[3] Dalkilic, A. S., S. Laohalertdecha, and S. Wongwises. “Effect of Void Fraction Models on the
Two-Phase Friction Factor of R134a during Condensation in Vertical Downward Flow in a Smooth
Tube.” International Communications in Heat and Mass Transfer 35, no. 8 (October 2008): 921-27.
doi:10.1016/j.icheatmasstransfer.2008.04.001.
[4] Woldesemayat, Melkamu A., and Afshin J. Ghajar. “Comparison of Void Fraction Correlations for Dif-
ferent Flow Patterns in Horizontal and Upward Inclined Pipes.” International Journal of Multiphase Flow
33, no. 4 (April 2007): 347-370. doi:10.1016/j.ijmultiphaseflow.2006.09.004.
[1] Tandon, T. N., H. K. Varma, and C. P. Gupta. “A Void Fraction Model for Annular Two-Phase Flow.”
International Journal of Heat and Mass Transfer 28, no. 1 (January 1, 1985): 191-198. doi:10.1016/0017-
9310(85)90021-3.
[2] Xu, Yu, and Xiande Fang. “Correlations of Void Fraction for Two- Phase Refriger-
ant Flow in Pipes.” Applied Thermal Engineering 64, no. 1-2 (March 2014): 242–51.
doi:10.1016/j.applthermaleng.2013.12.032.
[3] Dalkilic, A. S., S. Laohalertdecha, and S. Wongwises. “Effect of Void Fraction Models on the
Two-Phase Friction Factor of R134a during Condensation in Vertical Downward Flow in a Smooth
Tube.” International Communications in Heat and Mass Transfer 35, no. 8 (October 2008): 921-27.
doi:10.1016/j.icheatmasstransfer.2008.04.001.
[4] Woldesemayat, Melkamu A., and Afshin J. Ghajar. “Comparison of Void Fraction Correlations for Dif-
ferent Flow Patterns in Horizontal and Upward Inclined Pipes.” International Journal of Multiphase Flow
33, no. 4 (April 2007): 347-370. doi:10.1016/j.ijmultiphaseflow.2006.09.004.
[1] Tandon, T. N., H. K. Varma, and C. P. Gupta. “A Void Fraction Model for Annular Two-Phase Flow.”
International Journal of Heat and Mass Transfer 28, no. 1 (January 1, 1985): 191-198. doi:10.1016/0017-
9310(85)90021-3.
[2] Xu, Yu, and Xiande Fang. “Correlations of Void Fraction for Two- Phase Refriger-
ant Flow in Pipes.” Applied Thermal Engineering 64, no. 1-2 (March 2014): 242–51.
doi:10.1016/j.applthermaleng.2013.12.032.
[3] Dalkilic, A. S., S. Laohalertdecha, and S. Wongwises. “Effect of Void Fraction Models on the
Two-Phase Friction Factor of R134a during Condensation in Vertical Downward Flow in a Smooth
Tube.” International Communications in Heat and Mass Transfer 35, no. 8 (October 2008): 921-27.
doi:10.1016/j.icheatmasstransfer.2008.04.001.
[1] Domanski, Piotr, and David A. Didion. “Computer Modeling of the Vapor Compression Cycle with Con-
stant Flow Area Expansion Device.” Report. UNT Digital Library, May 1983.
[2] Xu, Yu, and Xiande Fang. “Correlations of Void Fraction for Two- Phase Refriger-
ant Flow in Pipes.” Applied Thermal Engineering 64, no. 1-2 (March 2014): 242–51.
doi:10.1016/j.applthermaleng.2013.12.032.
[3] Dalkilic, A. S., S. Laohalertdecha, and S. Wongwises. “Effect of Void Fraction Models on the
Two-Phase Friction Factor of R134a during Condensation in Vertical Downward Flow in a Smooth
Tube.” International Communications in Heat and Mass Transfer 35, no. 8 (October 2008): 921-27.
doi:10.1016/j.icheatmasstransfer.2008.04.001.
[1] Graham, D. M. “Experimental Investigation of Void Fraction During Refrigerant Condensation.” ACRC
Technical Report 135. Air Conditioning and Refrigeration Center. College of Engineering. University of
Illinois at Urbana-Champaign., December 1997.

490 Bibliography
Fluids Documentation, Release 0.1

[2] Xu, Yu, and Xiande Fang. “Correlations of Void Fraction for Two- Phase Refriger-
ant Flow in Pipes.” Applied Thermal Engineering 64, no. 1-2 (March 2014): 242–51.
doi:10.1016/j.applthermaleng.2013.12.032.
[3] Dalkilic, A. S., S. Laohalertdecha, and S. Wongwises. “Effect of Void Fraction Models on the
Two-Phase Friction Factor of R134a during Condensation in Vertical Downward Flow in a Smooth
Tube.” International Communications in Heat and Mass Transfer 35, no. 8 (October 2008): 921-27.
doi:10.1016/j.icheatmasstransfer.2008.04.001.
[1] Yashar, D. A., M. J. Wilson, H. R. Kopke, D. M. Graham, J. C. Chato, and T. A. Newell. “An Investigation
of Refrigerant Void Fraction in Horizontal, Microfin Tubes.” HVAC&R Research 7, no. 1 (January 1,
2001): 67-82. doi:10.1080/10789669.2001.10391430.
[2] Xu, Yu, and Xiande Fang. “Correlations of Void Fraction for Two- Phase Refriger-
ant Flow in Pipes.” Applied Thermal Engineering 64, no. 1-2 (March 2014): 242–51.
doi:10.1016/j.applthermaleng.2013.12.032.
[3] Dalkilic, A. S., S. Laohalertdecha, and S. Wongwises. “Effect of Void Fraction Models on the
Two-Phase Friction Factor of R134a during Condensation in Vertical Downward Flow in a Smooth
Tube.” International Communications in Heat and Mass Transfer 35, no. 8 (October 2008): 921-27.
doi:10.1016/j.icheatmasstransfer.2008.04.001.
[1] Huq, Reazul, and John L. Loth. “Analytical Two-Phase Flow Void Prediction Method.” Journal of Ther-
mophysics and Heat Transfer 6, no. 1 (January 1, 1992): 139-44. doi:10.2514/3.329.
[2] Xu, Yu, and Xiande Fang. “Correlations of Void Fraction for Two- Phase Refriger-
ant Flow in Pipes.” Applied Thermal Engineering 64, no. 1-2 (March 2014): 242–51.
doi:10.1016/j.applthermaleng.2013.12.032.
[3] Dalkilic, A. S., S. Laohalertdecha, and S. Wongwises. “Effect of Void Fraction Models on the
Two-Phase Friction Factor of R134a during Condensation in Vertical Downward Flow in a Smooth
Tube.” International Communications in Heat and Mass Transfer 35, no. 8 (October 2008): 921-27.
doi:10.1016/j.icheatmasstransfer.2008.04.001.
[4] Woldesemayat, Melkamu A., and Afshin J. Ghajar. “Comparison of Void Fraction Correlations for Dif-
ferent Flow Patterns in Horizontal and Upward Inclined Pipes.” International Journal of Multiphase Flow
33, no. 4 (April 2007): 347-370. doi:10.1016/j.ijmultiphaseflow.2006.09.004.
[1] Kopke, H. R. “Experimental Investigation of Void Fraction During Refrigerant Condensation in Horizon-
tal Tubes.” ACRC Technical Report 142. Air Conditioning and Refrigeration Center. College of Engineer-
ing. University of Illinois at Urbana-Champaign., August 1998.
[2] Xu, Yu, and Xiande Fang. “Correlations of Void Fraction for Two- Phase Refriger-
ant Flow in Pipes.” Applied Thermal Engineering 64, no. 1-2 (March 2014): 242–51.
doi:10.1016/j.applthermaleng.2013.12.032.
[1] Gesellschaft, V. D. I., ed. VDI Heat Atlas. 2nd edition. Berlin; New York:: Springer, 2010.
[2] Xu, Yu, and Xiande Fang. “Correlations of Void Fraction for Two- Phase Refriger-
ant Flow in Pipes.” Applied Thermal Engineering 64, no. 1-2 (March 2014): 242–51.
doi:10.1016/j.applthermaleng.2013.12.032.
[3] Dalkilic, A. S., S. Laohalertdecha, and S. Wongwises. “Effect of Void Fraction Models on the
Two-Phase Friction Factor of R134a during Condensation in Vertical Downward Flow in a Smooth
Tube.” International Communications in Heat and Mass Transfer 35, no. 8 (October 2008): 921-27.
doi:10.1016/j.icheatmasstransfer.2008.04.001.
[1] Rouhani, S. Z, and E Axelsson. “Calculation of Void Volume Fraction in the Subcooled and Quality
Boiling Regions.” International Journal of Heat and Mass Transfer 13, no. 2 (February 1, 1970): 383-93.
doi:10.1016/0017-9310(70)90114-6.

Bibliography 491
Fluids Documentation, Release 0.1

[2] Xu, Yu, and Xiande Fang. “Correlations of Void Fraction for Two- Phase Refriger-
ant Flow in Pipes.” Applied Thermal Engineering 64, no. 1-2 (March 2014): 242–51.
doi:10.1016/j.applthermaleng.2013.12.032.
[3] Woldesemayat, Melkamu A., and Afshin J. Ghajar. “Comparison of Void Fraction Correlations for Dif-
ferent Flow Patterns in Horizontal and Upward Inclined Pipes.” International Journal of Multiphase Flow
33, no. 4 (April 2007): 347-370. doi:10.1016/j.ijmultiphaseflow.2006.09.004.
[1] Rouhani, S. Z, and E Axelsson. “Calculation of Void Volume Fraction in the Subcooled and Quality
Boiling Regions.” International Journal of Heat and Mass Transfer 13, no. 2 (February 1, 1970): 383-93.
doi:10.1016/0017-9310(70)90114-6.
[2] Xu, Yu, and Xiande Fang. “Correlations of Void Fraction for Two- Phase Refriger-
ant Flow in Pipes.” Applied Thermal Engineering 64, no. 1-2 (March 2014): 242–51.
doi:10.1016/j.applthermaleng.2013.12.032.
[3] Woldesemayat, Melkamu A., and Afshin J. Ghajar. “Comparison of Void Fraction Correlations for Dif-
ferent Flow Patterns in Horizontal and Upward Inclined Pipes.” International Journal of Multiphase Flow
33, no. 4 (April 2007): 347-370. doi:10.1016/j.ijmultiphaseflow.2006.09.004.
[1] D. Nicklin, J. Wilkes, J. Davidson, “Two-phase flow in vertical tubes”, Trans. Inst. Chem. Eng. 40 (1962)
61-68.
[2] Xu, Yu, and Xiande Fang. “Correlations of Void Fraction for Two- Phase Refriger-
ant Flow in Pipes.” Applied Thermal Engineering 64, no. 1-2 (March 2014): 242–51.
doi:10.1016/j.applthermaleng.2013.12.032.
[3] Woldesemayat, Melkamu A., and Afshin J. Ghajar. “Comparison of Void Fraction Correlations for Dif-
ferent Flow Patterns in Horizontal and Upward Inclined Pipes.” International Journal of Multiphase Flow
33, no. 4 (April 2007): 347-370. doi:10.1016/j.ijmultiphaseflow.2006.09.004.
[1] Gregory, G. A., and D. S. Scott. “Correlation of Liquid Slug Velocity and Frequency in Hori-
zontal Cocurrent Gas-Liquid Slug Flow.” AIChE Journal 15, no. 6 (November 1, 1969): 933-35.
doi:10.1002/aic.690150623.
[2] Xu, Yu, and Xiande Fang. “Correlations of Void Fraction for Two- Phase Refriger-
ant Flow in Pipes.” Applied Thermal Engineering 64, no. 1-2 (March 2014): 242–51.
doi:10.1016/j.applthermaleng.2013.12.032.
[3] Woldesemayat, Melkamu A., and Afshin J. Ghajar. “Comparison of Void Fraction Correlations for Dif-
ferent Flow Patterns in Horizontal and Upward Inclined Pipes.” International Journal of Multiphase Flow
33, no. 4 (April 2007): 347-370. doi:10.1016/j.ijmultiphaseflow.2006.09.004.
[1] Gary Errol. Dix. “Vapor Void Fractions for Forced Convection with Subcooled Boiling at Low Flow
Rates.” Thesis. University of California, Berkeley, 1971.
[2] Xu, Yu, and Xiande Fang. “Correlations of Void Fraction for Two- Phase Refriger-
ant Flow in Pipes.” Applied Thermal Engineering 64, no. 1-2 (March 2014): 242–51.
doi:10.1016/j.applthermaleng.2013.12.032.
[3] Woldesemayat, Melkamu A., and Afshin J. Ghajar. “Comparison of Void Fraction Correlations for Dif-
ferent Flow Patterns in Horizontal and Upward Inclined Pipes.” International Journal of Multiphase Flow
33, no. 4 (April 2007): 347-370. doi:10.1016/j.ijmultiphaseflow.2006.09.004.
[1] K.H. Sun, R.B. Duffey, C.M. Peng, A thermal-hydraulic analysis of core uncover, in: Proceedings of the
19th National Heat Transfer Conference, Experimental and Analytical Modeling of LWR Safety Experi-
ments, 1980, pp. 1-10. Orlando, Florida, USA.
[2] Xu, Yu, and Xiande Fang. “Correlations of Void Fraction for Two- Phase Refriger-
ant Flow in Pipes.” Applied Thermal Engineering 64, no. 1-2 (March 2014): 242–51.
doi:10.1016/j.applthermaleng.2013.12.032.

492 Bibliography
Fluids Documentation, Release 0.1

[3] Woldesemayat, Melkamu A., and Afshin J. Ghajar. “Comparison of Void Fraction Correlations for Dif-
ferent Flow Patterns in Horizontal and Upward Inclined Pipes.” International Journal of Multiphase Flow
33, no. 4 (April 2007): 347-370. doi:10.1016/j.ijmultiphaseflow.2006.09.004.
[1] Xu, Yu, and Xiande Fang. “Correlations of Void Fraction for Two- Phase Refriger-
ant Flow in Pipes.” Applied Thermal Engineering 64, no. 1-2 (March 2014): 242–51.
doi:10.1016/j.applthermaleng.2013.12.032.
[1] Woldesemayat, Melkamu A., and Afshin J. Ghajar. “Comparison of Void Fraction Correlations for Dif-
ferent Flow Patterns in Horizontal and Upward Inclined Pipes.” International Journal of Multiphase Flow
33, no. 4 (April 2007): 347-370. doi:10.1016/j.ijmultiphaseflow.2006.09.004.
[1] Lockhart, R. W. & Martinelli, R. C. (1949), “Proposed correlation of data for isothermal two-phase,
two-component flow in pipes”, Chemical Engineering Progress 45 (1), 39-48.
[2] Woldesemayat, Melkamu A., and Afshin J. Ghajar. “Comparison of Void Fraction Correlations for Dif-
ferent Flow Patterns in Horizontal and Upward Inclined Pipes.” International Journal of Multiphase Flow
33, no. 4 (April 2007): 347-370. doi:10.1016/j.ijmultiphaseflow.2006.09.004.
[1] Awad, M. M., and Y. S. Muzychka. “Effective Property Models for Homogeneous Two-Phase Flows.”
Experimental Thermal and Fluid Science 33, no. 1 (October 1, 2008): 106-13.
[1] Awad, M. M., and Y. S. Muzychka. “Effective Property Models for Homogeneous Two-Phase Flows.”
Experimental Thermal and Fluid Science 33, no. 1 (October 1, 2008): 106-13.
[1] Beattie, D. R. H., and P. B. Whalley. “A Simple Two-Phase Frictional Pressure Drop Calculation
Method.” International Journal of Multiphase Flow 8, no. 1 (February 1, 1982): 83-87. doi:10.1016/0301-
9322(82)90009-X.
[2] Awad, M. M., and Y. S. Muzychka. “Effective Property Models for Homogeneous Two-Phase Flows.”
Experimental Thermal and Fluid Science 33, no. 1 (October 1, 2008): 106-13.
[3] Kim, Sung-Min, and Issam Mudawar. “Review of Databases and Predictive Methods for Pressure Drop in
Adiabatic, Condensing and Boiling Mini/Micro-Channel Flows.” International Journal of Heat and Mass
Transfer 77 (October 2014): 74-97. doi:10.1016/j.ijheatmasstransfer.2014.04.035.
[1] McAdams, W. H. “Vaporization inside Horizontal Tubes-II Benzene-Oil Mixtures.” Trans. ASME 39
(1949): 39-48.
[2] Awad, M. M., and Y. S. Muzychka. “Effective Property Models for Homogeneous Two-Phase Flows.”
Experimental Thermal and Fluid Science 33, no. 1 (October 1, 2008): 106-13.
[3] Kim, Sung-Min, and Issam Mudawar. “Review of Databases and Predictive Methods for Pressure Drop in
Adiabatic, Condensing and Boiling Mini/Micro-Channel Flows.” International Journal of Heat and Mass
Transfer 77 (October 2014): 74-97. doi:10.1016/j.ijheatmasstransfer.2014.04.035.
[1] Cicchitti, A., C. Lombardi, M. Silvestri, G. Soldaini, and R. Zavattarelli. “Two-Phase Cooling Experi-
ments: Pressure Drop, Heat Transfer and Burnout Measurements.” Centro Informazioni Studi Esperienze,
Milan, January 1, 1959.
[2] Awad, M. M., and Y. S. Muzychka. “Effective Property Models for Homogeneous Two-Phase Flows.”
Experimental Thermal and Fluid Science 33, no. 1 (October 1, 2008): 106-13.
[3] Kim, Sung-Min, and Issam Mudawar. “Review of Databases and Predictive Methods for Pressure Drop in
Adiabatic, Condensing and Boiling Mini/Micro-Channel Flows.” International Journal of Heat and Mass
Transfer 77 (October 2014): 74-97. doi:10.1016/j.ijheatmasstransfer.2014.04.035.
[1] Lin, S., C. C. K. Kwok, R. -Y. Li, Z. -H. Chen, and Z. -Y. Chen. “Local Frictional Pressure Drop dur-
ing Vaporization of R-12 through Capillary Tubes.” International Journal of Multiphase Flow 17, no. 1
(January 1, 1991): 95-102. doi:10.1016/0301-9322(91)90072-B.

Bibliography 493
Fluids Documentation, Release 0.1

[2] Awad, M. M., and Y. S. Muzychka. “Effective Property Models for Homogeneous Two-Phase Flows.”
Experimental Thermal and Fluid Science 33, no. 1 (October 1, 2008): 106-13.
[1] Fourar, M., and S. Bories. “Experimental Study of Air-Water Two-Phase Flow through a Fracture
(Narrow Channel).” International Journal of Multiphase Flow 21, no. 4 (August 1, 1995): 621-37.
doi:10.1016/0301-9322(95)00005-I.
[2] Awad, M. M., and Y. S. Muzychka. “Effective Property Models for Homogeneous Two-Phase Flows.”
Experimental Thermal and Fluid Science 33, no. 1 (October 1, 2008): 106-13.
[3] Aung, NZ, and T. Yuwono. “Evaluation of Mixture Viscosity Models in the Prediction of Two-Phase Flow
Pressure Drops.” ASEAN Journal on Science and Technology for Development 29, no. 2 (2012).

494 Bibliography
Python Module Index

f
fluids.atmosphere, 29
fluids.compressible, 42
fluids.control_valve, 63
fluids.core, 76
fluids.drag, 109
fluids.filters, 124
fluids.fittings, 128
fluids.flow_meter, 179
fluids.friction, 200
fluids.geometry, 244
fluids.jet_pump, 279
fluids.mixing, 283
fluids.open_flow, 287
fluids.packed_bed, 294
fluids.packed_tower, 308
fluids.particle_size_distribution, 317
fluids.piping, 345
fluids.pump, 347
fluids.safety_valve, 354
fluids.saltation, 365
fluids.separator, 361
fluids.two_phase, 370
fluids.two_phase_voidage, 396

495
Fluids Documentation, Release 0.1

496 Python Module Index


Index

A 223
A_cylinder() (in module fluids.geometry), 276
A_hollow_cylinder() (in module fluids.geometry),
B
277 Bankoff() (in module fluids.two_phase), 395
A_multiple_hole_cylinder() (in module flu- Barati() (in module fluids.drag), 113
ids.geometry), 277 Barati_high() (in module fluids.drag), 114
a_torispherical() (in module fluids.geometry), Baroczy() (in module fluids.two_phase_voidage), 403
270 Baroczy_Chisholm() (in module fluids.two_phase),
add_thickness() (fluids.geometry.TANK method), 381
247 Barr_1981() (in module fluids.friction), 216
agitator_time_homogeneous() (in module flu- Beattie_Whalley() (in module flu-
ids.mixing), 283 ids.two_phase_voidage), 417
AirCooledExchanger (class in fluids.geometry), 256 Beggs_Brill() (in module fluids.two_phase), 375
airmass() (in module fluids.atmosphere), 34 Bejan_L() (in module fluids.core), 97
Almedeij() (in module fluids.drag), 122 Bejan_p() (in module fluids.core), 98
Alshul_1952() (in module fluids.friction), 211 bend_miter() (in module fluids.fittings), 154
API520_A_g() (in module fluids.safety_valve), 359 bend_miter_Miller() (in module fluids.fittings),
API520_A_steam() (in module fluids.safety_valve), 156
360 bend_rounded() (in module fluids.fittings), 150
API520_B() (in module fluids.safety_valve), 357 bend_rounded_Crane() (in module fluids.fittings),
API520_C() (in module fluids.safety_valve), 354 152
API520_F2() (in module fluids.safety_valve), 355 bend_rounded_Miller() (in module fluids.fittings),
API520_Kv() (in module fluids.safety_valve), 356 151
API520_N() (in module fluids.safety_valve), 356 Biot() (in module fluids.core), 91
API520_round_size() (in module flu- Blasius() (in module fluids.friction), 226
ids.safety_valve), 354 Boiling() (in module fluids.core), 99
API520_SH() (in module fluids.safety_valve), 357 Bond() (in module fluids.core), 87
API520_W() (in module fluids.safety_valve), 358 Brauer() (in module fluids.packed_bed), 299
Archimedes() (in module fluids.core), 100 Brkic_2011_1() (in module fluids.friction), 224
Armand() (in module fluids.two_phase_voidage), 400 Brkic_2011_2() (in module fluids.friction), 225
aspect_ratio() (in module fluids.geometry), 275 Buzzelli_2008() (in module fluids.friction), 223
ASTM_E11_sieves (in module flu-
ids.particle_size_distribution), 343
C
ATMOSPHERE_1976 (class in fluids.atmosphere), 29 C_Chezy_to_n_Manning() (in module flu-
ATMOSPHERE_NRLMSISE00 (class in flu- ids.open_flow), 293
ids.atmosphere), 32 c_ideal_gas() (in module fluids.core), 103
atrrs (fluids.atmosphere.ATMOSPHERE_NRLMSISE00 C_ISA_1932_nozzle() (in module flu-
attribute), 34 ids.flow_meter), 189
Avci_Karagoz_2009() (in module fluids.friction), C_long_radius_nozzle() (in module flu-
ids.flow_meter), 188

497
Fluids Documentation, Release 0.1

C_Reader_Harris_Gallagher() (in module flu- 131


ids.flow_meter), 179 contraction_conical_Crane() (in module flu-
C_Reader_Harris_Gallagher_wet_venturi_tube() ids.fittings), 134
(in module fluids.flow_meter), 196 contraction_round() (in module fluids.fittings),
C_venturi_nozzle() (in module fluids.flow_meter), 129
189 contraction_round_Miller() (in module flu-
C_wedge_meter_ISO_5167_6_2017() (in mod- ids.fittings), 131
ule fluids.flow_meter), 195 contraction_sharp() (in module fluids.fittings),
C_wedge_meter_Miller() (in module flu- 128
ids.flow_meter), 194 control_valve_choke_P_g() (in module flu-
Capillary() (in module fluids.core), 97 ids.control_valve), 72
Carman() (in module fluids.packed_bed), 297 control_valve_choke_P_l() (in module flu-
Cavitation() (in module fluids.core), 93 ids.control_valve), 71
cavitation_index() (in module flu- control_valve_noise_g_2011() (in module flu-
ids.control_valve), 66 ids.control_valve), 74
cdf() (fluids.particle_size_distribution.ParticleSizeDistributionContinuous
control_valve_noise_l_2015() (in module flu-
method), 319 ids.control_valve), 73
cdf_discrete() (flu- convert_flow_coefficient() (in module flu-
ids.control_valve), 71
ids.particle_size_distribution.ParticleSizeDistributionContinuous
method), 319 Corripio_motor_efficiency() (in module flu-
cdf_Gates_Gaudin_Schuhman() (in module flu- ids.pump), 350
ids.particle_size_distribution), 339 Corripio_pump_efficiency() (in module flu-
cdf_lognormal() (in module flu- ids.pump), 350
ids.particle_size_distribution), 337 COV_motionless_mixer() (in module flu-
cdf_Rosin_Rammler() (in module flu- ids.mixing), 286
ids.particle_size_distribution), 341 CSA_motor_efficiency() (in module flu-
Ceylan() (in module fluids.drag), 122 ids.pump), 348
change_K_basis() (in module fluids.fittings), 163 current_ideal() (in module fluids.pump), 353
chebyshev (fluids.geometry.TANK attribute), 247 Cv_char_equal_percentage() (in module flu-
Chen_1979() (in module fluids.friction), 215 ids.control_valve), 71
Chen_Friedel() (in module fluids.two_phase), 387 Cv_char_linear() (in module fluids.control_valve),
Cheng() (in module fluids.drag), 120 71
Chisholm() (in module fluids.two_phase), 378 Cv_char_quick_opening() (in module flu-
Chisholm_Armand() (in module flu- ids.control_valve), 71
ids.two_phase_voidage), 400 Cv_to_K() (in module fluids.fittings), 162
Chisholm_voidage() (in module flu- Cv_to_Kv() (in module fluids.fittings), 160
ids.two_phase_voidage), 398
Churchill_1973() (in module fluids.friction), 212 D
Churchill_1977() (in module fluids.friction), 214 Darby3K() (in module fluids.fittings), 158
Cicchitti() (in module fluids.two_phase_voidage), Dean() (in module fluids.core), 88
418 delta_cdf() (fluids.particle_size_distribution.ParticleSizeDistributionC
circularity() (in module fluids.geometry), 275 method), 320
Clamond() (in module fluids.friction), 204 density() (fluids.atmosphere.ATMOSPHERE_1976
Clift() (in module fluids.drag), 121 static method), 31
Clift_Gauvin() (in module fluids.drag), 115 density_two_phase() (in module flu-
Colebrook() (in module fluids.friction), 203 ids.two_phase_voidage), 416
components (fluids.atmosphere.ATMOSPHERE_NRLMSISE00 di_power() (fluids.particle_size_distribution.ParticleSizeDistribution
attribute), 34 method), 328
cone_meter_expansibility_Stewart() (in diameter() (fluids.geometry.HyperbolicCoolingTower
module fluids.flow_meter), 193 method), 256
Confinement() (in module fluids.core), 99 diameter_ratio_cone_meter() (in module flu-
contraction_beveled() (in module fluids.fittings), ids.flow_meter), 192
134 diameter_ratio_wedge_meter() (in module flu-
contraction_conical() (in module fluids.fittings), ids.flow_meter), 192

498 Index
Fluids Documentation, Release 0.1

differential_pressure_meter_beta() (in entrance_beveled() (in module fluids.fittings), 146


module fluids.flow_meter), 199 entrance_beveled_orifice() (in module flu-
differential_pressure_meter_C_epsilon() ids.fittings), 148
(in module fluids.flow_meter), 198 entrance_distance() (in module fluids.fittings),
differential_pressure_meter_dP() (in mod- 141
ule fluids.flow_meter), 182 entrance_distance_45_Miller() (in module
differential_pressure_meter_solver() (in fluids.fittings), 148
module fluids.flow_meter), 181 entrance_rounded() (in module fluids.fittings), 143
diffuser_conical() (in module fluids.fittings), 136 entrance_sharp() (in module fluids.fittings), 140
diffuser_conical_staged() (in module flu- Eotvos() (in module fluids.core), 109
ids.fittings), 137 Erdim_Akgiray_Demir() (in module flu-
diffuser_curved() (in module fluids.fittings), 139 ids.packed_bed), 300
diffuser_pipe_reducer() (in module flu- Ergun() (in module fluids.packed_bed), 295
ids.fittings), 140 Euler() (in module fluids.core), 92
diffuser_sharp() (in module fluids.fittings), 135 exit_normal() (in module fluids.fittings), 149
Dis (fluids.particle_size_distribution.ParticleSizeDistribution
attribute), 328 F
discharge_coefficient_to_K() (in module flu- Fahien_Schriver() (in module fluids.packed_bed),
ids.flow_meter), 184 301
Dix() (in module fluids.two_phase_voidage), 412 Fang_2011() (in module fluids.friction), 226
dn() (fluids.particle_size_distribution.ParticleSizeDistributionContinuous
Fauske() (in module fluids.two_phase_voidage), 397
method), 320 FF_critical_pressure_ratio_l() (in module
Domanski_Didion() (in module flu- fluids.control_valve), 67
ids.two_phase_voidage), 405 fit() (fluids.particle_size_distribution.ParticleSizeDistribution
dP_cone_meter() (in module fluids.flow_meter), 193 method), 329
dP_demister_dry_Setekleiv_Svendsen() (in Flemmer_Banks() (in module fluids.drag), 117
module fluids.packed_tower), 313 flow_coefficient() (in module fluids.flow_meter),
dP_demister_dry_Setekleiv_Svendsen_lit() 187
(in module fluids.packed_tower), 314 flow_meter_discharge() (in module flu-
dP_demister_wet_ElDessouky() (in module flu- ids.flow_meter), 183
ids.packed_tower), 314 fluids.atmosphere (module), 29
dP_from_K() (in module fluids.core), 107 fluids.compressible (module), 42
dP_orifice() (in module fluids.flow_meter), 186 fluids.control_valve (module), 63
dP_packed_bed() (in module fluids.packed_bed), fluids.core (module), 76
294 fluids.drag (module), 109
dP_Reader_Harris_Gallagher_wet_venturi_tube() fluids.filters (module), 124
(in module fluids.flow_meter), 197 fluids.fittings (module), 128
dP_venturi_tube() (in module fluids.flow_meter), fluids.flow_meter (module), 179
191 fluids.friction (module), 200
dP_wedge_meter() (in module fluids.flow_meter), fluids.geometry (module), 244
195 fluids.jet_pump (module), 279
Drag() (in module fluids.core), 96 fluids.mixing (module), 283
drag_sphere() (in module fluids.drag), 109 fluids.open_flow (module), 287
ds_discrete() (flu- fluids.packed_bed (module), 294
ids.particle_size_distribution.ParticleSizeDistributionContinuous
fluids.packed_tower (module), 308
method), 321 fluids.particle_size_distribution (mod-
ule), 317
E fluids.piping (module), 345
earthsun_distance() (in module flu- fluids.pump (module), 347
ids.atmosphere), 39 fluids.safety_valve (module), 354
Eck_1973() (in module fluids.friction), 212 fluids.saltation (module), 365
Eckert() (in module fluids.core), 94 fluids.separator (module), 361
Engelund_Hansen() (in module fluids.drag), 115 fluids.two_phase (module), 370
entrance_angled() (in module fluids.fittings), 143 fluids.two_phase_voidage (module), 396

Index 499
Fluids Documentation, Release 0.1

Fourar_Bories() (in module flu- helical_laminar_fd_Mori_Nakayama() (in


ids.two_phase_voidage), 420 module fluids.friction), 230
Fourier_heat() (in module fluids.core), 82 helical_laminar_fd_Schmidt() (in module flu-
Fourier_mass() (in module fluids.core), 83 ids.friction), 231
fractions_discrete() (flu- helical_laminar_fd_White() (in module flu-
ids.friction), 230
ids.particle_size_distribution.ParticleSizeDistributionContinuous
method), 321 helical_transition_Re_Ito() (in module flu-
friction_factor() (in module fluids.friction), 200 ids.friction), 237
friction_factor_curved() (in module flu- helical_transition_Re_Kubair_Kuloor()
ids.friction), 201 (in module fluids.friction), 238
friction_laminar() (in module fluids.friction), helical_transition_Re_Kutateladze_Borishanskii()
205 (in module fluids.friction), 239
friction_plate_Kumar() (in module flu- helical_transition_Re_Schmidt() (in mod-
ids.friction), 242 ule fluids.friction), 239
friction_plate_Martin_1999() (in module flu- helical_transition_Re_Seth_Stahel() (in
ids.friction), 240 module fluids.friction), 237
friction_plate_Martin_VDI() (in module flu- helical_transition_Re_Srinivasan() (in
ids.friction), 241 module fluids.friction), 240
friction_plate_Muley_Manglik() (in module helical_turbulent_fd_Czop() (in module flu-
fluids.friction), 243 ids.friction), 234
Friedel() (in module fluids.two_phase), 377 helical_turbulent_fd_Guo() (in module flu-
Fritzsche() (in module fluids.compressible), 49 ids.friction), 234
Froude() (in module fluids.core), 89 helical_turbulent_fd_Ju() (in module flu-
Froude_densimetric() (in module fluids.core), 90 ids.friction), 235
ft_Crane() (in module fluids.friction), 228 helical_turbulent_fd_Mandal_Nigam() (in
module fluids.friction), 236
G helical_turbulent_fd_Mori_Nakayama() (in
gas_liquid_viscosity() (in module flu- module fluids.friction), 232
ids.two_phase_voidage), 421 helical_turbulent_fd_Prasad() (in module
gauge_from_t() (in module fluids.piping), 346 fluids.friction), 233
Geldart_Ling() (in module fluids.saltation), 369 helical_turbulent_fd_Schmidt() (in module
Graetz_heat() (in module fluids.core), 84 fluids.friction), 232
Graf() (in module fluids.drag), 117 helical_turbulent_fd_Srinivasan() (in
Graham() (in module fluids.two_phase_voidage), 406 module fluids.friction), 236
Grashof() (in module fluids.core), 77 HelicalCoil (class in fluids.geometry), 248
gravity() (fluids.atmosphere.ATMOSPHERE_1976 helix() (in module fluids.fittings), 156
static method), 31 Hicks() (in module fluids.packed_bed), 298
gravity() (in module fluids.core), 105 homogeneous() (in module flu-
Gregory_Scott() (in module flu- ids.two_phase_voidage), 399
ids.two_phase_voidage), 411 Hooper2K() (in module fluids.fittings), 158
Gronnerud() (in module fluids.two_phase), 384 Huq_Loth() (in module fluids.two_phase_voidage),
Guo_Sun() (in module fluids.packed_bed), 305 407
Guzhov() (in module fluids.two_phase_voidage), 401 Hwang_Kim() (in module fluids.two_phase), 392
hwm14() (in module fluids.atmosphere), 40
H hwm93() (in module fluids.atmosphere), 40
h_from_V() (fluids.geometry.TANK method), 247 HyperbolicCoolingTower (class in flu-
Haaland() (in module fluids.friction), 218 ids.geometry), 254
Hagen() (in module fluids.core), 102
Haider_Levenspiel() (in module fluids.drag), 119
I
Harms() (in module fluids.two_phase_voidage), 404 Idelchik() (in module fluids.packed_bed), 303
Harrison_Brunner_Hecker() (in module flu- IGT() (in module fluids.compressible), 51
ids.packed_bed), 304 integrate_drag_sphere() (in module flu-
head_from_K() (in module fluids.core), 107 ids.drag), 111
head_from_P() (in module fluids.core), 108

500 Index
Fluids Documentation, Release 0.1

interpolated (fluids.particle_size_distribution.ParticleSizeDistribution
K_from_L_equiv() (in module fluids.core), 106
attribute), 329 K_gate_valve_Crane() (in module fluids.fittings),
is_choked_turbulent_g() (in module flu- 164
ids.control_valve), 68 K_globe_stop_check_valve_Crane() (in mod-
is_choked_turbulent_l() (in module flu- ule fluids.fittings), 169
ids.control_valve), 67 K_globe_valve_Crane() (in module fluids.fittings),
is_critical_flow() (in module flu- 166
ids.compressible), 60 K_lift_check_valve_Crane() (in module flu-
isentropic_efficiency() (in module flu- ids.fittings), 167
ids.compressible), 57 K_motionless_mixer() (in module fluids.mixing),
isentropic_T_rise_compression() (in mod- 286
ule fluids.compressible), 58 K_plug_valve_Crane() (in module fluids.fittings),
isentropic_work_compression() (in module 173
fluids.compressible), 55 K_run_converging_Crane() (in module flu-
ISO_3310_1_R10 (in module flu- ids.fittings), 175
ids.particle_size_distribution), 344 K_run_diverging_Crane() (in module flu-
ISO_3310_1_R20 (in module flu- ids.fittings), 177
ids.particle_size_distribution), 343 K_separator_demister_York() (in module flu-
ISO_3310_1_R20_3 (in module flu- ids.separator), 363
ids.particle_size_distribution), 344 K_separator_Watkins() (in module flu-
ISO_3310_1_R40_3 (in module flu- ids.separator), 361
ids.particle_size_distribution), 344 K_Sounders_Brown_theoretical() (in module
ISO_3310_1_sieves (in module flu- fluids.separator), 363
ids.particle_size_distribution), 343 K_swing_check_valve_Crane() (in module flu-
isothermal_gas() (in module fluids.compressible), ids.fittings), 166
52 K_tilting_disk_check_valve_Crane() (in
isothermal_work_compression() (in module module fluids.fittings), 168
fluids.compressible), 54 K_to_Cv() (in module fluids.fittings), 163
K_to_discharge_coefficient() (in module flu-
J ids.flow_meter), 185
Jain_1976() (in module fluids.friction), 213 K_to_Kv() (in module fluids.fittings), 161
Jakob() (in module fluids.core), 94 Kawahara() (in module fluids.two_phase_voidage),
Jones_Krier() (in module fluids.packed_bed), 296 402
Jung_Radermacher() (in module fluids.two_phase), Khan_Richardson() (in module fluids.drag), 118
386 Kim_Mudawar() (in module fluids.two_phase), 380
Knudsen() (in module fluids.core), 87
K Kopte_Newell_Chato() (in module flu-
K_angle_stop_check_valve_Crane() (in mod- ids.two_phase_voidage), 408
ule fluids.fittings), 169 Kp_helical_ribbon_Rieger() (in module flu-
K_angle_valve_Crane() (in module fluids.fittings), ids.mixing), 284
165 KTA() (in module fluids.packed_bed), 299
K_ball_valve_Crane() (in module fluids.fittings), Kuo_Nydegger() (in module fluids.packed_bed), 296
170 Kv_to_Cv() (in module fluids.fittings), 159
K_branch_converging_Crane() (in module flu- Kv_to_K() (in module fluids.fittings), 160
ids.fittings), 174
K_branch_diverging_Crane() (in module flu- L
ids.fittings), 176 L_equiv_from_K() (in module fluids.core), 106
K_butterfly_valve_Crane() (in module flu- L_from_K() (in module fluids.core), 107
ids.fittings), 172 LAMINAR_TRANSITION_PIPE (in module flu-
K_diaphragm_valve_Crane() (in module flu- ids.friction), 240
ids.fittings), 171 Lewis() (in module fluids.core), 84
K_foot_valve_Crane() (in module fluids.fittings), Lin_Kwok() (in module fluids.two_phase_voidage),
172 419
K_from_f() (in module fluids.core), 105

Index 501
Fluids Documentation, Release 0.1

liquid_gas_voidage() (in module flu- ids.open_flow), 292


ids.two_phase_voidage), 420 name (fluids.particle_size_distribution.ParticleSizeDistribution
liquid_jet_pump() (in module fluids.jet_pump), attribute), 332
279 name (fluids.particle_size_distribution.PSDCustom at-
liquid_jet_pump_ancillary() (in module flu- tribute), 336
ids.jet_pump), 281 name (fluids.particle_size_distribution.PSDGatesGaudinSchuhman
Lockhart_Martinelli() (in module flu- attribute), 335
ids.two_phase), 376 name (fluids.particle_size_distribution.PSDInterpolated
Lockhart_Martinelli_Xtt() (in module flu- attribute), 333
ids.two_phase_voidage), 415 name (fluids.particle_size_distribution.PSDLognormal
Lombardi_Pedrocchi() (in module flu- attribute), 334
ids.two_phase), 385 name (fluids.particle_size_distribution.PSDRosinRammler
loss_coefficient_piping() (in module flu- attribute), 335
ids.control_valve), 69 nearest_material_roughness() (in module flu-
ids.friction), 209
M nearest_pipe() (in module fluids.piping), 345
Mach() (in module fluids.core), 86 nema_sizes (in module fluids.pump), 352
Manadilli_1997() (in module fluids.friction), 220 nema_sizes_hp (in module fluids.pump), 352
material_roughness() (in module fluids.friction), Nicklin_Wilkes_Davidson() (in module flu-
208 ids.two_phase_voidage), 411
Matsumoto_1974() (in module fluids.saltation), 365 Nishino_Yamazaki() (in module flu-
Matsumoto_1975() (in module fluids.saltation), 366 ids.two_phase_voidage), 401
Matsumoto_1977() (in module fluids.saltation), 367 nozzle_expansibility() (in module flu-
McAdams() (in module fluids.two_phase_voidage), 418 ids.flow_meter), 188
nu_mu_converter() (in module fluids.core), 104
mean_size() (fluids.particle_size_distribution.ParticleSizeDistribution
method), 329 Nusselt() (in module fluids.core), 78
mean_size() (fluids.particle_size_distribution.ParticleSizeDistributionContinuous
method), 322 O
mean_size_ISO() (flu- Ohnesorge() (in module fluids.core), 101
ids.particle_size_distribution.ParticleSizeDistribution
Oliphant() (in module fluids.compressible), 48
method), 330 one_phase_dP() (in module fluids.friction), 205
mean_size_ISO() (flu- one_phase_dP_acceleration() (in module flu-
ids.particle_size_distribution.ParticleSizeDistributionContinuous
ids.friction), 207
method), 323 one_phase_dP_dz_acceleration() (in module
Mikhailov_Freire() (in module fluids.drag), 121 fluids.friction), 206
Mishima_Hibiki() (in module fluids.two_phase), one_phase_dP_gravitational() (in module flu-
394 ids.friction), 206
Montillet_Akkari_Comiti() (in module flu- orifice_expansibility() (in module flu-
ids.packed_bed), 305 ids.flow_meter), 184
Moody() (in module fluids.friction), 210 orifice_expansibility_1989() (in module flu-
Morrison() (in module fluids.drag), 123 ids.flow_meter), 190
Morsi_Alexander() (in module fluids.drag), 116
Morton() (in module fluids.core), 88 P
motor_efficiency_underloaded() (in module P_critical_flow() (in module flu-
fluids.pump), 349 ids.compressible), 59
motor_round_size() (in module fluids.pump), 352 P_from_head() (in module fluids.core), 108
Muller() (in module fluids.compressible), 50 P_isothermal_critical_flow() (in module flu-
Muller_Steinhagen_Heck() (in module flu- ids.compressible), 59
ids.two_phase), 383 P_stagnation() (in module fluids.compressible), 61
MWs (fluids.atmosphere.ATMOSPHERE_NRLMSISE00 Panhandle_A() (in module fluids.compressible), 42
attribute), 34 Panhandle_B() (in module fluids.compressible), 43
Papaevangelo_2010() (in module fluids.friction),
N 224
n_Manning_to_C_Chezy() (in module flu-

502 Index
Fluids Documentation, Release 0.1

ParticleSizeDistribution (class in flu- pressure_integral() (flu-


ids.particle_size_distribution), 326 ids.atmosphere.ATMOSPHERE_1976 static
ParticleSizeDistributionContinuous (class method), 31
in fluids.particle_size_distribution), 318 psd_spacing() (in module flu-
pdf() (fluids.particle_size_distribution.ParticleSizeDistributionContinuous
ids.particle_size_distribution), 344
method), 324 PSDCustom (class in fluids.particle_size_distribution),
pdf_Gates_Gaudin_Schuhman() (in module flu- 335
ids.particle_size_distribution), 339 PSDGatesGaudinSchuhman (class in flu-
pdf_Gates_Gaudin_Schuhman_basis_integral() ids.particle_size_distribution), 334
(in module fluids.particle_size_distribution), PSDInterpolated (class in flu-
340 ids.particle_size_distribution), 332
pdf_lognormal() (in module flu- PSDLognormal (class in flu-
ids.particle_size_distribution), 336 ids.particle_size_distribution), 333
pdf_lognormal_basis_integral() (in module PSDRosinRammler (class in flu-
fluids.particle_size_distribution), 338 ids.particle_size_distribution), 335
pdf_Rosin_Rammler() (in module flu-
ids.particle_size_distribution), 341 Q
pdf_Rosin_Rammler_basis_integral() (in Q_weir_rectangular_full_Ackers() (in mod-
module fluids.particle_size_distribution), 342 ule fluids.open_flow), 289
Peclet_heat() (in module fluids.core), 81 Q_weir_rectangular_full_Kindsvater_Carter()
Peclet_mass() (in module fluids.core), 81 (in module fluids.open_flow), 291
pitch_angle_solver() (in module flu- Q_weir_rectangular_full_Rehbock() (in
ids.geometry), 278 module fluids.open_flow), 290
plate_enlargement_factor_analytical() Q_weir_rectangular_full_SIA() (in module
(fluids.geometry.PlateExchanger static fluids.open_flow), 290
method), 251 Q_weir_rectangular_Kindsvater_Carter()
plate_exchanger_identifier (flu- (in module fluids.open_flow), 288
ids.geometry.PlateExchanger attribute), Q_weir_rectangular_SIA() (in module flu-
252 ids.open_flow), 288
PlateExchanger (class in fluids.geometry), 250 Q_weir_V_Shen() (in module fluids.open_flow), 287
plot() (fluids.geometry.HyperbolicCoolingTower
method), 256 R
plot_cdf() (fluids.particle_size_distribution.ParticleSizeDistributionContinuous
R (fluids.atmosphere.ATMOSPHERE_1976 attribute), 31
method), 325 Rao_Kumar_2007() (in module fluids.friction), 222
plot_pdf() (fluids.particle_size_distribution.ParticleSizeDistributionContinuous
Rayleigh() (in module fluids.core), 79
method), 326 RectangularFinExchanger (class in flu-
points (fluids.particle_size_distribution.ParticleSizeDistribution ids.geometry), 252
attribute), 332 RectangularOffsetStripFinExchanger (class
points (fluids.particle_size_distribution.PSDCustom in fluids.geometry), 254
attribute), 336 relative_roughness() (in module fluids.core),
points (fluids.particle_size_distribution.PSDGatesGaudinSchuhman104
attribute), 335 Reynolds() (in module fluids.core), 76
points (fluids.particle_size_distribution.PSDInterpolated Reynolds_factor() (in module flu-
attribute), 333 ids.control_valve), 70
points (fluids.particle_size_distribution.PSDLognormal Reynolds_valve() (in module fluids.control_valve),
attribute), 334 68
points (fluids.particle_size_distribution.PSDRosinRammler Rizk() (in module fluids.saltation), 365
attribute), 335 Robbins() (in module fluids.packed_tower), 309
polytropic_exponent() (in module flu- Romeo_2002() (in module fluids.friction), 221
ids.compressible), 55 roughness_Farshad() (in module fluids.friction),
Power_number() (in module fluids.core), 95 209
Prandtl() (in module fluids.core), 76 Rouhani_1() (in module fluids.two_phase_voidage),
Prandtl_von_Karman_Nikuradse() (in module 409
fluids.friction), 227

Index 503
Fluids Documentation, Release 0.1

Rouhani_2() (in module fluids.two_phase_voidage), method), 31


410 Sonnad_Goudar_2006() (in module fluids.friction),
Round_1980() (in module fluids.friction), 215 222
round_edge_grill() (in module fluids.filters), 127 specific_area_mesh() (in module flu-
round_edge_open_mesh() (in module flu- ids.packed_tower), 317
ids.filters), 125 specific_diameter() (in module fluids.pump), 351
round_edge_screen() (in module fluids.filters), specific_speed() (in module fluids.pump), 351
124 speed_synchronous() (in module fluids.pump), 352
Rouse() (in module fluids.drag), 114 sphericity() (in module fluids.geometry), 274
spiral() (in module fluids.fittings), 157
S Spitzglass_high() (in module flu-
SA_conical_head() (in module fluids.geometry), ids.compressible), 45
271 Spitzglass_low() (in module fluids.compressible),
SA_ellipsoidal_head() (in module flu- 46
ids.geometry), 270 square_edge_grill() (in module fluids.filters),
SA_guppy_head() (in module fluids.geometry), 272 126
SA_partial_sphere() (in module fluids.geometry), square_edge_screen() (in module fluids.filters),
260 126
SA_tank() (in module fluids.geometry), 273 stagnation_energy() (in module flu-
SA_torispheroidal() (in module fluids.geometry), ids.compressible), 61
272 Stanton() (in module fluids.core), 92
Schade() (in module fluids.saltation), 368 Steiner() (in module fluids.two_phase_voidage), 408
Schmidt() (in module fluids.core), 80 Stichlmair_dry() (in module fluids.packed_tower),
separation_demister_ElDessouky() (in mod- 309
ule fluids.packed_tower), 315 Stichlmair_flood() (in module flu-
Serghides_1() (in module fluids.friction), 219 ids.packed_tower), 312
Serghides_2() (in module fluids.friction), 219 Stichlmair_wet() (in module fluids.packed_tower),
set_chebyshev_approximators() (flu- 310
ids.geometry.TANK method), 247 Stokes() (in module fluids.drag), 113
set_misc() (fluids.geometry.TANK method), 248 Stokes_number() (in module fluids.core), 95
set_overall_geometry() (flu- Strouhal() (in module fluids.core), 90
ids.geometry.RectangularFinExchanger Sun_Duffey_Peng() (in module flu-
method), 254 ids.two_phase_voidage), 413
set_table() (fluids.geometry.TANK method), 248 sunrise_sunset() (in module fluids.atmosphere),
Shacham_1980() (in module fluids.friction), 216 38
Sherwood() (in module fluids.core), 79 Suratman() (in module fluids.core), 101
Sieve (class in fluids.particle_size_distribution), 342 Swamee_Jain_1976() (in module fluids.friction),
213
size_classes (fluids.particle_size_distribution.ParticleSizeDistribution
attribute), 332 Swamee_Ojha() (in module fluids.drag), 118
size_control_valve_g() (in module flu-
ids.control_valve), 64 T
size_control_valve_l() (in module flu- T_critical_flow() (in module flu-
ids.control_valve), 63 ids.compressible), 58
size_tee() (in module fluids.mixing), 285 t_from_gauge() (in module fluids.piping), 347
Smith() (in module fluids.two_phase_voidage), 397 T_stagnation() (in module fluids.compressible), 62
solar_irradiation() (in module flu- T_stagnation_ideal() (in module flu-
ids.atmosphere), 36 ids.compressible), 62
solar_position() (in module fluids.atmosphere), table (fluids.geometry.TANK attribute), 248
35 Tallmadge() (in module fluids.packed_bed), 302
solve_tank_for_V() (fluids.geometry.TANK Tandon_Varma_Gupta() (in module flu-
method), 248 ids.two_phase_voidage), 403
Song_Xu() (in module fluids.drag), 123 TANK (class in fluids.geometry), 244
sonic_velocity() (flu- Terfous() (in module fluids.drag), 120
ids.atmosphere.ATMOSPHERE_1976 static Theissing() (in module fluids.two_phase), 382

504 Index
Fluids Documentation, Release 0.1

thermal_conductivity() (flu- V_horiz_torispherical() (in module flu-


ids.atmosphere.ATMOSPHERE_1976 static ids.geometry), 264
method), 32 v_lift_valve_Crane() (in module fluids.fittings),
thermal_diffusivity() (in module fluids.core), 178
103 V_Manning() (in module fluids.open_flow), 292
Thom() (in module fluids.two_phase_voidage), 396 V_multiple_hole_cylinder() (in module flu-
time_helical_ribbon_Grenville() (in mod- ids.geometry), 278
ule fluids.mixing), 284 V_partial_sphere() (in module fluids.geometry),
time_v_terminal_Stokes() (in module flu- 260
ids.drag), 112 v_Sounders_Brown() (in module fluids.separator),
Tran() (in module fluids.two_phase), 387 361
transmission_factor() (in module flu- v_terminal() (in module fluids.drag), 110
ids.friction), 207 V_vertical_conical() (in module flu-
truncated (fluids.particle_size_distribution.ParticleSizeDistributionids.geometry), 265
attribute), 332 V_vertical_conical_concave() (in module flu-
truncated (fluids.particle_size_distribution.PSDCustom ids.geometry), 267
attribute), 336 V_vertical_ellipsoidal() (in module flu-
truncated (fluids.particle_size_distribution.PSDGatesGaudinSchuhman ids.geometry), 265
attribute), 335 V_vertical_ellipsoidal_concave() (in mod-
truncated (fluids.particle_size_distribution.PSDInterpolated ule fluids.geometry), 268
attribute), 333 V_vertical_spherical() (in module flu-
truncated (fluids.particle_size_distribution.PSDLognormal ids.geometry), 266
attribute), 334 V_vertical_spherical_concave() (in module
truncated (fluids.particle_size_distribution.PSDRosinRammler fluids.geometry), 268
attribute), 335 V_vertical_torispherical() (in module flu-
Tsal_1989() (in module fluids.friction), 220 ids.geometry), 266
Turner_Wallis() (in module flu- V_vertical_torispherical_concave() (in
ids.two_phase_voidage), 399 module fluids.geometry), 269
two_phase_dP() (in module fluids.two_phase), 370 velocity_of_approach_factor() (in module
two_phase_dP_acceleration() (in module flu- fluids.flow_meter), 187
ids.two_phase), 371 VFD_efficiency() (in module fluids.pump), 347
two_phase_dP_dz_acceleration() (in module viscosity() (fluids.atmosphere.ATMOSPHERE_1976
fluids.two_phase), 372 static method), 32
two_phase_dP_dz_gravitational() (in mod- voidage_Benyahia_Oneil() (in module flu-
ule fluids.two_phase), 374 ids.packed_bed), 306
two_phase_dP_gravitational() (in module flu- voidage_Benyahia_Oneil_cylindrical() (in
ids.two_phase), 373 module fluids.packed_bed), 308
two_phase_voidage_experimental() (in mod- voidage_Benyahia_Oneil_spherical() (in
ule fluids.two_phase_voidage), 416 module fluids.packed_bed), 307
voidage_experimental() (in module flu-
V ids.packed_tower), 316
V_Chezy() (in module fluids.open_flow), 293 von_Karman() (in module fluids.friction), 227
V_cylinder() (in module fluids.geometry), 276 vssa (fluids.particle_size_distribution.ParticleSizeDistribution
V_from_h() (fluids.geometry.TANK method), 246 attribute), 332
V_from_h() (in module fluids.geometry), 273 vssa (fluids.particle_size_distribution.ParticleSizeDistributionContinuous
V_hollow_cylinder() (in module fluids.geometry), attribute), 326
277
V_horiz_conical() (in module fluids.geometry), W
261 Wang_Chiang_Lu() (in module fluids.two_phase),
V_horiz_ellipsoidal() (in module flu- 391
ids.geometry), 261 Weber() (in module fluids.core), 85
V_horiz_guppy() (in module fluids.geometry), 262 Weber_saltation() (in module fluids.saltation),
V_horiz_spherical() (in module fluids.geometry), 369
263 Weymouth() (in module fluids.compressible), 44

Index 505
Fluids Documentation, Release 0.1

Woldesemayat_Ghajar() (in module flu-


ids.two_phase_voidage), 414
Wood_1966() (in module fluids.friction), 211

X
Xu_Fang() (in module fluids.two_phase), 389
Xu_Fang_voidage() (in module flu-
ids.two_phase_voidage), 414

Y
Yashar() (in module fluids.two_phase_voidage), 406
Yen() (in module fluids.drag), 119
Yu_France() (in module fluids.two_phase), 390

Z
Zhang_Hibiki_Mishima() (in module flu-
ids.two_phase), 393
Zhang_Webb() (in module fluids.two_phase), 389
Zigrang_Sylvester_1() (in module flu-
ids.friction), 217
Zigrang_Sylvester_2() (in module flu-
ids.friction), 217
Zivi() (in module fluids.two_phase_voidage), 396

506 Index

You might also like