Fittings pressure drop (fluids.fittings)

This module contains correlations for the loss coefficient of various types of pipe fittings. Whether you are desining a network or modeling a single element, the correlations here cover most cases.

For reporting bugs, adding feature requests, or submitting pull requests, please use the GitHub issue tracker or contact the author at Caleb.Andrew.Bell@gmail.com.

Entrances

fluids.fittings.entrance_sharp(method='Rennels')[source]

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.

flush mounted sharp edged entrance; after [R3af04497cfbb-1]_
Parameters
methodstr, optional

The method to use; one of ‘Rennels’, ‘Swamee’, ‘Blevins’, ‘Idelchik’, ‘Crane’, or ‘Miller, [-]

Returns
Kfloat

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

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 Friction (Spravochnik Po Gidravlicheskim Soprotivleniyam, Koeffitsienty Mestnykh Soprotivlenii i Soprotivleniya 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.

Examples

>>> entrance_sharp()
0.57
fluids.fittings.entrance_distance(Di, t=None, l=None, method='Rennels')[source]

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:

\[K = 1.12 - 22\frac{t}{d} + 216\left(\frac{t}{d}\right)^2 + 80\left(\frac{t}{d}\right)^3 \]
sharp edged entrace, extended mount; after [Rcb7abc8a3873-1]_
Parameters
Difloat

Inside diameter of pipe, [m]

tfloat, optional

Thickness of pipe wall, used in all but ‘Crane’ method, [m]

lfloat, optional

The distance the pipe extends into the reservoir; used only in the ‘Idelchik’ method, defaults to Di, [m]

methodstr, optional

One of ‘Rennels’, ‘Miller’, ‘Idelchik’, ‘Harris’, ‘Crane’, [-]

Returns
Kfloat

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.

(Source code, png, hires.png, pdf)

_images/entrance_distance_plot.png

References

1(1,2)

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 Friction (Spravochnik Po Gidravlicheskim Soprotivleniyam, Koeffitsienty Mestnykh Soprotivlenii i Soprotivleniya 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.

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')[source]

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

\[K = 0.57 + 0.30\cos(\theta) + 0.20\cos(\theta)^2 \]
entrace mounted at an angle; after [R06e1623917d2-1]_
Parameters
anglefloat

Angle of inclination (90° = straight, 0° = parallel to pipe wall), [degrees]

methodstr, optional

The method to use; only ‘Idelchik’ is supported

Returns
Kfloat

Loss coefficient [-]

Notes

Not reliable for angles under 20 degrees. Loss coefficient is the same for an upward or downward angled inlet.

References

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 Friction (Spravochnik Po Gidravlicheskim Soprotivleniyam, Koeffitsienty Mestnykh Soprotivlenii i Soprotivleniya Treniya). National technical information Service, 1966.

3

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

Examples

>>> entrance_angled(30)
0.9798076211353315
fluids.fittings.entrance_rounded(Di, rc, method='Rennels')[source]

Returns loss coefficient for a rounded entrance to a pipe flush with the wall of a reservoir. This calculation has six methods available.

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:

\[K = 0.0696\left(1 - 0.569\frac{r}{d}\right)\lambda^2 + (\lambda-1)^2 \]
\[\lambda = 1 + 0.622\left(1 - 0.30\sqrt{\frac{r}{d}} - 0.70\frac{r}{d}\right)^4 \]

The Swamee [5] formula is:

\[K = 0.5\left[1 + 36\left(\frac{r}{D}\right)^{1.2}\right]^{-1} \]
rounded entrace mounted straight and flush; after [R7990bef70843-1]_
Parameters
Difloat

Inside diameter of pipe, [m]

rcfloat

Radius of curvature of the entrance, [m]

methodstr, optional

One of ‘Rennels’, ‘Crane’, ‘Miller’, ‘Idelchik’, ‘Harris’, or ‘Swamee’.

Returns
Kfloat

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

(Source code, png, hires.png, pdf)

_images/entrance_rounded_plot.png

References

1(1,2,3,4)

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: Published 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 Friction (Spravochnik Po Gidravlicheskim Soprotivleniyam, Koeffitsienty Mestnykh Soprotivlenii i Soprotivleniya Treniya). National technical information Service, 1966.

Examples

Point from Diagram 9.2 in [1], which was used to confirm the Rennels model implementation:

>>> entrance_rounded(Di=0.1, rc=0.0235)
0.09839534618360923
fluids.fittings.entrance_beveled(Di, l, angle, method='Rennels')[source]

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:

\[K = 0.0696\left(1 - C_b\frac{l}{d}\right)\lambda^2 + (\lambda-1)^2 \]
\[\lambda = 1 + 0.622\left[1-1.5C_b\left(\frac{l}{d} \right)^{\frac{1-(l/d)^{1/4}}{2}}\right] \]
\[C_b = \left(1 - \frac{\theta}{90}\right)\left(\frac{\theta}{90} \right)^{\frac{1}{1+l/d}} \]
Beveled entrace mounted straight; after [R0d01a819139d-1]_
Parameters
Difloat

Inside diameter of pipe, [m]

lfloat

Length of bevel measured parallel to the pipe length, [m]

anglefloat

Angle of bevel with respect to the pipe length, [degrees]

methodstr, optional

One of ‘Rennels’, or ‘Idelchik’, [-]

Returns
Kfloat

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.

(Source code, png, hires.png, pdf)

_images/entrance_beveled_plot.png

References

1(1,2)

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 Friction (Spravochnik Po Gidravlicheskim Soprotivleniyam, Koeffitsienty Mestnykh Soprotivlenii i Soprotivleniya Treniya). National technical information Service, 1966.

Examples

>>> entrance_beveled(Di=0.1, l=0.003, angle=45)
0.450868642219
>>> entrance_beveled(Di=0.1, l=0.003, angle=45, method='Idelchik')
0.399500000000
fluids.fittings.entrance_beveled_orifice(Di, do, l, angle)[source]

Returns loss coefficient for a beveled or chamfered orifice entrance to a pipe flush with the wall of a reservoir, as shown in [1].

\[K = 0.0696\left(1 - C_b\frac{l}{d_o}\right)\lambda^2 + \left(\lambda -\left(\frac{d_o}{D_i}\right)^2\right)^2 \]
\[\lambda = 1 + 0.622\left[1-C_b\left(\frac{l}{d_o}\right)^{\frac{1- (l/d_o)^{0.25}}{2}}\right] \]
\[C_b = \left(1 - \frac{\Psi}{90}\right)\left(\frac{\Psi}{90} \right)^{\frac{1}{1+l/d_o}} \]
Beveled orifice entrace mounted straight; after [Re5d4b2b8392e-1]_
Parameters
Difloat

Inside diameter of pipe, [m]

dofloat

Inside diameter of orifice, [m]

lfloat

Length of bevel measured parallel to the pipe length, [m]

anglefloat

Angle of bevel with respect to the pipe length, [degrees]

Returns
Kfloat

Loss coefficient [-]

References

1

Rennels, Donald C., and Hobart M. Hudson. Pipe Flow: A Practical and Comprehensive Guide. 1st edition. Hoboken, N.J: Wiley, 2012.

Examples

>>> entrance_beveled_orifice(Di=0.1, do=.07, l=0.003, angle=45)
1.2987552913818574
fluids.fittings.entrance_distance_45_Miller(Di, Di0)[source]

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
Difloat

Inside diameter of pipe, [m]

Di0float

Initial inner diameter of the welded conical section of the entrance of the distant (re-entrant) pipe, [m]

Returns
Kfloat

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(1,2)

Miller, Donald S. Internal Flow Systems: Design and Performance Prediction. Gulf Publishing Company, 1990.

Examples

>>> entrance_distance_45_Miller(Di=0.1, Di0=0.14)
0.24407641818143339

Exits

fluids.fittings.exit_normal()[source]

Returns loss coefficient for any exit to a pipe as shown in [1] and in other sources.

\[K = 1 \]
Exit from a flush mounted wall; after [R11d0da8a7768-1]_
Returns
Kfloat

Loss coefficient [-]

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

Rennels, Donald C., and Hobart M. Hudson. Pipe Flow: A Practical and Comprehensive Guide. 1st edition. Hoboken, N.J: Wiley, 2012.

Examples

>>> exit_normal()
1.0

Bends

fluids.fittings.bend_rounded(Di, angle, fd=None, rc=None, bend_diameters=None, Re=None, roughness=0.0, L_unimpeded=None, method='Rennels')[source]

Returns loss coefficient for rounded bend in a pipe of diameter Di, angle, with a specified either radius of curvature 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 six 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. There is also a ‘Crane standard’ method for use with threaded fittings which have higher pressure drops. It is a linear interpolation of values at angles of 45, 90, and 180 degrees.

The Rennels [1] formula is:

\[K = f\alpha\frac{r}{d} + (0.10 + 2.4f)\sin(\alpha/2) + \frac{6.6f(\sqrt{\sin(\alpha/2)}+\sin(\alpha/2))} {(r/d)^{\frac{4\alpha}{\pi}}} \]

The Swamee [5] formula is:

\[K = \left[0.0733 + 0.923 \left(\frac{d}{rc}\right)^{3.5} \right] \theta^{0.5} \]
rounded bend; after [R10bc12cbf0af-1]_
Parameters
Difloat

Inside diameter of pipe, [m]

anglefloat

Angle of bend, [degrees]

fdfloat, optional

Darcy friction factor; used only in Rennels method; calculated if not provided from Reynolds number, diameter, and roughness [-]

rcfloat, optional

Radius of curvature of the entrance, optional [m]

bend_diametersfloat, optional (used if rc not provided)

Number of diameters of pipe making up the bend radius [-]

Refloat, optional

Reynolds number of the pipe (used in Miller, Ito methods primarily, and Rennels method if no friction factor given), [-]

roughnessfloat, optional

Roughness of bend wall (used in Miller, Ito methods primarily, and Rennels method if no friction factor given), [m]

L_unimpededfloat, optional

The length of unimpeded pipe without any fittings, instrumentation, or flow disturbances downstream (assumed 20 diameters if not specified); used only in Miller method, [m]

methodstr, optional

One of ‘Rennels’, ‘Miller’, ‘Crane’, ‘Crane standard’, ‘Ito’, or ‘Swamee’, [-]

Returns
Kfloat

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

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

Itō, 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.

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, roughness=0.0, L_unimpeded=None)[source]

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
Difloat

Inside diameter of pipe, [m]

anglefloat

Angle of bend, [degrees]

Refloat

Reynolds number of the pipe (no specification if inlet or outlet properties should be used), [m]

rcfloat, optional

Radius of curvature of the entrance, [m]

bend_diametersfloat, optional

Number of diameters of pipe making up the bend radius (used if rc not provided; defaults to 5), [-]

roughnessfloat, optional

Roughness of bend wall, [m]

L_unimpededfloat, optional

The length of unimpeded pipe without any fittings, instrumentation, or flow disturbances downstream (assumed 20 diameters if not specified), [m]

Returns
Kfloat

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(1,2)

Miller, Donald S. Internal Flow Systems: Design and Performance Prediction. Gulf Publishing Company, 1990.

Examples

>>> bend_rounded_Miller(Di=.6, bend_diameters=2, angle=90,  Re=2e6,
... roughness=2E-5, L_unimpeded=30*.6)
0.15261820705145895
fluids.fittings.bend_rounded_Crane(Di, angle, rc=None, bend_diameters=None)[source]

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.

rounded bend; after [Reddd347b426d-1]_
Parameters
Difloat

Inside diameter of pipe, [m]

anglefloat

Angle of bend, [degrees]

rcfloat, optional

Radius of curvature of the entrance; specify either rc or bend_diameters, optional [m]

bend_diametersfloat, optional

Number of diameters of pipe making up the bend radius; specify either rc or bend_diameters, [-]

Returns
Kfloat

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.

(Source code, png, hires.png, pdf)

_images/bend_rounded_Crane_plot.png

References

1(1,2,3)

Crane Co. Flow of Fluids Through Valves, Fittings, and Pipe. Crane, 2009.

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')[source]

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:

\[K = 0.42\sin(\alpha/2) + 2.56\sin^3(\alpha/2) \]

The ‘Crane’, ‘Miller’, and ‘Blevins’ methods are all in part graph or tabular based and do not have straightforward formulas.

Miter bend, one joint only; after [R29188f592c3e-1]_
Parameters
anglefloat

Angle of bend, [degrees]

Difloat, optional

Inside diameter of pipe, [m]

Refloat, optional

Reynolds number of the pipe (no specification if inlet or outlet properties should be used), [-]

roughnessfloat, optional

Roughness of bend wall, [m]

L_unimpededfloat, optional

The length of unimpeded pipe without any fittings, instrumentation, or flow disturbances downstream (assumed 20 diameters if not specified), [m]

methodstr, optional

The specified method to use; one of ‘Rennels’, ‘Miller’, ‘Crane’, or ‘Blevins’, [-]

Returns
Kfloat

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.

(Source code, png, hires.png, pdf)

_images/bend_miter_plot.png

References

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.

Examples

>>> bend_miter(150)
2.7128147734758103
>>> bend_miter(Di=.6, angle=45, Re=1e6, roughness=1e-5, L_unimpeded=20,
... method='Miller')
0.2944060416245169
fluids.fittings.bend_miter_Miller(Di, angle, Re, roughness=0.0, L_unimpeded=None)[source]

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
Difloat

Inside diameter of pipe, [m]

anglefloat

Angle of miter bend, [degrees]

Refloat

Reynolds number of the pipe (no specification if inlet or outlet properties should be used), [m]

roughnessfloat, optional

Roughness of bend wall, [m]

L_unimpededfloat, optional

The length of unimpeded pipe without any fittings, instrumentation, or flow disturbances downstream (assumed 20 diameters if not specified), [m]

Returns
Kfloat

Loss coefficient [-]

Notes

Note the loss coefficient includes the surface friction of the pipe as if it was straight.

References

1(1,2)

Miller, Donald S. Internal Flow Systems: Design and Performance Prediction. Gulf Publishing Company, 1990.

Examples

>>> bend_miter_Miller(Di=.6, angle=90, Re=2e6, roughness=2e-5,
... L_unimpeded=30*.6)
1.1921574594947664
fluids.fittings.helix(Di, rs, pitch, N, fd)[source]

Returns loss coefficient for any size constant-pitch helix as shown in [1]. Has applications in immersed coils in tanks.

\[K = N \left[f\frac{\sqrt{(2\pi r)^2 + p^2}}{d} + 0.20 + 4.8 f\right] \]
Parameters
Difloat

Inside diameter of pipe, [m]

rsfloat

Radius of spiral, [m]

pitchfloat

Distance between two subsequent coil centers, [m]

Nfloat

Number of coils in the helix [-]

fdfloat

Darcy friction factor [-]

Returns
Kfloat

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

Rennels, Donald C., and Hobart M. Hudson. Pipe Flow: A Practical and Comprehensive Guide. 1st edition. Hoboken, N.J: Wiley, 2012.

Examples

>>> helix(Di=0.01, rs=0.1, pitch=.03, N=10, fd=.0185)
14.525134924495514
fluids.fittings.spiral(Di, rmax, rmin, pitch, fd)[source]

Returns loss coefficient for any size constant-pitch spiral as shown in [1]. Has applications in immersed coils in tanks.

\[K = \frac{r_{max} - r_{min}}{p} \left[ f\pi\left(\frac{r_{max} +r_{min}}{d}\right) + 0.20 + 4.8f\right] + \frac{13.2f}{(r_{min}/d)^2} \]
Parameters
Difloat

Inside diameter of pipe, [m]

rmaxfloat

Radius of spiral at extremity, [m]

rminfloat

Radius of spiral at end near center, [m]

pitchfloat

Distance between two subsequent coil centers, [m]

fdfloat

Darcy friction factor [-]

Returns
Kfloat

Loss coefficient [-]

Notes

Source not compared against others.

References

1

Rennels, Donald C., and Hobart M. Hudson. Pipe Flow: A Practical and Comprehensive Guide. 1st edition. Hoboken, N.J: Wiley, 2012.

Examples

>>> spiral(Di=0.01, rmax=.1, rmin=.02, pitch=.01, fd=0.0185)
7.950918552775473

Contractions

fluids.fittings.contraction_sharp(Di1, Di2, fd=None, Re=None, roughness=0.0, method='Rennels')[source]

Returns loss coefficient for a sharp edged pipe contraction.

This calculation has two methods available. The ‘Rennels’ [2] method is a fit for turbulent regimes, while the Hooper method is more complicated and claims to have full dependence on Re including a laminar transition at Re of 2500 (based on the original pipe diameter).

The Rennels [1] formulas are:

\[K_1 = 0.0696(1-\beta^5)\lambda^2 + (\lambda-1)^2 \]
\[\lambda = 1 + 0.622(1-0.215\beta^2 - 0.785\beta^5) \]
\[\beta = d_2/d_1 \]

The Hooper [1] formulas are:

If \({Re}_1 \le 2500\):

\[K_1 = \left[1.2 + \frac{160}{\text{Re}_1}\right] \left[ \left(\frac{D_1} {D_2} \right)^4 -1 \right] \]

If \({Re}_1 > 2500\):

\[K_1 = \left[0.6 + 0.48f_1\right] \left(\frac{D_1} {D_2} \right)^2 \left[ \left(\frac{D_1} {D_2} \right)^2 -1 \right] \]

Converting the loss coefficient to a consistent basis:

\[K_2 = K_1\frac{D_2^4}{D_1^4} \]

For the Crane formula see contraction_conical_Crane with a length of zero.

Sharp contraction
Parameters
Di1float

Inside diameter of original (larger) pipe, [m]

Di2float

Inside diameter of following (smaller) pipe, [m]

fdfloat, optional

Darcy friction factor in original pipe; used only in the Hooper method and will be calculated from Re if not given, [-]

Refloat, optional

Reynolds number of the pipe (used in Hooper method, [m]

roughnessfloat, optional

Roughness of original pipe (used in Hooper method only if no friction factor given), [m]

methodstr

The calculation method to use; one of ‘Hooper’, ‘Rennels’, or ‘Crane’ [-]

Returns
Kfloat

Loss coefficient in terms of the following pipe [-]

Notes

A value of 0.506 or simply 0.5 is often used.

References

1(1,2)

Rennels, Donald C., and Hobart M. Hudson. Pipe Flow: A Practical and Comprehensive Guide. 1st edition. Hoboken, N.J: Wiley, 2012.

2

Hooper, William B. “Calculate Head Loss Caused by Change in Pipe Size.” Chemical Engineering 95, no. 16 (November 7, 1988): 89.

Examples

>>> contraction_sharp(Di1=1, Di2=0.4)
0.5301269161
>>> contraction_sharp(Di1=1, Di2=0.4, Re=1e5, method='Hooper')
0.5112534765

The Hooper method supports laminar flow, while Rennels is not even Re aware.

>>> contraction_sharp(Di1=1, Di2=0.4, Re=1e3, method='Hooper')
1.325184

Crane offers similar results:

>>> contraction_sharp(3.0, 2.0, method='Crane')
0.2777777
fluids.fittings.contraction_round(Di1, Di2, rc, method='Rennels')[source]

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 conservative and less complex; it offers a straight-line curve where the others curves are curved.

The Rennels [1] formulas are:

\[K = 0.0696\left(1 - 0.569\frac{r}{d_2}\right)\left(1-\sqrt{\frac{r} {d_2}}\beta\right)(1-\beta^5)\lambda^2 + (\lambda-1)^2 \]
\[\lambda = 1 + 0.622\left(1 - 0.30\sqrt{\frac{r}{d_2}} - 0.70\frac{r}{d_2}\right)^4 (1-0.215\beta^2-0.785\beta^5) \]
\[\beta = d_2/d_1 \]
Circular round contraction; after [R998964eca1b1-1]_
Parameters
Di1float

Inside diameter of original pipe, [m]

Di2float

Inside diameter of following pipe, [m]

rcfloat

Radius of curvature of the contraction, [m]

methodstr

The calculation method to use; one of ‘Rennels’, ‘Miller’, or ‘Idelchik’, [-]

Returns
Kfloat

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.

(Source code, png, hires.png, pdf)

_images/contraction_round_plot.png

References

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 Friction (Spravochnik Po Gidravlicheskim Soprotivleniyam, Koeffitsienty Mestnykh Soprotivlenii i Soprotivleniya Treniya). National technical information Service, 1966.

Examples

>>> contraction_round(Di1=1, Di2=0.4, rc=0.04)
0.1783332490866574
fluids.fittings.contraction_round_Miller(Di1, Di2, rc)[source]

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
Di1float

Inside diameter of original pipe, [m]

Di2float

Inside diameter of following pipe, [m]

rcfloat

Radius of curvature of the contraction, [m]

Returns
Kfloat

Loss coefficient in terms of the following pipe, [-]

Notes

This method normally gives lower losses than the Rennels formulation.

References

1

Miller, Donald S. Internal Flow Systems: Design and Performance Prediction. Gulf Publishing Company, 1990.

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')[source]

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], ‘Swamee’ [5] and ‘Hooper’ methods use formulas for their calculations.

The ‘Rennels’ [1] formulas are:

\[K_2 = K_{fr,2} + K_{conv,2} \]
\[K_{fr,2} = \frac{f_d ({1 - \beta^4})}{8\sin(\theta/2)} \]
\[K_{conv,2} = 0.0696[1+C_B(\sin(\alpha/2)-1)](1-\beta^5)\lambda^2 + (\lambda-1)^2 \]
\[\lambda = 1 + 0.622(\alpha/180)^{0.8}(1-0.215\beta^2-0.785\beta^5) \]
\[\beta = d_2/d_1 \]

The ‘Swamee’ [5] formula is:

\[K = 0.315 \theta^{1/3} \]

The Hooper [7] formulas are:

If \({Re}_1 \le 2500\):

\[K_{1,sharp} = \left[1.2 + \frac{160}{\text{Re}_1}\right] \left[ \left(\frac{D_1} {D_2} \right)^4 -1 \right] \]

If \({Re}_1 > 2500\):

\[K_{1,sharp} = \left[0.6 + 0.48f_1\right] \left(\frac{D_1} {D_2} \right)^2 \left[ \left(\frac{D_1} {D_2} \right)^2 -1 \right] \]

In both cases, a multiplier is added for the angle:

For angles between 45 and 180 degrees:

\[K_1 = K_{1,sharp} \sqrt{\sin \frac{\theta}{2}} \]

For angles between 0 and 45 degrees:

\[K_1 = K_{1,sharp} 1.6 \sin \frac{\theta}{2} \]

Converting the Hooper loss coefficient to a consistent basis:

\[K_2 = K_1\frac{D_2^4}{D_1^4} \]
contraction conical; after [Racc7295e428f-1]_
Parameters
Di1float

Inside pipe diameter of the larger, upstream, pipe, [m]

Di2float

Inside pipe diameter of the smaller, downstream, pipe, [m]

fdfloat, optional

Darcy friction factor; used only in the Rennels and Hooper method and will be calculated from Re and roughness if not given, [-]

lfloat, optional

Length of the contraction, optional [m]

anglefloat, optional

Angle of contraction (180 = sharp, 0 = infinitely long contraction), optional [degrees]

Refloat, optional

Reynolds number of the pipe (used in Rennels and Hooper method only if no friction factor given), [m]

roughnessfloat, optional

Roughness of bend wall (used in Rennel method if no friction factor given), [m]

methodstr, optional

The method to use for the calculation; one of ‘Rennels’, ‘Idelchik’, ‘Crane’, ‘Swamee’ ‘Hooper’, or ‘Blevins’, [-]

Returns
Kfloat

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.

(Source code, png, hires.png, pdf)

_images/contraction_conical_plot.png

References

1(1,2)

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 Friction (Spravochnik Po Gidravlicheskim Soprotivleniyam, Koeffitsienty Mestnykh Soprotivlenii i Soprotivleniya 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(1,2)

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.

7

Hooper, William B. “Calculate Head Loss Caused by Change in Pipe Size.” Chemical Engineering 95, no. 16 (November 7, 1988): 89.

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

Returns loss coefficient for a conical pipe contraction as shown in Crane TP 410M [1] between 0 and 180 degrees.

If \(\theta < 45^{\circ}\):

\[K_2 = {0.8 \sin \frac{\theta}{2}(1 - \beta^2)} \]

otherwise:

\[K_2 = {0.5\sqrt{\sin \frac{\theta}{2}} (1 - \beta^2)} \]
\[\beta = d_2/d_1 \]
Parameters
Di1float

Inside pipe diameter of the larger, upstream, pipe, [m]

Di2float

Inside pipe diameter of the smaller, downstream, pipe, [m]

lfloat, optional

Length of the contraction [m]

anglefloat, optional

Angle of contraction [degrees]

Returns
Kfloat

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(1,2)

Crane Co. Flow of Fluids Through Valves, Fittings, and Pipe. Crane, 2009.

Examples

>>> contraction_conical_Crane(Di1=0.0779, Di2=0.0525, l=0)
0.2729017979998056
fluids.fittings.contraction_beveled(Di1, Di2, l=None, angle=None)[source]

Returns loss coefficient for any sharp beveled pipe contraction as shown in [1].

\[K = 0.0696[1+C_B(\sin(\alpha/2)-1)](1-\beta^5)\lambda^2 + (\lambda-1)^2 \]
\[\lambda = 1 + 0.622\left[1+C_B\left(\left(\frac{\alpha}{180} \right)^{0.8}-1\right)\right](1-0.215\beta^2-0.785\beta^5) \]
\[C_B = \frac{l}{d_2}\frac{2\beta\tan(\alpha/2)}{1-\beta} \]
\[\beta = d_2/d_1 \]
contraction beveled; after [Rcef1008e2f39-1]_
Parameters
Di1float

Inside diameter of original pipe, [m]

Di2float

Inside diameter of following pipe, [m]

lfloat

Length of the bevel along the pipe axis ,[m]

anglefloat

Angle of bevel, [degrees]

Returns
Kfloat

Loss coefficient in terms of the following pipe [-]

References

1

Rennels, Donald C., and Hobart M. Hudson. Pipe Flow: A Practical and Comprehensive Guide. 1st edition. Hoboken, N.J: Wiley, 2012.

Examples

>>> contraction_beveled(Di1=0.5, Di2=0.1, l=.7*.1, angle=120)
0.40946469413070485

Expansions/Diffusers

fluids.fittings.diffuser_sharp(Di1, Di2, Re=None, fd=None, roughness=0.0, method='Rennels')[source]

Returns loss coefficient for any sudden pipe diameter expansion according to the specified method.

The main theoretical formula is as follows, in [1] and in other sources and is implemented under the name Rennels.

\[K_2 = (1-\beta^2)^2 \]

The Hooper [2] formulas are:

If \({Re}_1 \le 4000\):

\[K_1 = 2 \left[1 - \left( \frac{D_1}{D_2} \right)^4 \right] \]

else:

\[K_1 = \left[1 + 0.8 f_{d,1}\right] \left\{ \left[1 - \left( \frac{D_1}{D_2}\right)^2 \right]^2 \right\} \]
Parameters
Di1float

Inside diameter of original pipe (smaller), [m]

Di2float

Inside diameter of following pipe (larger), [m]

Refloat, optional

Reynolds number of the pipe for original (smaller) pipe, used in Hooper method [-]

fdfloat, optional

Darcy friction factor for original (smaller) pipe [-]

roughnessfloat, optional

Roughness of pipe wall (used in Hooper method if no friction factor given), [m]

methodstr

The method to use for the calculation; one of ‘Rennels’, ‘Hooper’ [-]

Returns
Kfloat

Loss coefficient with respect to the original (smaller) pipe [-]

Notes

Highly accurate.

References

1

Rennels, Donald C., and Hobart M. Hudson. Pipe Flow: A Practical and Comprehensive Guide. 1st edition. Hoboken, N.J: Wiley, 2012.

2

Hooper, William B. “Calculate Head Loss Caused by Change in Pipe Size.” Chemical Engineering 95, no. 16 (November 7, 1988): 89.

Examples

>>> diffuser_sharp(Di1=.5, Di2=1)
0.5625
>>> diffuser_sharp(Di1=.5, Di2=1, Re=1e5, fd=1e-7, method='Hooper')
0.562500045
fluids.fittings.diffuser_conical(Di1, Di2, l=None, angle=None, fd=None, Re=None, roughness=0.0, method='Rennels')[source]

Returns the loss coefficient for any conical pipe diffuser. This calculation has six 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:

\[K_1 = 8.30[\tan(\alpha/2)]^{1.75}(1-\beta^2)^2 + \frac{f(1-\beta^4)}{8\sin(\alpha/2)} \]

For 20 to 60 degrees, beta < 0.5:

\[K_1 = \left\{1.366\sin\left[\frac{2\pi(\alpha-15^\circ)}{180}\right]^{0.5} - 0.170 - 3.28(0.0625-\beta^4)\sqrt{\frac{\alpha-20^\circ}{40^\circ}}\right\} (1-\beta^2)^2 + \frac{f(1-\beta^4)}{8\sin(\alpha/2)} \]

For 20 to 60 degrees, beta >= 0.5:

\[K_1 = \left\{1.366\sin\left[\frac{2\pi(\alpha-15^\circ)}{180}\right]^{0.5} - 0.170 \right\}(1-\beta^2)^2 + \frac{f(1-\beta^4)}{8\sin(\alpha/2)} \]

For 60 to 180 degrees, beta < 0.5:

\[K_1 = \left[1.205 - 3.28(0.0625-\beta^4)-12.8\beta^6\sqrt{\frac {\alpha-60^\circ}{120^\circ}}\right](1-\beta^2)^2 \]

For 60 to 180 degrees, beta >= 0.5:

\[K_1 = \left[1.205 - 0.20\sqrt{\frac{\alpha-60^\circ}{120^\circ}} \right](1-\beta^2)^2 \]

The Swamee [5] formula is:

\[K = \left\{\frac{0.25}{\theta^3}\left[1 + \frac{0.6}{r^{1.67}} \left(\frac{\pi-\theta}{\theta} \right) \right]^{0.533r - 2.6} \right\}^{-0.5} \]

The Hooper [6] formulas are:

If \({Re}_1 \le 4000\):

\[K_{sharp} = 2 \left[1 - \left( \frac{D_1}{D_2} \right)^4 \right] \]

else:

\[K_{sharp} = \left[1 + 0.8 f_{d,1}\right] \left\{ \left[1 - \left( \frac{D_1}{D_2}\right)^2 \right]^2 \right\} \]

If the angle > 45 degrees, \(K = K_{sharp}\) otherwise

\[K = 2.6 \sin \left(\frac{\theta}{2} \right)K_{sharp} \]
diffuser conical; after [R141e86686f6a-1]_
Parameters
Di1float

Inside diameter of original pipe (smaller), [m]

Di2float

Inside diameter of following pipe (larger), [m]

lfloat, optional

Length of the contraction along the pipe axis, optional, [m]

anglefloat, optional

Angle of contraction, [degrees]

fdfloat, optional

Darcy friction factor [-]

Refloat, optional

Reynolds number of the pipe (used in Rennels method only if no friction factor given), [m]

roughnessfloat, optional

Roughness of bend wall (used in Rennel method if no friction factor given), [m]

methodstr

The method to use for the calculation; one of ‘Rennels’, ‘Crane’, ‘Miller’, ‘Swamee’, ‘Idelchik’, or ‘Hooper’ [-]

Returns
Kfloat

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.

(Source code, png, hires.png, pdf)

_images/diffuser_conical_plot.png

References

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 Friction (Spravochnik Po Gidravlicheskim Soprotivleniyam, Koeffitsienty Mestnykh Soprotivlenii i Soprotivleniya 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.

6

Hooper, William B. “Calculate Head Loss Caused by Change in Pipe Size.” Chemical Engineering 95, no. 16 (November 7, 1988): 89.

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')[source]

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
Di1float

Inside diameter of original pipe (smaller), [m]

Di2float

Inside diameter of following pipe (larger), [m]

DEsarray

Diameters of intermediate sections, [m]

lsarray

Lengths of the various sections, size 1 more than DEs, [m]

fdfloat

Darcy friction factor [-]

methodstr

The method to use for the calculation; one of ‘Rennels’, ‘Crane’, ‘Miller’, ‘Swamee’, or ‘Idelchik’ [-]

Returns
Kfloat

Loss coefficient with respect to smaller, upstream diameter [-]

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

Rennels, Donald C., and Hobart M. Hudson. Pipe Flow: A Practical and Comprehensive Guide. 1st edition. Hoboken, N.J: Wiley, 2012.

Examples

>>> diffuser_conical_staged(Di1=1., Di2=10., DEs=[2,3,4], ls=[1.1,1.2,1.3,1.4], fd=0.01)
1.9317533188274658
fluids.fittings.diffuser_curved(Di1, Di2, l)[source]

Returns loss coefficient for any curved wall pipe expansion as shown in [1].

\[K_1 = \phi(1.43-1.3\beta^2)(1-\beta^2)^2 \]
\[\phi = 1.01 - 0.624\frac{l}{d_1} + 0.30\left(\frac{l}{d_1}\right)^2 - 0.074\left(\frac{l}{d_1}\right)^3 + 0.0070\left(\frac{l}{d_1}\right)^4 \]
diffuser curved; after [R085b18363778-1]_
Parameters
Di1float

Inside diameter of original pipe (smaller), [m]

Di2float

Inside diameter of following pipe (larger), [m]

lfloat

Length of the curve along the pipe axis, [m]

Returns
Kfloat

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.

References

1

Rennels, Donald C., and Hobart M. Hudson. Pipe Flow: A Practical and Comprehensive Guide. 1st edition. Hoboken, N.J: Wiley, 2012.

Examples

>>> diffuser_curved(Di1=.25**0.5, Di2=1., l=2.)
0.2299781250000002
fluids.fittings.diffuser_pipe_reducer(Di1, Di2, l, fd1, fd2=None)[source]

Returns loss coefficient for any pipe reducer pipe expansion as shown in [1]. This is an approximate formula.

\[K_f = f_1\frac{0.20l}{d_1} + \frac{f_1(1-\beta)}{8\sin(\alpha/2)} + f_2\frac{0.20l}{d_2}\beta^4 \]
\[\alpha = 2\tan^{-1}\left(\frac{d_1-d_2}{1.20l}\right) \]
Parameters
Di1float

Inside diameter of original pipe (smaller), [m]

Di2float

Inside diameter of following pipe (larger), [m]

lfloat

Length of the pipe reducer along the pipe axis, [m]

fd1float

Darcy friction factor at inlet diameter [-]

fd2float

Darcy friction factor at outlet diameter, optional [-]

Returns
Kfloat

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

Rennels, Donald C., and Hobart M. Hudson. Pipe Flow: A Practical and Comprehensive Guide. 1st edition. Hoboken, N.J: Wiley, 2012.

Examples

>>> diffuser_pipe_reducer(Di1=.5, Di2=.75, l=1.5, fd1=0.07)
0.06873244301714816

Tees

fluids.fittings.K_branch_converging_Crane(D_run, D_branch, Q_run, Q_branch, angle=90.0)[source]

Returns the loss coefficient for the branch of a converging tee or wye according to the Crane method [1].

\[K_{branch} = C\left[1 + D\left(\frac{Q_{branch}}{Q_{comb}\cdot \beta_{branch}^2}\right)^2 - E\left(1 - \frac{Q_{branch}}{Q_{comb}} \right)^2 - \frac{F}{\beta_{branch}^2} \left(\frac{Q_{branch}} {Q_{comb}}\right)^2\right] \]
\[\beta_{branch} = \frac{D_{branch}}{D_{comb}} = \frac{D_{branch}}{D_{run}} \]

In the above equation, D = 1, E = 2. See the notes for definitions of F and C. The run and combined diameter are assumed the same in this model.

Parameters
D_runfloat

Diameter of the straight-through inlet portion of the tee or wye [m]

D_branchfloat

Diameter of the pipe attached at an angle to the straight-through, [m]

Q_runfloat

Volumetric flow rate in the straight-through inlet of the tee or wye, [m^3/s]

Q_branchfloat

Volumetric flow rate in the pipe attached at an angle to the straight- through, [m^3/s]

anglefloat, optional

Angle the branch makes with the straight-through (tee=90, wye<90) [degrees]

Returns
Kfloat

Loss coefficient of branch 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 90 degrees.

Angle [°]

30

1.74

45

1.41

60

1

90

0

If \(\beta_{branch}^2 \le 0.35\), C = 1

If \(\beta_{branch}^2 > 0.35\) and \(Q_{branch}/Q_{comb} > 0.4\), C = 0.55.

If neither of the above conditions are met:

\[C = 0.9\left(1 - \frac{Q_{branch}}{Q_{comb}}\right) \]

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(1,2,3)

Crane Co. Flow of Fluids Through Valves, Fittings, and Pipe. Crane, 2009.

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.0404410851362
fluids.fittings.K_run_converging_Crane(D_run, D_branch, Q_run, Q_branch, angle=90)[source]

Returns the loss coefficient for the run of a converging tee or wye according to the Crane method [1].

\[K_{branch} = C\left[1 + D\left(\frac{Q_{branch}}{Q_{comb}\cdot \beta_{branch}^2}\right)^2 - E\left(1 - \frac{Q_{branch}}{Q_{comb}} \right)^2 - \frac{F}{\beta_{branch}^2} \left(\frac{Q_{branch}} {Q_{comb}}\right)^2\right] \]
\[\beta_{branch} = \frac{D_{branch}}{D_{comb}} = \frac{D_{branch}}{D_{run}} \]

In the above equation, C=1, D=0, E=1. See the notes for definitions of F and also the special case of 90°. The run and combined diameter are assumed the same in this model.

Parameters
D_runfloat

Diameter of the straight-through inlet portion of the tee or wye [m]

D_branchfloat

Diameter of the pipe attached at an angle to the straight-through, [m]

Q_runfloat

Volumetric flow rate in the straight-through inlet of the tee or wye, [m^3/s]

Q_branchfloat

Volumetric flow rate in the pipe attached at an angle to the straight- through, [m^3/s]

anglefloat, optional

Angle the branch makes with the straight-through (tee=90, wye<90) [degrees]

Returns
Kfloat

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

Angle [°]

30

1.74

45

1.41

60

1

For the special case of 90°, the formula used is as follows.

\[K_{run} = 1.55\left(\frac{Q_{branch}}{Q_{comb}} \right) - \left(\frac{Q_{branch}}{Q_{comb}}\right)^2 \]

References

1(1,2)

Crane Co. Flow of Fluids Through Valves, Fittings, and Pipe. Crane, 2009.

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

Returns the loss coefficient for the branch of a diverging tee or wye according to the Crane method [1].

\[K_{branch} = G\left[1 + H\left(\frac{Q_{branch}}{Q_{comb} \beta_{branch}^2}\right)^2 - J\left(\frac{Q_{branch}}{Q_{comb} \beta_{branch}^2}\right)\cos\theta\right] \]
\[\beta_{branch} = \frac{D_{branch}}{D_{comb}} = \frac{D_{branch}}{D_{run}} \]

See the notes for definitions of H, J, and G. The run and combined diameter are assumed the same in this model.

Parameters
D_runfloat

Diameter of the straight-through inlet portion of the tee or wye [m]

D_branchfloat

Diameter of the pipe attached at an angle to the straight-through, [m]

Q_runfloat

Volumetric flow rate in the straight-through outlet of the tee or wye, [m^3/s]

Q_branchfloat

Volumetric flow rate in the pipe attached at an angle to the straight- through, [m^3/s]

anglefloat, optional

Angle the branch makes with the straight-through (tee=90, wye<90) [degrees]

Returns
Kfloat

Loss coefficient of branch with respect to the velocity and inside diameter of the combined flow inlet [-]

Notes

If \(\beta_{branch} = 1, \theta = 90^\circ\), 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(1,2,3)

Crane Co. Flow of Fluids Through Valves, Fittings, and Pipe. Crane, 2009.

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

Returns the loss coefficient for the run of a converging tee or wye according to the Crane method [1].

\[K_{run} = M \left(\frac{Q_{branch}}{Q_{comb}}\right)^2 \]
\[\beta_{branch} = \frac{D_{branch}}{D_{comb}} = \frac{D_{branch}}{D_{run}} \]

See the notes for the definition of M. The run and combined diameter are assumed the same in this model.

Parameters
D_runfloat

Diameter of the straight-through inlet portion of the tee or wye [m]

D_branchfloat

Diameter of the pipe attached at an angle to the straight-through, [m]

Q_runfloat

Volumetric flow rate in the straight-through outlet of the tee or wye, [m^3/s]

Q_branchfloat

Volumetric flow rate in the pipe attached at an angle to the straight- through, [m^3/s]

anglefloat, optional

Angle the branch makes with the straight-through (tee=90, wye<90) [degrees]

Returns
Kfloat

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(1,2)

Crane Co. Flow of Fluids Through Valves, Fittings, and Pipe. Crane, 2009.

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

Valves

fluids.fittings.K_gate_valve_Crane(D1, D2, angle, fd=None)[source]

Returns loss coefficient for a gate valve of types wedge disc, double disc, or plug type, as shown in [1].

If β = 1 and θ = 0:

\[K = K_1 = K_2 = 8f_d \]

If β < 1 and θ <= 45°:

\[K_2 = \frac{K + \sin \frac{\theta}{2} \left[0.8(1-\beta^2) + 2.6(1-\beta^2)^2\right]}{\beta^4} \]

If β < 1 and θ > 45°:

\[K_2 = \frac{K + 0.5\sqrt{\sin\frac{\theta}{2}}(1-\beta^2) + (1-\beta^2)^2}{\beta^4} \]
Parameters
D1float

Diameter of the valve seat bore (must be smaller or equal to D2), [m]

D2float

Diameter of the pipe attached to the valve, [m]

anglefloat

Angle formed by the reducer in the valve, [degrees]

fdfloat, optional

Darcy friction factor calculated for the actual pipe flow in clean steel (roughness = 0.0018 inch) in the fully developed turbulent region; do not specify this to use the original Crane friction factor! [-]

Returns
Kfloat

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

References

1(1,2)

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.

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

Returns the loss coefficient for all types of angle valve, (reduced seat or throttled) as shown in [1].

If β = 1:

\[K = K_1 = K_2 = N\cdot f_d \]

Otherwise:

\[K_2 = \frac{K + \left[0.5(1-\beta^2) + (1-\beta^2)^2\right]}{\beta^4} \]

For style 0 and 2, N = 55; for style 1, N=150.

Parameters
D1float

Diameter of the valve seat bore (must be smaller or equal to D2), [m]

D2float

Diameter of the pipe attached to the valve, [m]

fdfloat, optional

Darcy friction factor calculated for the actual pipe flow in clean steel (roughness = 0.0018 inch) in the fully developed turbulent region; do not specify this to use the original Crane friction factor!, [-]

styleint, optional

One of 0, 1, or 2; refers to three different types of angle valves as shown in [1] [-]

Returns
Kfloat

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(1,2)

Crane Co. Flow of Fluids Through Valves, Fittings, and Pipe. Crane, 2009.

Examples

>>> K_angle_valve_Crane(.01, .02)
26.597361811128465
fluids.fittings.K_globe_valve_Crane(D1, D2, fd=None)[source]

Returns the loss coefficient for all types of globe valve, (reduced seat or throttled) as shown in [1].

If β = 1:

\[K = K_1 = K_2 = 340 f_d \]

Otherwise:

\[K_2 = \frac{K + \left[0.5(1-\beta^2) + (1-\beta^2)^2\right]}{\beta^4} \]
Parameters
D1float

Diameter of the valve seat bore (must be smaller or equal to D2), [m]

D2float

Diameter of the pipe attached to the valve, [m]

fdfloat, optional

Darcy friction factor calculated for the actual pipe flow in clean steel (roughness = 0.0018 inch) in the fully developed turbulent region; do not specify this to use the original Crane friction factor!, [-]

Returns
Kfloat

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

Crane Co. Flow of Fluids Through Valves, Fittings, and Pipe. Crane, 2009.

Examples

>>> K_globe_valve_Crane(.01, .02)
135.9200548324305
fluids.fittings.K_swing_check_valve_Crane(D=None, fd=None, angled=True)[source]

Returns the loss coefficient for a swing check valve as shown in [1].

\[K_2 = N\cdot f_d \]

For angled swing check valves N = 100; for straight valves, N = 50.

Parameters
Dfloat, optional

Diameter of the pipe attached to the valve, [m]

fdfloat, optional

Darcy friction factor calculated for the actual pipe flow in clean steel (roughness = 0.0018 inch) in the fully developed turbulent region; do not specify this to use the original Crane friction factor!, [-]

angledbool, optional

If True, returns a value 2x the unangled value; the style of the valve [-]

Returns
Kfloat

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

Crane Co. Flow of Fluids Through Valves, Fittings, and Pipe. Crane, 2009.

Examples

>>> K_swing_check_valve_Crane(D=.02)
2.3974274785373257
fluids.fittings.K_lift_check_valve_Crane(D1, D2, fd=None, angled=True)[source]

Returns the loss coefficient for a lift check valve as shown in [1].

If β = 1:

\[K = K_1 = K_2 = N\cdot f_d \]

Otherwise:

\[K_2 = \frac{K + \left[0.5(1-\beta^2) + (1-\beta^2)^2\right]}{\beta^4} \]

For angled lift check valves N = 55; for straight valves, N = 600.

Parameters
D1float

Diameter of the valve seat bore (must be smaller or equal to D2), [m]

D2float

Diameter of the pipe attached to the valve, [m]

fdfloat, optional

Darcy friction factor calculated for the actual pipe flow in clean steel (roughness = 0.0018 inch) in the fully developed turbulent region; do not specify this to use the original Crane friction factor!, [-]

angledbool, optional

If True, returns a value 2x the unangled value; the style of the valve [-]

Returns
Kfloat

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

Crane Co. Flow of Fluids Through Valves, Fittings, and Pipe. Crane, 2009.

Examples

>>> K_lift_check_valve_Crane(.01, .02)
28.597361811128465
fluids.fittings.K_tilting_disk_check_valve_Crane(D, angle, fd=None)[source]

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.

\[K = N\cdot f_d \]

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
Dfloat

Diameter of the pipe section the valve in mounted in; the same as the line size [m]

anglefloat

Angle of the tilting disk to the flow direction; nominally 5 or 15 degrees [degrees]

fdfloat, optional

Darcy friction factor calculated for the actual pipe flow in clean steel (roughness = 0.0018 inch) in the fully developed turbulent region; do not specify this to use the original Crane friction factor!, [-]

Returns
Kfloat

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(1,2)

Crane Co. Flow of Fluids Through Valves, Fittings, and Pipe. Crane, 2009.

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

Returns the loss coefficient for a globe stop check valve as shown in [1].

If β = 1:

\[K = K_1 = K_2 = N\cdot f_d \]

Otherwise:

\[K_2 = \frac{K + \left[0.5(1-\beta^2) + (1-\beta^2)^2\right]}{\beta^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
D1float

Diameter of the valve seat bore (must be smaller or equal to D2), [m]

D2float

Diameter of the pipe attached to the valve, [m]

fdfloat, optional

Darcy friction factor calculated for the actual pipe flow in clean steel (roughness = 0.0018 inch) in the fully developed turbulent region; do not specify this to use the original Crane friction factor!, [-]

styleint, optional

One of 0, 1, or 2; refers to three different types of angle valves as shown in [1] [-]

Returns
Kfloat

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(1,2)

Crane Co. Flow of Fluids Through Valves, Fittings, and Pipe. Crane, 2009.

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

Returns the loss coefficient for a angle stop check valve as shown in [1].

If β = 1:

\[K = K_1 = K_2 = N\cdot f_d \]

Otherwise:

\[K_2 = \frac{K + \left[0.5(1-\beta^2) + (1-\beta^2)^2\right]}{\beta^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
D1float

Diameter of the valve seat bore (must be smaller or equal to D2), [m]

D2float

Diameter of the pipe attached to the valve, [m]

fdfloat, optional

Darcy friction factor calculated for the actual pipe flow in clean steel (roughness = 0.0018 inch) in the fully developed turbulent region; do not specify this to use the original Crane friction factor!, [-]

styleint, optional

One of 0, 1, or 2; refers to three different types of angle valves as shown in [1] [-]

Returns
Kfloat

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(1,2)

Crane Co. Flow of Fluids Through Valves, Fittings, and Pipe. Crane, 2009.

Examples

>>> K_angle_stop_check_valve_Crane(.1, .02, style=1)
4.525425593879809
fluids.fittings.K_ball_valve_Crane(D1, D2, angle, fd=None)[source]

Returns the loss coefficient for a ball valve as shown in [1].

If β = 1:

\[K = K_1 = K_2 = 3f_d \]

If β < 1 and θ <= 45°:

\[K_2 = \frac{K + \sin \frac{\theta}{2} \left[0.8(1-\beta^2) + 2.6(1-\beta^2)^2\right]} {\beta^4} \]

If β < 1 and θ > 45°:

\[K_2 = \frac{K + 0.5\sqrt{\sin\frac{\theta}{2}}(1-\beta^2) + (1-\beta^2)^2}{\beta^4} \]
Parameters
D1float

Diameter of the valve seat bore (must be equal to or smaller than D2), [m]

D2float

Diameter of the pipe attached to the valve, [m]

anglefloat

Angle formed by the reducer in the valve, [degrees]

fdfloat, optional

Darcy friction factor calculated for the actual pipe flow in clean steel (roughness = 0.0018 inch) in the fully developed turbulent region; do not specify this to use the original Crane friction factor!, [-]

Returns
Kfloat

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

Crane Co. Flow of Fluids Through Valves, Fittings, and Pipe. Crane, 2009.

Examples

>>> K_ball_valve_Crane(.01, .02, 50)
14.051310974926592
fluids.fittings.K_diaphragm_valve_Crane(D=None, fd=None, style=0)[source]

Returns the loss coefficient for a diaphragm valve of either weir (style = 0) or straight-through (style = 1) as shown in [1].

\[K = K_1 = K_2 = N\cdot f_d \]

For style 0 (weir), N = 149; for style 1 (straight through), N = 39.

Parameters
Dfloat, optional

Diameter of the pipe section the valve in mounted in; the same as the line size [m]

fdfloat, optional

Darcy friction factor calculated for the actual pipe flow in clean steel (roughness = 0.0018 inch) in the fully developed turbulent region; do not specify this to use the original Crane friction factor!, [-]

styleint, optional

Either 0 (weir type valve) or 1 (straight through weir valve) [-]

Returns
Kfloat

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

Crane Co. Flow of Fluids Through Valves, Fittings, and Pipe. Crane, 2009.

Examples

>>> K_diaphragm_valve_Crane(D=.1, style=0)
2.4269804835982565
fluids.fittings.K_foot_valve_Crane(D=None, fd=None, style=0)[source]

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.

\[K = K_1 = K_2 = N\cdot f_d \]

For style 0 (poppet disk), N = 420; for style 1 (hinged disk), N = 75.

Parameters
Dfloat, optional

Diameter of the pipe section the valve in mounted in; the same as the line size [m]

fdfloat, optional

Darcy friction factor calculated for the actual pipe flow in clean steel (roughness = 0.0018 inch) in the fully developed turbulent region; do not specify this to use the original Crane friction factor!, [-]

styleint, optional

Either 0 (poppet disk foot valve) or 1 (hinged disk foot valve) [-]

Returns
Kfloat

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

Crane Co. Flow of Fluids Through Valves, Fittings, and Pipe. Crane, 2009.

Examples

>>> K_foot_valve_Crane(D=0.2, style=0)
5.912221498436275
fluids.fittings.K_butterfly_valve_Crane(D, fd=None, style=0)[source]

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

\[K = N\cdot f_d \]

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

Parameters
Dfloat

Diameter of the pipe section the valve in mounted in; the same as the line size [m]

fdfloat, optional

Darcy friction factor calculated for the actual pipe flow in clean steel (roughness = 0.0018 inch) in the fully developed turbulent region; do not specify this to use the original Crane friction factor!, [-]

styleint, optional

Either 0 (centric), 1 (double offset), or 2 (triple offset) [-]

Returns
Kfloat

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

Crane Co. Flow of Fluids Through Valves, Fittings, and Pipe. Crane, 2009.

Examples

>>> K_butterfly_valve_Crane(D=.1, style=2)
3.5508841974793284
fluids.fittings.K_plug_valve_Crane(D1, D2, angle, fd=None, style=0)[source]

Returns the loss coefficient for a plug valve or cock valve as shown in [1].

If β = 1:

\[K = K_1 = K_2 = Nf_d \]

Otherwise:

\[K_2 = \frac{K + 0.5\sqrt{\sin\frac{\theta}{2}}(1-\beta^2) + (1-\beta^2)^2}{\beta^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
D1float

Diameter of the valve plug bore (must be equal to or smaller than D2), [m]

D2float

Diameter of the pipe attached to the valve, [m]

anglefloat

Angle formed by the reducer in the valve, [degrees]

fdfloat, optional

Darcy friction factor calculated for the actual pipe flow in clean steel (roughness = 0.0018 inch) in the fully developed turbulent region; do not specify this to use the original Crane friction factor!, [-]

styleint, optional

Either 0 (straight-through), 1 (3-way, flow straight-through), or 2 (3-way, flow 90°) [-]

Returns
Kfloat

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

Crane Co. Flow of Fluids Through Valves, Fittings, and Pipe. Crane, 2009.

Examples

>>> K_plug_valve_Crane(D1=.01, D2=.02, angle=50)
19.80513692341617

Hooper 2K fittings

fluids.fittings.Hooper2K(Di, Re, name=None, K1=None, Kinfty=None)[source]

Returns loss coefficient for any various fittings, depending on the name input. Alternatively, the Hooper constants 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.

\[K = \frac{K_1}{Re} + K_\infty\left(1 + \frac{1\text{ inch}}{D_{in}}\right) \]

Note this model uses actual inside pipe diameter in inches.

Parameters
Difloat

Actual inside diameter of the pipe, [in]

Refloat

Reynolds number, [-]

namestr, optional

String from Hooper dict representing a fitting

K1float, optional

K1 parameter of Hooper model, optional [-]

Kinftyfloat, optional

Kinfty parameter of Hooper model, optional [-]

Returns
Kfloat

Loss coefficient [-]

Notes

Also described in Ludwig’s Applied Process Design. Relatively uncommon to see it used. No actual example found.

References

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. Amsterdam ; Boston: Gulf Professional Publishing, 2007.

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.Hooper = {'Elbow, 180°, Long-radius (R/D = 1.5), All types': (1000.0, 0.3), 'Elbow, 180°, Standard (R/D = 1), Flanged/welded': (1000.0, 0.35), 'Elbow, 45°, Long-radius (R/D 1.5), All types': (500.0, 0.15), 'Elbow, 45°, Mitered (R/D=1.5), 1 weld (45° angle)': (500.0, 0.25), 'Elbow, 45°, Mitered (R/D=1.5), 2 weld (22.5° angle)': (500.0, 0.15), 'Elbow, 45°, Standard (R/D = 1), All types': (500.0, 0.2), 'Elbow, 45°, Standard (R/D = 1), Screwed': (1000.0, 0.7), 'Elbow, 90°, Long-radius (R/D = 1.5), All types': (800.0, 0.2), 'Elbow, 90°, Mitered (R/D = 1.5), 1 weld (90° angle)': (1000.0, 1.15), 'Elbow, 90°, Mitered (R/D = 1.5), 2 weld (45° angle)': (800.0, 0.35), 'Elbow, 90°, Mitered (R/D = 1.5), 3 weld (30° angle)': (800.0, 0.3), 'Elbow, 90°, Mitered (R/D = 1.5), 4 weld (22.5° angle)': (800.0, 0.27), 'Elbow, 90°, Mitered (R/D = 1.5), 5 weld (18° angle)': (800.0, 0.25), 'Elbow, 90°, Standard (R/D = 1), Flanged/welded': (800.0, 0.25), 'Elbow, 90°, Standard (R/D = 1), Screwed': (800.0, 0.4), 'Elbow, Elbow, Long-radius, Screwed': (800.0, 0.4), 'Elbow, Elbow, Standard, Flanged/welded': (800.0, 0.8), 'Elbow, Elbow, Stub-in type branch': (1000.0, 1.0), 'Elbow, Used as, Standard, Screwed': (500.0, 0.7), 'Tee, Run, Screwed': (200.0, 0.1), 'Tee, Tee, Stub-in type branch': (100.0, 0.0), 'Tee, Through, Flanged or welded': (150.0, 0.05), 'Valve, Ball, Reduced trim, Beta = 0.9': (500.0, 0.15), 'Valve, Butterfly,': (800.0, 0.25), 'Valve, Check, Lift': (2000.0, 10.0), 'Valve, Check, Swing': (1500.0, 1.5), 'Valve, Check, Tilting-disc': (1000.0, 0.5), 'Valve, Diaphragm, Dam type': (1000.0, 2.0), 'Valve, Gate, Full line size, Beta = 1': (300.0, 0.1), 'Valve, Globe, Angle or Y-type': (1000.0, 2.0), 'Valve, Globe, Standard': (1500.0, 4.0), 'Valve, Plug, Reduced trim, Beta = 0.8': (1000.0, 0.25)}

Dictionary of coefficients for Hooper’s 2K fitting pressure drop method; the tuple contains \(K_1\) and \(K_\infty\) in that order.

Darby 3K fittings

fluids.fittings.Darby3K(NPS=None, Re=None, name=None, K1=None, Ki=None, Kd=None)[source]

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.

\[K_f = \frac{K_1}{Re} + K_i\left(1 + \frac{K_d}{D_{\text{NPS}}^{0.3}} \right) \]

Note this model uses nominal pipe diameter in inches.

Parameters
NPSfloat

Nominal diameter of the pipe, [in]

Refloat

Reynolds number, [-]

namestr

String from Darby dict representing a fitting

K1float

K1 parameter of Darby model, optional [-]

Kifloat

Ki parameter of Darby model, optional [-]

Kdfloat

Kd parameter of Darby model, optional [in]

Returns
Kfloat

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

Silverberg, Peter, and Ron Darby. “Correlate Pressure Drops through Fittings: Three Constants Accurately 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.

Examples

>>> Darby3K(NPS=2., Re=10000., name='Valve, Angle valve, 45°, full line size, β = 1')
1.1572523963562356
>>> Darby3K(NPS=12., Re=10000., K1=950,  Ki=0.25,  Kd=4)
0.819510280626355
fluids.fittings.Darby = {'Elbow, 180°, all, (r/D = 1.5)': (1000.0, 0.1, 4.0), 'Elbow, 180°, flanged, (r/D = 1)': (1000.0, 0.12, 4.0), 'Elbow, 180°, threaded, close-return bend, (r/D = 1)': (1000.0, 0.23, 4.0), 'Elbow, 45°, long radius, (r/D = 1.5)': (500.0, 0.052, 4.0), 'Elbow, 45°, mitered, 1 weld, (45°)': (500.0, 0.086, 4.0), 'Elbow, 45°, mitered, 2 welds, (22.5°)': (500.0, 0.052, 4.0), 'Elbow, 45°, threaded standard, (r/D = 1)': (500.0, 0.071, 4.2), 'Elbow, 90°, (r/D = 2)': (800.0, 0.056, 3.9), 'Elbow, 90°, (r/D = 4)': (800.0, 0.066, 3.9), 'Elbow, 90°, (r/D = 6)': (800.0, 0.075, 4.2), 'Elbow, 90°, 2 welds, (45°)': (800.0, 0.068, 4.1), 'Elbow, 90°, 3 welds, (30°)': (800.0, 0.035, 4.2), 'Elbow, 90°, flanged, welded, bends, (r/D = 1)': (800.0, 0.091, 4.0), 'Elbow, 90°, mitered, 1 weld, (90°)': (1000.0, 0.27, 4.0), 'Elbow, 90°, threaded, long radius, (r/D = 1.5)': (800.0, 0.071, 4.2), 'Elbow, 90°, threaded, standard, (r/D = 1)': (800.0, 0.14, 4.0), 'Tee, Run-through, flanged, (r/D = 1)': (150.0, 0.05, 4.0), 'Tee, Run-through, stub-in branch': (100.0, 0.0, 0.0), 'Tee, Run-through, threaded, (r/D = 1)': (200.0, 0.091, 4.0), 'Tee, Through-branch, (as elbow), flanged, (r/D = 1)': (800.0, 0.28, 4.0), 'Tee, Through-branch, (as elbow), stub-in branch': (1000.0, 0.34, 4.0), 'Tee, Through-branch, (as elbow), threaded, (r/D = 1)': (500.0, 0.274, 4.0), 'Tee, Through-branch,(as elbow), (r/D = 1.5)': (800.0, 0.14, 4.0), 'Valve, Angle valve, 45°, full line size, β = 1': (950.0, 0.25, 4.0), 'Valve, Angle valve, 90°, full line size, β = 1': (1000.0, 0.69, 4.0), 'Valve, Ball valve, standard, β = 1': (300.0, 0.017, 3.5), 'Valve, Diaphragm, dam type': (1000.0, 0.69, 4.9), 'Valve, Gate valve, standard, β = 1': (300.0, 0.037, 3.9), 'Valve, Globe valve, standard, β = 1': (1500.0, 1.7, 3.6), 'Valve, Lift check': (2000.0, 2.85, 3.8), 'Valve, Plug valve, branch flow': (500.0, 0.41, 4.0), 'Valve, Plug valve, straight through': (300.0, 0.084, 3.9), 'Valve, Plug valve, three-way (flow through)': (300.0, 0.14, 4.0), 'Valve, Swing check': (1500.0, 0.46, 4.0)}

Dictionary of coefficients for Darby’s 3K fitting pressure drop method; the tuple contains \(K_1\) and \(K_i\) and \(K_d\) in that order.

Loss Coefficient Converters

fluids.fittings.Cv_to_K(Cv, D)[source]

Convert imperial valve flow coefficient from imperial units to regular loss coefficients.

\[K = 1.6\times 10^9 \frac{D^4}{\left(\frac{C_v}{1.56}\right)^2} \]
Parameters
Cvfloat

Imperial Cv valve flow coefficient (flow rate of water at a pressure drop of 1 psi) [gallons/minute]

Dfloat

Inside diameter of the valve [m]

Returns
Kfloat

Loss coefficient, [-]

Notes

The exact conversion coefficient between Kv to Cv is 1.1560992283536566; it is rounded in the formula above.

References

1

ISA-75.01.01-2007 (60534-2-1 Mod) Draft

Examples

>>> Cv_to_K(2.712, .015)
14.719595348352
fluids.fittings.Kv_to_K(Kv, D)[source]

Convert valve flow coefficient from common metric units to regular loss coefficients.

\[K = 1.6\times 10^9 \frac{D^4}{K_v^2} \]
Parameters
Kvfloat

Metric Kv valve flow coefficient (flow rate of water at a pressure drop of 1 bar) [m^3/hr]

Dfloat

Inside diameter of the valve [m]

Returns
Kfloat

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.

\[\Delta P = 1 \text{ bar} = \frac{1}{2}\rho V^2\cdot K V = \frac{\frac{K_v\cdot \text{ hour}}{3600 \text{ second}}}{\frac{\pi}{4}D^2} \rho = 999.29744568 \;\; kg/m^3 \text{ at } T=60° F, P = 703572 Pa\]

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

ISA-75.01.01-2007 (60534-2-1 Mod) Draft

Examples

>>> Kv_to_K(2.312, .015)
15.153374600399898
fluids.fittings.K_to_Cv(K, D)[source]

Convert regular loss coefficient to imperial valve flow coefficient.

\[K_v = 1.156 \cdot 4\times 10^4 \sqrt{ \frac{D^4}{K}} \]
Parameters
Kfloat

Loss coefficient, [-]

Dfloat

Inside diameter of the valve [m]

Returns
Cvfloat

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

ISA-75.01.01-2007 (60534-2-1 Mod) Draft

Examples

>>> K_to_Cv(16, .015)
2.601223263795727
fluids.fittings.K_to_Kv(K, D)[source]

Convert regular loss coefficient to valve flow coefficient.

\[K_v = 4\times 10^4 \sqrt{ \frac{D^4}{K}} \]
Parameters
Kfloat

Loss coefficient, [-]

Dfloat

Inside diameter of the valve [m]

Returns
Kvfloat

Metric Kv valve flow coefficient (flow rate of water at a pressure drop of 1 bar) [m^3/hr]

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.

\[\Delta P = 1 \text{ bar} = \frac{1}{2}\rho V^2\cdot K V = \frac{\frac{K_v\cdot \text{ hour}}{3600 \text{ second}}}{\frac{\pi}{4}D^2} \rho = 999.29744568 \;\; kg/m^3 \text{ at } T=60° F, P = 703572 Pa\]

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

ISA-75.01.01-2007 (60534-2-1 Mod) Draft

Examples

>>> K_to_Kv(15.15337460039990, .015)
2.312
fluids.fittings.Cv_to_Kv(Cv)[source]

Convert valve flow coefficient from imperial to common metric units.

\[K_v = C_v/1.156 \]
Parameters
Cvfloat

Imperial Cv valve flow coefficient (flow rate of water at a pressure drop of 1 psi) [gallons/minute]

Returns
Kvfloat

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

ISA-75.01.01-2007 (60534-2-1 Mod) Draft

Examples

>>> Cv_to_Kv(2.312)
1.9998283393826013
fluids.fittings.Kv_to_Cv(Kv)[source]

Convert valve flow coefficient from imperial to common metric units.

\[C_v = 1.156 K_v \]
Parameters
Kvfloat

Metric Kv valve flow coefficient (flow rate of water at a pressure drop of 1 bar) [m^3/hr]

Returns
Cvfloat

Imperial Cv valve flow coefficient (flow rate of water at a pressure drop of 1 psi) [gallons/minute]

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

ISA-75.01.01-2007 (60534-2-1 Mod) Draft

Examples

>>> Kv_to_Cv(2)
2.3121984567073133

Miscellaneous

fluids.fittings.v_lift_valve_Crane(rho, D1=None, D2=None, style='swing check angled')[source]

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

\[v_{min} = N\cdot \text{m/s} \cdot \sqrt{\frac{\text{kg/m}^3}{\rho}} \]
\[v_{min} = N\beta^2 \cdot \text{m/s} \cdot \sqrt{\frac{\text{kg/m}^3}{\rho}} \]

See the notes for the definition of values of N and which check valves use which formulas.

Parameters
rhofloat

Density of the fluid [kg/m^3]

D1float, optional

Diameter of the valve bore (must be equal to or smaller than D2), [m]

D2float, optional

Diameter of the pipe attached to the valve, [m]

stylestr

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_minfloat

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

Crane Co. Flow of Fluids Through Valves, Fittings, and Pipe. Crane, 2009.

Examples

>>> v_lift_valve_Crane(rho=998.2, D1=0.0627, D2=0.0779, style='lift check straight')
1.0252301935349286

Sources

The main sources for these correlations are as follows [100] [101] [102] [103] [104]:

100

Crane Co. TP 410 Flow of Fluids Through Valves, Fittings, and Pipe. Crane, 2009.

101

Rennels, Donald C., and Hobart M. Hudson. Pipe Flow: A Practical and Comprehensive Guide. 1st edition. Hoboken, N.J: Wiley, 2012.

102

Miller, Donald S. Internal Flow Systems: Design and Performance Prediction. Gulf Publishing Company, 1990.

103

Idel’chik, I. E. Handbook of Hydraulic Resistance: Coefficients of Local Resistance and of Friction (Spravochnik Po Gidravlicheskim Soprotivleniyam, Koeffitsienty Mestnykh Soprotivlenii i Soprotivleniya Treniya). National technical information Service, 1966.

104

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