Skip to content

polykin.transport.flow¤

DP_Darcy_Weisbach ¤

DP_Darcy_Weisbach(
    v: float, D: float, L: float, rho: float, fD: float
) -> float

Calculate the pressure drop in a pipe using the Darcy-Weisbach equation.

For a fluid flowing through a circular pipe, the pressure drop is given by:

\[ \Delta P = f_D \frac{\rho}{2} \frac{v^2}{D} L \]

where \(f_D\) is the Darcy friction factor, \(v\) is the velocity, \(D\) is the pipe diameter, \(L\) is the pipe length, and \(\rho\) is the fluid density. This equation is valid for both laminar and turbulent flow. In laminar flow, \(f_D=64/Re\). For turbulent flow, \(f_D\) can be estimated using either Colebrook's or Haaland's equation.

PARAMETER DESCRIPTION
v

Velocity (m/s).

TYPE: float

D

Diameter (m).

TYPE: float

L

Length (m).

TYPE: float

rho

Density (kg/m³).

TYPE: float

fD

Darcy friction factor. Should not be confused with the Fanning friction factor.

TYPE: float

RETURNS DESCRIPTION
float

Pressure drop (Pa).

See also

Examples:

Calculate the pressure drop for water flowing at 2 m/s through 500 m of PVC pipe with an internal diameter of 25 mm.

>>> from polykin.transport.flow import DP_Darcy_Weisbach, fD_Haaland
>>> rho = 1e3 # kg/m³
>>> mu = 1e-3 # Pa·s
>>> L = 5e2   # m
>>> D = 25e-3 # m
>>> v = 2.    # m/s
>>> Re = rho*v*D/mu  # turbulent flow
>>> print(f"Re = {Re:.1e}")
Re = 5.0e+04
>>> er = 0.0015e-3/D # from pipe table
>>> fD = fD_Haaland(Re, er)
>>> DP = DP_Darcy_Weisbach(v, D, L, rho, fD)
>>> print(f"DP = {DP:.1e} Pa")
DP = 8.3e+05 Pa
Source code in src/polykin/transport/flow.py
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
def DP_Darcy_Weisbach(v: float,
                      D: float,
                      L: float,
                      rho: float,
                      fD: float,
                      ) -> float:
    r"""Calculate the pressure drop in a pipe using the Darcy-Weisbach
    equation.

    For a fluid flowing through a circular pipe, the pressure drop is given by:

    $$ \Delta P = f_D \frac{\rho}{2} \frac{v^2}{D} L $$

    where $f_D$ is the Darcy friction factor, $v$ is the velocity, $D$ is the
    pipe diameter, $L$ is the pipe length, and $\rho$ is the fluid density. 
    This equation is valid for both laminar and turbulent flow. In laminar
    flow, $f_D=64/Re$. For turbulent flow, $f_D$ can be estimated
    using either Colebrook's or Haaland's equation.

    Parameters
    ----------
    v : float
        Velocity (m/s).
    D : float
        Diameter (m).
    L : float
        Length (m).
    rho : float
        Density (kg/m³).
    fD : float
        Darcy friction factor. Should not be confused with the Fanning friction
        factor.

    Returns
    -------
    float
        Pressure drop (Pa).

    See also
    --------
    * [`fD_Colebrook`](fD_Colebrook.md): associated method to estimate the
      friction factor.
    * [`fD_Haaland`](fD_Haaland.md): associated method to estimate the
      friction factor.
    * [`DP_Hagen_Poiseuille`](DP_Hagen_Poiseuille.md): specific method for
      laminar flow.

    Examples
    --------
    Calculate the pressure drop for water flowing at 2 m/s through 500 m of PVC
    pipe with an internal diameter of 25 mm.
    >>> from polykin.transport.flow import DP_Darcy_Weisbach, fD_Haaland
    >>> rho = 1e3 # kg/m³
    >>> mu = 1e-3 # Pa·s
    >>> L = 5e2   # m
    >>> D = 25e-3 # m
    >>> v = 2.    # m/s
    >>> Re = rho*v*D/mu  # turbulent flow
    >>> print(f"Re = {Re:.1e}")
    Re = 5.0e+04
    >>> er = 0.0015e-3/D # from pipe table
    >>> fD = fD_Haaland(Re, er)
    >>> DP = DP_Darcy_Weisbach(v, D, L, rho, fD)
    >>> print(f"DP = {DP:.1e} Pa")
    DP = 8.3e+05 Pa
    """
    return fD * rho / 2 * v**2 / D * L