Skip to content

polykin.transport.flow¤

fD_Haaland ¤

fD_Haaland(Re: float, er: float) -> float

Calculate the Darcy friction factor using Haaland's equation.

For turbulent flow, i.e., \(Re \gtrsim 2300\), the friction factor is given by the following explicit expression:

\[ \frac{1}{\sqrt{f}}= -1.8 \log \left[\left(\frac{\epsilon/D}{3.7}\right)^{1.11} + \frac{6.9}{Re} \right] \]

This equation is as accurate as Colebrook's but has the advantage of being explicit.

References

  • Haaland, S. E. "Simple and Explicit Formulas for the Friction Factor in Turbulent Pipe Flow", ASME. J. Fluids Eng. March 1983; 105(1): 89-90.
PARAMETER DESCRIPTION
Re

Reynolds number.

TYPE: float

er

Relative pipe roughness, \(\epsilon/D\).

TYPE: float

RETURNS DESCRIPTION
float

Darcy friction factor.

See also

Examples:

Calculate the friction factor for water flowing at 2 m/s through a PVC pipe with an internal diameter of 25 mm.

>>> from polykin.transport.flow import fD_Haaland
>>> rho = 1e3 # kg/m³
>>> mu = 1e-3 # Pa·s
>>> D = 25e-3 # m
>>> v = 2.    # m/s
>>> Re = rho*v*D/mu
>>> er = 0.0015/25 # from pipe table
>>> fD = fD_Haaland(Re, er)
>>> print(f"fD = {fD:.3f}")
fD = 0.021
Source code in src/polykin/transport/flow.py
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
def fD_Haaland(Re: float, er: float) -> float:
    r"""Calculate the Darcy friction factor using Haaland's equation.

    For turbulent flow, i.e., $Re \gtrsim 2300$, the friction factor
    is given by the following explicit expression:

    $$ \frac{1}{\sqrt{f}}= -1.8 \log \left[\left(\frac{\epsilon/D}{3.7}\right)^{1.11} 
       + \frac{6.9}{Re} \right] $$

    This equation is as accurate as Colebrook's but has the advantage of
    being explicit.

    **References**

    * Haaland, S. E. "Simple and Explicit Formulas for the Friction Factor in
      Turbulent Pipe Flow", ASME. J. Fluids Eng. March 1983; 105(1): 89-90.

    Parameters
    ----------
    Re : float
        Reynolds number.
    er : float
        Relative pipe roughness, $\epsilon/D$.

    Returns
    -------
    float
        Darcy friction factor.

    See also
    --------
    * [`fD_Colebrook`](fD_Colebrook.md): alternative method.

    Examples
    --------
    Calculate the friction factor for water flowing at 2 m/s through a PVC pipe
    with an internal diameter of 25 mm.
    >>> from polykin.transport.flow import fD_Haaland
    >>> rho = 1e3 # kg/m³
    >>> mu = 1e-3 # Pa·s
    >>> D = 25e-3 # m
    >>> v = 2.    # m/s
    >>> Re = rho*v*D/mu
    >>> er = 0.0015/25 # from pipe table
    >>> fD = fD_Haaland(Re, er)
    >>> print(f"fD = {fD:.3f}")
    fD = 0.021
    """
    check_range_warn(Re, 2.3e3, inf, 'Re')

    return (1/(1.8*log10((er/3.7)**1.11 + 6.9/Re)))**2

Graphical Illustration¤

fD_Haaland