Conv Tube Bank

Overview

Tube banks are a core geometry in shell-and-tube and crossflow heat exchangers, where bundles of tubes exchange heat with an external flowing fluid. In this category, crossflow tube-bank analysis combines heat-transfer prediction, shell-side correction factors, and hydraulic loss estimation into one practical workflow. These models matter because exchanger thermal duty, pressure drop, and operating cost are strongly coupled in real equipment. Reliable early-stage design and debottlenecking therefore depend on using consistent correlations and correction terms together.

The unifying concepts are Nusselt-number correlations, finite-row corrections, and Bell-Delaware shell-side factors for non-ideal flow paths. A typical workflow combines base convection with correction multipliers and hydraulic checks, e.g. Q = U A \Delta T_{lm}, \qquad h = \frac{Nu\,k}{D_o}, \qquad \Delta P = f(\mathrm{Re},\ \text{geometry},\ n_{rows}). In practice, row count, tube layout (inline vs staggered), baffle geometry, and wall-to-bulk property differences all shift performance from idealized predictions.

Implementation is based on the Python ht library, especially ht.conv_tube_bank. This module consolidates widely used literature correlations (ESDU, Zukauskas, Grimison, HEDH, and Bell-Delaware methods) into consistent APIs suitable for calculator use, spreadsheet validation, and engineering scripting.

For Bell-Delaware shell-side non-idealities, CTB_BAFFLE_CORR, CTB_BAFFLE_LEAK, and CTB_BUNDLE_BYPASS quantify window-flow, leakage, and bypass effects that reduce or reshape effective crossflow behavior. CTB_LAMINAR_CORR adds the adverse temperature-gradient correction in low-Reynolds regimes, while CTB_UNEQUAL_BAFFLE accounts for inlet/outlet baffle spacing that differs from central spacing. These factors are typically multiplied into shell-side rating models, making them essential for realistic exchanger performance estimates and retrofit checks.

For convective heat-transfer prediction in tube-bank crossflow, CTB_NU_ESDU_73031, CTB_NU_GRIMISON, CTB_NU_HEDH, and CTB_NU_ZUK_BEJAN provide alternative Nusselt correlations across different datasets and validity ranges. Finite-bundle and orientation adjustments are handled by CTB_ESDU_ANG_CORR, CTB_ESDU_ROW_CORR, and CTB_ZUK_ROW_CORR, which correct long-bank assumptions when row count is limited or inclination changes. CTB_WALL_FACTOR then applies wall-property corrections (viscosity, Prandtl, or temperature ratio forms) so coefficients remain consistent with heating/cooling property gradients. Together, these tools support correlation comparison, uncertainty bracketing, and robust thermal rating.

For hydraulic design checks, CTB_DP_KERN and CTB_DP_ZUKAUSKAS estimate pressure drop from different methodological perspectives: Kern for shell-side exchanger-style sizing and Zukauskas for crossflow tube-bank resistance behavior. CTB_HORNER complements the set as a fast polynomial evaluator used in correlation and curve-fit contexts where repeated coefficient evaluation is required. Used jointly, the thermal and pressure-drop functions let engineers iterate on tube pitch, row count, baffle layout, and operating point while tracking both heat-transfer performance and pumping/fan penalties.

CTB_BAFFLE_CORR

This function computes the Bell-Delaware baffle window correction factor, which adjusts shell-side heat transfer for tubes that are not fully in crossflow because they lie in baffle-window regions.

The result is used as a multiplicative correction in exchanger rating and design calculations where window-flow effects influence bundle performance.

Excel Usage

=CTB_BAFFLE_CORR(crossflow_tube_fraction, baffle_corr_meth)
  • crossflow_tube_fraction (float, required): Fraction of tubes in crossflow between baffle tips (-).
  • baffle_corr_meth (str, optional, default: “spline”): Curve fit method name (-).

Returns (float): Baffle correction factor, or an error message if invalid.

Example 1: Example baffle correction

Inputs:

crossflow_tube_fraction
0.82

Excel formula:

=CTB_BAFFLE_CORR(0.82)

Expected output:

1.12586

Example 2: Chebyshev method evaluation

Inputs:

crossflow_tube_fraction baffle_corr_meth
0.6 chebyshev

Excel formula:

=CTB_BAFFLE_CORR(0.6, "chebyshev")

Expected output:

1.00162

Example 3: HEDH method evaluation

Inputs:

crossflow_tube_fraction baffle_corr_meth
0.3 HEDH

Excel formula:

=CTB_BAFFLE_CORR(0.3, "HEDH")

Expected output:

0.766

Example 4: High crossflow tube fraction

Inputs:

crossflow_tube_fraction
0.95

Excel formula:

=CTB_BAFFLE_CORR(0.95)

Expected output:

1.13772

Python Code

Show Code
from ht.conv_tube_bank import baffle_correction_Bell as ht_baffle_correction_Bell

def ctb_baffle_corr(crossflow_tube_fraction, baffle_corr_meth='spline'):
    """
    Compute Bell-Delaware baffle correction factor for crossflow.

    See: https://ht.readthedocs.io/en/latest/ht.conv_tube_bank.html

    This example function is provided as-is without any representation of accuracy.

    Args:
        crossflow_tube_fraction (float): Fraction of tubes in crossflow between baffle tips (-).
        baffle_corr_meth (str, optional): Curve fit method name (-). Valid options: Spline, Chebyshev, HEDH. Default is 'spline'.

    Returns:
        float: Baffle correction factor, or an error message if invalid.
    """
    try:
        return ht_baffle_correction_Bell(
            crossflow_tube_fraction=crossflow_tube_fraction,
            method=baffle_corr_meth,
        )
    except Exception as e:
        return f"Error: {str(e)}"

Online Calculator

Fraction of tubes in crossflow between baffle tips (-).
Curve fit method name (-).

CTB_BAFFLE_LEAK

This function computes the Bell-Delaware leakage correction factor for shell-side flow across tube banks. It accounts for fluid that leaks through shell-to-baffle and tube-to-baffle clearances rather than following ideal crossflow paths.

The correction is determined from leakage and crossflow areas and is typically applied as a multiplicative factor in shell-side thermal-hydraulic models.

Excel Usage

=CTB_BAFFLE_LEAK(Ssb, Stb, Sm, baffle_leak_meth)
  • Ssb (float, required): Shell to baffle leakage area (m^2).
  • Stb (float, required): Total baffle leakage area (m^2).
  • Sm (float, required): Crossflow area (m^2).
  • baffle_leak_meth (str, optional, default: “spline”): Curve fit method name (-).

Returns (float): Baffle leakage correction factor, or an error message if invalid.

Example 1: Example baffle leakage case

Inputs:

Ssb Stb Sm
1 3 8

Excel formula:

=CTB_BAFFLE_LEAK(1, 3, 8)

Expected output:

0.590662

Example 2: HEDH method evaluation

Inputs:

Ssb Stb Sm baffle_leak_meth
1 3 8 HEDH

Excel formula:

=CTB_BAFFLE_LEAK(1, 3, 8, "HEDH")

Expected output:

0.553024

Example 3: Smaller leakage areas

Inputs:

Ssb Stb Sm
0.2 0.5 6

Excel formula:

=CTB_BAFFLE_LEAK(0.2, 0.5, 6)

Expected output:

0.805167

Example 4: Larger leakage areas

Inputs:

Ssb Stb Sm
2 4 10

Excel formula:

=CTB_BAFFLE_LEAK(2, 4, 10)

Expected output:

0.50575

Python Code

Show Code
from ht.conv_tube_bank import baffle_leakage_Bell as ht_baffle_leakage_Bell

def ctb_baffle_leak(Ssb, Stb, Sm, baffle_leak_meth='spline'):
    """
    Compute Bell-Delaware baffle leakage correction factor.

    See: https://ht.readthedocs.io/en/latest/ht.conv_tube_bank.html

    This example function is provided as-is without any representation of accuracy.

    Args:
        Ssb (float): Shell to baffle leakage area (m^2).
        Stb (float): Total baffle leakage area (m^2).
        Sm (float): Crossflow area (m^2).
        baffle_leak_meth (str, optional): Curve fit method name (-). Valid options: Spline, HEDH. Default is 'spline'.

    Returns:
        float: Baffle leakage correction factor, or an error message if invalid.
    """
    try:
        return ht_baffle_leakage_Bell(
            Ssb=Ssb,
            Stb=Stb,
            Sm=Sm,
            method=baffle_leak_meth,
        )
    except Exception as e:
        return f"Error: {str(e)}"

Online Calculator

Shell to baffle leakage area (m^2).
Total baffle leakage area (m^2).
Crossflow area (m^2).
Curve fit method name (-).

CTB_BUNDLE_BYPASS

This function computes the Bell-Delaware bundle bypass correction factor, which models the reduction in effective crossflow caused by shell-side fluid bypassing the tube bundle through clearances.

It depends on bypass area fraction, seal-strip count, and crossflow row count, with an optional laminar-mode adjustment for low-Reynolds-number operation.

Excel Usage

=CTB_BUNDLE_BYPASS(bypass_area_fraction, seal_strips, crossflow_rows, laminar, bypass_meth)
  • bypass_area_fraction (float, required): Fraction of crossflow area available for bypassing (-).
  • seal_strips (int, required): Number of seal strips per side of a baffle (-).
  • crossflow_rows (int, required): Number of tube rows in crossflow (-).
  • laminar (bool, optional, default: false): Whether laminar correction is applied (-).
  • bypass_meth (str, optional, default: “spline”): Curve fit method name (-).

Returns (float): Bundle bypass correction factor, or an error message if invalid.

Example 1: Example bundle bypass case

Inputs:

bypass_area_fraction seal_strips crossflow_rows
0.5 5 25

Excel formula:

=CTB_BUNDLE_BYPASS(0.5, 5, 25)

Expected output:

0.846961

Example 2: HEDH method evaluation

Inputs:

bypass_area_fraction seal_strips crossflow_rows bypass_meth
0.5 5 25 HEDH

Excel formula:

=CTB_BUNDLE_BYPASS(0.5, 5, 25, "HEDH")

Expected output:

0.848321

Example 3: Laminar flow case

Inputs:

bypass_area_fraction seal_strips crossflow_rows laminar
0.4 3 20 true

Excel formula:

=CTB_BUNDLE_BYPASS(0.4, 3, 20, TRUE)

Expected output:

0.830582

Example 4: Low bypass area fraction

Inputs:

bypass_area_fraction seal_strips crossflow_rows
0.1 2 10

Excel formula:

=CTB_BUNDLE_BYPASS(0.1, 2, 10)

Expected output:

0.962609

Python Code

Show Code
from ht.conv_tube_bank import bundle_bypassing_Bell as ht_bundle_bypassing_Bell

def ctb_bundle_bypass(bypass_area_fraction, seal_strips, crossflow_rows, laminar=False, bypass_meth='spline'):
    """
    Compute Bell-Delaware bundle bypass correction factor.

    See: https://ht.readthedocs.io/en/latest/ht.conv_tube_bank.html

    This example function is provided as-is without any representation of accuracy.

    Args:
        bypass_area_fraction (float): Fraction of crossflow area available for bypassing (-).
        seal_strips (int): Number of seal strips per side of a baffle (-).
        crossflow_rows (int): Number of tube rows in crossflow (-).
        laminar (bool, optional): Whether laminar correction is applied (-). Default is False.
        bypass_meth (str, optional): Curve fit method name (-). Valid options: Spline, HEDH. Default is 'spline'.

    Returns:
        float: Bundle bypass correction factor, or an error message if invalid.
    """
    try:
        return ht_bundle_bypassing_Bell(
            bypass_area_fraction=bypass_area_fraction,
            seal_strips=seal_strips,
            crossflow_rows=crossflow_rows,
            laminar=laminar,
            method=bypass_meth,
        )
    except Exception as e:
        return f"Error: {str(e)}"

Online Calculator

Fraction of crossflow area available for bypassing (-).
Number of seal strips per side of a baffle (-).
Number of tube rows in crossflow (-).
Whether laminar correction is applied (-).
Curve fit method name (-).

CTB_DP_KERN

This function estimates pressure drop across a shell-side tube bundle using the Kern equivalent-diameter method. It combines fluid properties, flow rate, geometry, and baffle count to produce a pressure-loss estimate.

The Kern formulation is often used for preliminary shell-and-tube design and quick hydraulic checks.

Excel Usage

=CTB_DP_KERN(m, rho, mu, DShell, LSpacing, pitch, Do, NBaffles, mu_w)
  • m (float, required): Mass flow rate (kg/s).
  • rho (float, required): Fluid density (kg/m^3).
  • mu (float, required): Fluid viscosity (Pa*s).
  • DShell (float, required): Exchanger shell diameter (m).
  • LSpacing (float, required): Baffle spacing (m).
  • pitch (float, required): Tube pitch (m).
  • Do (float, required): Tube outer diameter (m).
  • NBaffles (int, required): Number of baffles (-).
  • mu_w (float, optional, default: null): Viscosity at the wall temperature (Pa*s).

Returns (float): Pressure drop across the bundle, or an error message if invalid.

Example 1: Example Kern pressure drop case

Inputs:

m rho mu mu_w DShell LSpacing pitch Do NBaffles
11 995 0.000803 0.000657 0.584 0.1524 0.0254 0.019 22

Excel formula:

=CTB_DP_KERN(11, 995, 0.000803, 0.000657, 0.584, 0.1524, 0.0254, 0.019, 22)

Expected output:

18980.6

Example 2: Without wall viscosity correction

Inputs:

m rho mu DShell LSpacing pitch Do NBaffles
8 998 0.001 0.6 0.15 0.03 0.02 18

Excel formula:

=CTB_DP_KERN(8, 998, 0.001, 0.6, 0.15, 0.03, 0.02, 18)

Expected output:

3635.97

Example 3: Tighter tube pitch

Inputs:

m rho mu mu_w DShell LSpacing pitch Do NBaffles
15 950 0.0009 0.0008 0.5 0.12 0.022 0.018 20

Excel formula:

=CTB_DP_KERN(15, 950, 0.0009, 0.0008, 0.5, 0.12, 0.022, 0.018, 20)

Expected output:

151388

Example 4: Lower flow rate

Inputs:

m rho mu mu_w DShell LSpacing pitch Do NBaffles
5 900 0.0012 0.001 0.45 0.1 0.025 0.02 16

Excel formula:

=CTB_DP_KERN(5, 900, 0.0012, 0.001, 0.45, 0.1, 0.025, 0.02, 16)

Expected output:

22100.2

Python Code

Show Code
from ht.conv_tube_bank import dP_Kern as ht_dP_Kern

def ctb_dp_kern(m, rho, mu, DShell, LSpacing, pitch, Do, NBaffles, mu_w=None):
    """
    Compute tube bank pressure drop using the Kern method.

    See: https://ht.readthedocs.io/en/latest/ht.conv_tube_bank.html

    This example function is provided as-is without any representation of accuracy.

    Args:
        m (float): Mass flow rate (kg/s).
        rho (float): Fluid density (kg/m^3).
        mu (float): Fluid viscosity (Pa*s).
        DShell (float): Exchanger shell diameter (m).
        LSpacing (float): Baffle spacing (m).
        pitch (float): Tube pitch (m).
        Do (float): Tube outer diameter (m).
        NBaffles (int): Number of baffles (-).
        mu_w (float, optional): Viscosity at the wall temperature (Pa*s). Default is None.

    Returns:
        float: Pressure drop across the bundle, or an error message if invalid.
    """
    try:
        return ht_dP_Kern(
            m=m,
            rho=rho,
            mu=mu,
            DShell=DShell,
            LSpacing=LSpacing,
            pitch=pitch,
            Do=Do,
            NBaffles=NBaffles,
            mu_w=mu_w,
        )
    except Exception as e:
        return f"Error: {str(e)}"

Online Calculator

Mass flow rate (kg/s).
Fluid density (kg/m^3).
Fluid viscosity (Pa*s).
Exchanger shell diameter (m).
Baffle spacing (m).
Tube pitch (m).
Tube outer diameter (m).
Number of baffles (-).
Viscosity at the wall temperature (Pa*s).

CTB_DP_ZUKAUSKAS

This function computes pressure drop for crossflow through a tube bank using the Zukauskas approach. It relates Reynolds-number-dependent resistance to tube-row count and bundle geometry.

The result provides a hydraulic estimate for external-flow tube-bank arrangements in heat exchanger analysis.

Excel Usage

=CTB_DP_ZUKAUSKAS(Re, n, ST, SL, D, rho, Vmax)
  • Re (float, required): Reynolds number (-).
  • n (int, required): Number of tube rows (-).
  • ST (float, required): Transverse pitch (m).
  • SL (float, required): Longitudinal pitch (m).
  • D (float, required): Tube outer diameter (m).
  • rho (float, required): Fluid density (kg/m^3).
  • Vmax (float, required): Maximum velocity (m/s).

Returns (float): Pressure drop across the tube bank, or an error message if invalid.

Example 1: Example staggered pitch case

Inputs:

Re n ST SL D rho Vmax
13943 7 0.0313 0.0343 0.0164 1.217 12.6

Excel formula:

=CTB_DP_ZUKAUSKAS(13943, 7, 0.0313, 0.0343, 0.0164, 1.217, 12.6)

Expected output:

235.229

Example 2: Example inline pitch case

Inputs:

Re n ST SL D rho Vmax
13943 7 0.0313 0.0313 0.0164 1.217 12.6

Excel formula:

=CTB_DP_ZUKAUSKAS(13943, 7, 0.0313, 0.0313, 0.0164, 1.217, 12.6)

Expected output:

161.147

Example 3: Lower Reynolds number case

Inputs:

Re n ST SL D rho Vmax
500 5 0.04 0.04 0.02 1.2 4

Excel formula:

=CTB_DP_ZUKAUSKAS(500, 5, 0.04, 0.04, 0.02, 1.2, 4)

Expected output:

10.8202

Example 4: Higher Reynolds number case

Inputs:

Re n ST SL D rho Vmax
50000 10 0.05 0.06 0.025 1.1 20

Excel formula:

=CTB_DP_ZUKAUSKAS(50000, 10, 0.05, 0.06, 0.025, 1.1, 20)

Expected output:

826.151

Python Code

Show Code
from ht.conv_tube_bank import dP_Zukauskas as ht_dP_Zukauskas

def ctb_dp_zukauskas(Re, n, ST, SL, D, rho, Vmax):
    """
    Compute tube bank pressure drop using the Zukauskas method.

    See: https://ht.readthedocs.io/en/latest/ht.conv_tube_bank.html

    This example function is provided as-is without any representation of accuracy.

    Args:
        Re (float): Reynolds number (-).
        n (int): Number of tube rows (-).
        ST (float): Transverse pitch (m).
        SL (float): Longitudinal pitch (m).
        D (float): Tube outer diameter (m).
        rho (float): Fluid density (kg/m^3).
        Vmax (float): Maximum velocity (m/s).

    Returns:
        float: Pressure drop across the tube bank, or an error message if invalid.
    """
    try:
        return ht_dP_Zukauskas(
            Re=Re,
            n=n,
            ST=ST,
            SL=SL,
            D=D,
            rho=rho,
            Vmax=Vmax,
        )
    except Exception as e:
        return f"Error: {str(e)}"

Online Calculator

Reynolds number (-).
Number of tube rows (-).
Transverse pitch (m).
Longitudinal pitch (m).
Tube outer diameter (m).
Fluid density (kg/m^3).
Maximum velocity (m/s).

CTB_ESDU_ANG_CORR

This function returns the ESDU inclination correction factor for tube-bank heat transfer in crossflow. It scales the base Nusselt number at normal incidence to account for an inclined bank orientation.

The correction uses:

F_3 = (\sin\theta)^{0.6}

where \theta is the inclination angle in degrees.

Excel Usage

=CTB_ESDU_ANG_CORR(angle)
  • angle (float, required): Tube bank inclination angle relative to flow (deg).

Returns (float): Tube bank inclination correction factor, or an error message if invalid.

Example 1: Inclination at 75 degrees

Inputs:

angle
75

Excel formula:

=CTB_ESDU_ANG_CORR(75)

Expected output:

0.979414

Example 2: Straight tube bank at 90 degrees

Inputs:

angle
90

Excel formula:

=CTB_ESDU_ANG_CORR(90)

Expected output:

1

Example 3: Inclination at 60 degrees

Inputs:

angle
60

Excel formula:

=CTB_ESDU_ANG_CORR(60)

Expected output:

0.917315

Example 4: Inclination at 30 degrees

Inputs:

angle
30

Excel formula:

=CTB_ESDU_ANG_CORR(30)

Expected output:

0.659754

Python Code

Show Code
from ht.conv_tube_bank import ESDU_tube_angle_correction as ht_ESDU_tube_angle_correction

def ctb_esdu_ang_corr(angle):
    """
    Compute the ESDU tube bank inclination correction factor.

    See: https://ht.readthedocs.io/en/latest/ht.conv_tube_bank.html

    This example function is provided as-is without any representation of accuracy.

    Args:
        angle (float): Tube bank inclination angle relative to flow (deg).

    Returns:
        float: Tube bank inclination correction factor, or an error message if invalid.
    """
    try:
        return ht_ESDU_tube_angle_correction(angle)
    except Exception as e:
        return f"Error: {str(e)}"

Online Calculator

Tube bank inclination angle relative to flow (deg).

CTB_ESDU_ROW_CORR

This function computes the ESDU tube-row correction factor used in crossflow tube-bank heat transfer correlations. It adjusts the prediction for finite row counts, since short bundles do not fully match asymptotic behavior at large row numbers.

The correction depends primarily on row count and arrangement (staggered or inline), with a method selector exposed for compatibility with the wrapped correlation API.

Excel Usage

=CTB_ESDU_ROW_CORR(tube_rows, staggered, Re, method)
  • tube_rows (int, required): Number of tube rows per bundle (-).
  • staggered (bool, optional, default: true): Whether the tube layout is staggered (-).
  • Re (float, optional, default: 3000): Reynolds number based on bare tube diameter (-).
  • method (str, optional, default: “Hewitt”): Correlation method name (-).

Returns (float): Tube row correction factor, or an error message if invalid.

Example 1: Staggered bundle with four rows

Inputs:

tube_rows staggered
4 true

Excel formula:

=CTB_ESDU_ROW_CORR(4, TRUE)

Expected output:

0.8984

Example 2: Inline bundle with six rows

Inputs:

tube_rows staggered
6 false

Excel formula:

=CTB_ESDU_ROW_CORR(6, FALSE)

Expected output:

0.9551

Example 3: Ten rows with default method

Inputs:

tube_rows
10

Excel formula:

=CTB_ESDU_ROW_CORR(10)

Expected output:

1

Example 4: Inline bundle with two rows

Inputs:

tube_rows staggered Re
2 false 5000

Excel formula:

=CTB_ESDU_ROW_CORR(2, FALSE, 5000)

Expected output:

0.8479

Python Code

Show Code
from ht.conv_tube_bank import ESDU_tube_row_correction as ht_ESDU_tube_row_correction

def ctb_esdu_row_corr(tube_rows, staggered=True, Re=3000, method='Hewitt'):
    """
    Compute the ESDU tube row correction factor for a tube bundle.

    See: https://ht.readthedocs.io/en/latest/ht.conv_tube_bank.html

    This example function is provided as-is without any representation of accuracy.

    Args:
        tube_rows (int): Number of tube rows per bundle (-).
        staggered (bool, optional): Whether the tube layout is staggered (-). Default is True.
        Re (float, optional): Reynolds number based on bare tube diameter (-). Default is 3000.
        method (str, optional): Correlation method name (-). Default is 'Hewitt'.

    Returns:
        float: Tube row correction factor, or an error message if invalid.
    """
    try:
        return ht_ESDU_tube_row_correction(
            tube_rows=tube_rows,
            staggered=staggered,
            Re=Re,
            method=method,
        )
    except Exception as e:
        return f"Error: {str(e)}"

Online Calculator

Number of tube rows per bundle (-).
Whether the tube layout is staggered (-).
Reynolds number based on bare tube diameter (-).
Correlation method name (-).

CTB_HORNER

This function evaluates a polynomial at a specified scalar input using Horner’s method, which is a numerically efficient nested form for polynomial evaluation.

For coefficients a_0, a_1, \dots, a_n, Horner’s form evaluates a_0x^n + a_1x^{n-1} + \dots + a_n with reduced arithmetic operations and good computational efficiency.

Excel Usage

=CTB_HORNER(coeffs, x)
  • coeffs (list[list], required): Polynomial coefficients ordered from highest power to constant (-).
  • x (float, required): Point at which to evaluate the polynomial (-).

Returns (float): Polynomial value at the specified point, or an error message if invalid.

Example 1: Linear polynomial

Inputs:

coeffs x
1 3 2

Excel formula:

=CTB_HORNER({1,3}, 2)

Expected output:

5

Example 2: Quadratic polynomial

Inputs:

coeffs x
1 0 -1 3

Excel formula:

=CTB_HORNER({1,0,-1}, 3)

Expected output:

8

Example 3: Constant polynomial

Inputs:

coeffs x
2.5 10

Excel formula:

=CTB_HORNER({2.5}, 10)

Expected output:

2.5

Example 4: Coefficients provided as a column

Inputs:

coeffs x
1 1.5
2
3

Excel formula:

=CTB_HORNER({1;2;3}, 1.5)

Expected output:

8.25

Python Code

Show Code
from ht.conv_tube_bank import horner as ht_horner

def ctb_horner(coeffs, x):
    """
    Evaluate a polynomial using Horner's method.

    See: https://ht.readthedocs.io/en/latest/ht.conv_tube_bank.html

    This example function is provided as-is without any representation of accuracy.

    Args:
        coeffs (list[list]): Polynomial coefficients ordered from highest power to constant (-).
        x (float): Point at which to evaluate the polynomial (-).

    Returns:
        float: Polynomial value at the specified point, or an error message if invalid.
    """
    try:
        def to2d(x_value):
            return [[x_value]] if not isinstance(x_value, list) else x_value

        coeffs = to2d(coeffs)

        if not all(isinstance(row, list) for row in coeffs):
            return "Error: coeffs must be a 2D list"

        flat = []
        for row in coeffs:
            for val in row:
                try:
                    flat.append(float(val))
                except (TypeError, ValueError):
                    return "Error: coeffs must be numeric"

        if not flat:
            return "Error: coeffs must contain at least one value"

        return ht_horner(flat, x)
    except Exception as e:
        return f"Error: {str(e)}"

Online Calculator

Polynomial coefficients ordered from highest power to constant (-).
Point at which to evaluate the polynomial (-).

CTB_LAMINAR_CORR

This function computes the Bell-Delaware laminar correction factor for shell-side heat transfer in tube-bank exchangers. It captures the adverse temperature-gradient effect that can reduce performance in low-Reynolds-number flow.

The correction transitions with Reynolds number and row-pass count, and approaches unity in higher-Re regimes.

Excel Usage

=CTB_LAMINAR_CORR(Re, total_row_passes)
  • Re (float, required): Shell-side Reynolds number (-).
  • total_row_passes (int, required): Total number of tube row passes (-).

Returns (float): Laminar correction factor, or an error message if invalid.

Example 1: Laminar correction at low Reynolds number

Inputs:

Re total_row_passes
30 80

Excel formula:

=CTB_LAMINAR_CORR(30, 80)

Expected output:

0.7268

Example 2: Transition Reynolds number case

Inputs:

Re total_row_passes
80 40

Excel formula:

=CTB_LAMINAR_CORR(80, 40)

Expected output:

0.944791

Example 3: High Reynolds number case

Inputs:

Re total_row_passes
150 60

Excel formula:

=CTB_LAMINAR_CORR(150, 60)

Expected output:

1

Example 4: Few tube rows case

Inputs:

Re total_row_passes
50 10

Excel formula:

=CTB_LAMINAR_CORR(50, 10)

Expected output:

1

Python Code

Show Code
from ht.conv_tube_bank import laminar_correction_Bell as ht_laminar_correction_Bell

def ctb_laminar_corr(Re, total_row_passes):
    """
    Compute Bell-Delaware laminar flow correction factor.

    See: https://ht.readthedocs.io/en/latest/ht.conv_tube_bank.html

    This example function is provided as-is without any representation of accuracy.

    Args:
        Re (float): Shell-side Reynolds number (-).
        total_row_passes (int): Total number of tube row passes (-).

    Returns:
        float: Laminar correction factor, or an error message if invalid.
    """
    try:
        return ht_laminar_correction_Bell(
            Re=Re,
            total_row_passes=total_row_passes,
        )
    except Exception as e:
        return f"Error: {str(e)}"

Online Calculator

Shell-side Reynolds number (-).
Total number of tube row passes (-).

CTB_NU_ESDU_73031

This function calculates tube-bank Nusselt number for crossflow using the ESDU 73031-style correlation framework. It combines Reynolds and Prandtl scaling with finite-row and geometric effects through tube-row count and pitch ratios.

A wall-property correction can be included through Pr_{wall}, and bank inclination can be incorporated through the angle input.

Excel Usage

=CTB_NU_ESDU_73031(Re, Pr, tube_rows, pitch_parallel, pitch_normal, Pr_wall, angle)
  • Re (float, required): Reynolds number based on tube outer diameter (-).
  • Pr (float, required): Prandtl number at bulk conditions (-).
  • tube_rows (int, required): Number of tube rows per bundle (-).
  • pitch_parallel (float, required): Tube pitch parallel to flow (m).
  • pitch_normal (float, required): Tube pitch normal to flow (m).
  • Pr_wall (float, optional, default: null): Prandtl number at the wall temperature (-).
  • angle (float, optional, default: 90): Tube bank inclination angle relative to flow (deg).

Returns (float): Nusselt number for a tube bank, or an error message if invalid.

Example 1: Example staggered bundle

Inputs:

Re Pr tube_rows pitch_parallel pitch_normal
13200 0.71 8 0.09 0.05

Excel formula:

=CTB_NU_ESDU_73031(13200, 0.71, 8, 0.09, 0.05)

Expected output:

98.2563

Example 2: Inline bundle at low Reynolds number

Inputs:

Re Pr tube_rows pitch_parallel pitch_normal
200 1 6 0.06 0.08

Excel formula:

=CTB_NU_ESDU_73031(200, 1, 6, 0.06, 0.08)

Expected output:

8.36008

Example 3: Include wall Prandtl correction

Inputs:

Re Pr tube_rows pitch_parallel pitch_normal Pr_wall
50000 0.9 12 0.08 0.05 1.1

Excel formula:

=CTB_NU_ESDU_73031(50000, 0.9, 12, 0.08, 0.05, 1.1)

Expected output:

240.875

Example 4: Inclined tube bank

Inputs:

Re Pr tube_rows pitch_parallel pitch_normal angle
8000 1.2 9 0.07 0.05 75

Excel formula:

=CTB_NU_ESDU_73031(8000, 1.2, 9, 0.07, 0.05, 75)

Expected output:

84.4776

Python Code

Show Code
from ht.conv_tube_bank import Nu_ESDU_73031 as ht_Nu_ESDU_73031

def ctb_nu_esdu_73031(Re, Pr, tube_rows, pitch_parallel, pitch_normal, Pr_wall=None, angle=90):
    """
    Compute tube bank Nusselt number using the ESDU 73031 correlation.

    See: https://ht.readthedocs.io/en/latest/ht.conv_tube_bank.html

    This example function is provided as-is without any representation of accuracy.

    Args:
        Re (float): Reynolds number based on tube outer diameter (-).
        Pr (float): Prandtl number at bulk conditions (-).
        tube_rows (int): Number of tube rows per bundle (-).
        pitch_parallel (float): Tube pitch parallel to flow (m).
        pitch_normal (float): Tube pitch normal to flow (m).
        Pr_wall (float, optional): Prandtl number at the wall temperature (-). Default is None.
        angle (float, optional): Tube bank inclination angle relative to flow (deg). Default is 90.

    Returns:
        float: Nusselt number for a tube bank, or an error message if invalid.
    """
    try:
        return ht_Nu_ESDU_73031(
            Re=Re,
            Pr=Pr,
            tube_rows=tube_rows,
            pitch_parallel=pitch_parallel,
            pitch_normal=pitch_normal,
            Pr_wall=Pr_wall,
            angle=angle,
        )
    except Exception as e:
        return f"Error: {str(e)}"

Online Calculator

Reynolds number based on tube outer diameter (-).
Prandtl number at bulk conditions (-).
Number of tube rows per bundle (-).
Tube pitch parallel to flow (m).
Tube pitch normal to flow (m).
Prandtl number at the wall temperature (-).
Tube bank inclination angle relative to flow (deg).

CTB_NU_GRIMISON

This function computes crossflow tube-bank Nusselt number using the Grimison correlation, which estimates convective heat transfer from Reynolds and Prandtl numbers plus tube-bank geometry.

The model includes tube-row effects for finite bundles and is commonly used for engineering estimates of external-flow heat transfer.

Excel Usage

=CTB_NU_GRIMISON(Re, Pr, Do, tube_rows, pitch_parallel, pitch_normal)
  • Re (float, required): Reynolds number based on tube outer diameter (-).
  • Pr (float, required): Prandtl number at bulk conditions (-).
  • Do (float, required): Tube outer diameter (m).
  • tube_rows (int, required): Number of tube rows per bundle (-).
  • pitch_parallel (float, required): Tube pitch parallel to flow (m).
  • pitch_normal (float, required): Tube pitch normal to flow (m).

Returns (float): Nusselt number for a tube bank, or an error message if invalid.

Example 1: Example with equal pitches

Inputs:

Re Pr tube_rows pitch_parallel pitch_normal Do
10263.37 0.708 11 0.05 0.05 0.025

Excel formula:

=CTB_NU_GRIMISON(10263.37, 0.708, 11, 0.05, 0.05, 0.025)

Expected output:

79.0788

Example 2: Example with wider transverse pitch

Inputs:

Re Pr tube_rows pitch_parallel pitch_normal Do
10263.37 0.708 11 0.05 0.07 0.025

Excel formula:

=CTB_NU_GRIMISON(10263.37, 0.708, 11, 0.05, 0.07, 0.025)

Expected output:

79.9272

Example 3: Lower Reynolds number case

Inputs:

Re Pr tube_rows pitch_parallel pitch_normal Do
800 7 6 0.05 0.05 0.02

Excel formula:

=CTB_NU_GRIMISON(800, 7, 6, 0.05, 0.05, 0.02)

Expected output:

31.1776

Example 4: Higher Reynolds number case

Inputs:

Re Pr tube_rows pitch_parallel pitch_normal Do
50000 0.9 15 0.08 0.06 0.03

Excel formula:

=CTB_NU_GRIMISON(50000, 0.9, 15, 0.08, 0.06, 0.03)

Expected output:

1.07524

Python Code

Show Code
from ht.conv_tube_bank import Nu_Grimison_tube_bank as ht_Nu_Grimison_tube_bank

def ctb_nu_grimison(Re, Pr, Do, tube_rows, pitch_parallel, pitch_normal):
    """
    Compute tube bank Nusselt number using the Grimison correlation.

    See: https://ht.readthedocs.io/en/latest/ht.conv_tube_bank.html

    This example function is provided as-is without any representation of accuracy.

    Args:
        Re (float): Reynolds number based on tube outer diameter (-).
        Pr (float): Prandtl number at bulk conditions (-).
        Do (float): Tube outer diameter (m).
        tube_rows (int): Number of tube rows per bundle (-).
        pitch_parallel (float): Tube pitch parallel to flow (m).
        pitch_normal (float): Tube pitch normal to flow (m).

    Returns:
        float: Nusselt number for a tube bank, or an error message if invalid.
    """
    try:
        return ht_Nu_Grimison_tube_bank(
            Re=Re,
            Pr=Pr,
            Do=Do,
            tube_rows=tube_rows,
            pitch_parallel=pitch_parallel,
            pitch_normal=pitch_normal,
        )
    except Exception as e:
        return f"Error: {str(e)}"

Online Calculator

Reynolds number based on tube outer diameter (-).
Prandtl number at bulk conditions (-).
Tube outer diameter (m).
Number of tube rows per bundle (-).
Tube pitch parallel to flow (m).
Tube pitch normal to flow (m).

CTB_NU_HEDH

This function computes tube-bank Nusselt number using the Heat Exchanger Design Handbook (HEDH) correlation set. It blends laminar and turbulent contributions and applies arrangement-dependent factors.

The result provides an external-convection heat-transfer estimate for tube-bank geometries in crossflow.

Excel Usage

=CTB_NU_HEDH(Re, Pr, Do, tube_rows, pitch_parallel, pitch_normal)
  • Re (float, required): Reynolds number based on tube outer diameter (-).
  • Pr (float, required): Prandtl number at bulk conditions (-).
  • Do (float, required): Tube outer diameter (m).
  • tube_rows (int, required): Number of tube rows per bundle (-).
  • pitch_parallel (float, required): Tube pitch parallel to flow (m).
  • pitch_normal (float, required): Tube pitch normal to flow (m).

Returns (float): Nusselt number for a tube bank, or an error message if invalid.

Example 1: Example turbulent case

Inputs:

Re Pr tube_rows pitch_parallel pitch_normal Do
10000 7 10 0.05 0.05 0.03

Excel formula:

=CTB_NU_HEDH(10000, 7, 10, 0.05, 0.05, 0.03)

Expected output:

382.464

Example 2: Example from reference data

Inputs:

Re Pr tube_rows pitch_parallel pitch_normal Do
10263.37 0.708 11 0.05 0.05 0.025

Excel formula:

=CTB_NU_HEDH(10263.37, 0.708, 11, 0.05, 0.05, 0.025)

Expected output:

149.187

Example 3: Low Reynolds number case

Inputs:

Re Pr tube_rows pitch_parallel pitch_normal Do
120 5 6 0.04 0.04 0.02

Excel formula:

=CTB_NU_HEDH(120, 5, 6, 0.04, 0.04, 0.02)

Expected output:

21.5715

Example 4: High Reynolds number case

Inputs:

Re Pr tube_rows pitch_parallel pitch_normal Do
80000 0.8 12 0.08 0.06 0.03

Excel formula:

=CTB_NU_HEDH(80000, 0.8, 12, 0.08, 0.06, 0.03)

Expected output:

586.174

Python Code

Show Code
from ht.conv_tube_bank import Nu_HEDH_tube_bank as ht_Nu_HEDH_tube_bank

def ctb_nu_hedh(Re, Pr, Do, tube_rows, pitch_parallel, pitch_normal):
    """
    Compute tube bank Nusselt number using the HEDH correlation.

    See: https://ht.readthedocs.io/en/latest/ht.conv_tube_bank.html

    This example function is provided as-is without any representation of accuracy.

    Args:
        Re (float): Reynolds number based on tube outer diameter (-).
        Pr (float): Prandtl number at bulk conditions (-).
        Do (float): Tube outer diameter (m).
        tube_rows (int): Number of tube rows per bundle (-).
        pitch_parallel (float): Tube pitch parallel to flow (m).
        pitch_normal (float): Tube pitch normal to flow (m).

    Returns:
        float: Nusselt number for a tube bank, or an error message if invalid.
    """
    try:
        return ht_Nu_HEDH_tube_bank(
            Re=Re,
            Pr=Pr,
            Do=Do,
            tube_rows=tube_rows,
            pitch_parallel=pitch_parallel,
            pitch_normal=pitch_normal,
        )
    except Exception as e:
        return f"Error: {str(e)}"

Online Calculator

Reynolds number based on tube outer diameter (-).
Prandtl number at bulk conditions (-).
Tube outer diameter (m).
Number of tube rows per bundle (-).
Tube pitch parallel to flow (m).
Tube pitch normal to flow (m).

CTB_NU_ZUK_BEJAN

This function computes Nusselt number for crossflow over a tube bank using the Zukauskas-Bejan correlation family. It selects regime-dependent coefficient forms based on Reynolds number and arrangement implied by pitch geometry.

An optional wall-Prandtl correction term can be applied through Pr_{wall} when wall-property effects are needed.

Excel Usage

=CTB_NU_ZUK_BEJAN(Re, Pr, tube_rows, pitch_parallel, pitch_normal, Pr_wall)
  • Re (float, required): Reynolds number based on tube outer diameter (-).
  • Pr (float, required): Prandtl number at bulk conditions (-).
  • tube_rows (int, required): Number of tube rows per bundle (-).
  • pitch_parallel (float, required): Tube pitch parallel to flow (m).
  • pitch_normal (float, required): Tube pitch normal to flow (m).
  • Pr_wall (float, optional, default: null): Prandtl number at the wall temperature (-).

Returns (float): Nusselt number for a tube bank, or an error message if invalid.

Example 1: Example tube bank case

Inputs:

Re Pr tube_rows pitch_parallel pitch_normal
10000 7 10 0.05 0.05

Excel formula:

=CTB_NU_ZUK_BEJAN(10000, 7, 10, 0.05, 0.05)

Expected output:

175.92

Example 2: Include wall Prandtl correction

Inputs:

Re Pr tube_rows pitch_parallel pitch_normal Pr_wall
5000 1.5 8 0.06 0.05 1.2

Excel formula:

=CTB_NU_ZUK_BEJAN(5000, 1.5, 8, 0.06, 0.05, 1.2)

Expected output:

66.0468

Example 3: Lower Reynolds number case

Inputs:

Re Pr tube_rows pitch_parallel pitch_normal
200 0.9 5 0.05 0.05

Excel formula:

=CTB_NU_ZUK_BEJAN(200, 0.9, 5, 0.05, 0.05)

Expected output:

0.607023

Example 4: High Reynolds number case

Inputs:

Re Pr tube_rows pitch_parallel pitch_normal
150000 0.7 20 0.07 0.05

Excel formula:

=CTB_NU_ZUK_BEJAN(150000, 0.7, 20, 0.07, 0.05)

Expected output:

367.056

Python Code

Show Code
from ht.conv_tube_bank import Nu_Zukauskas_Bejan as ht_Nu_Zukauskas_Bejan

def ctb_nu_zuk_bejan(Re, Pr, tube_rows, pitch_parallel, pitch_normal, Pr_wall=None):
    """
    Compute tube bank Nusselt number using the Zukauskas-Bejan correlation.

    See: https://ht.readthedocs.io/en/latest/ht.conv_tube_bank.html

    This example function is provided as-is without any representation of accuracy.

    Args:
        Re (float): Reynolds number based on tube outer diameter (-).
        Pr (float): Prandtl number at bulk conditions (-).
        tube_rows (int): Number of tube rows per bundle (-).
        pitch_parallel (float): Tube pitch parallel to flow (m).
        pitch_normal (float): Tube pitch normal to flow (m).
        Pr_wall (float, optional): Prandtl number at the wall temperature (-). Default is None.

    Returns:
        float: Nusselt number for a tube bank, or an error message if invalid.
    """
    try:
        return ht_Nu_Zukauskas_Bejan(
            Re=Re,
            Pr=Pr,
            tube_rows=tube_rows,
            pitch_parallel=pitch_parallel,
            pitch_normal=pitch_normal,
            Pr_wall=Pr_wall,
        )
    except Exception as e:
        return f"Error: {str(e)}"

Online Calculator

Reynolds number based on tube outer diameter (-).
Prandtl number at bulk conditions (-).
Number of tube rows per bundle (-).
Tube pitch parallel to flow (m).
Tube pitch normal to flow (m).
Prandtl number at the wall temperature (-).

CTB_UNEQUAL_BAFFLE

This function computes the Bell-Delaware correction factor for unequal inlet and outlet baffle spacing. It adjusts shell-side predictions when end-zone spacing differs from the nominal internal baffle spacing.

The factor depends on baffle count, nominal spacing, end spacings, and optional laminar-mode behavior.

Excel Usage

=CTB_UNEQUAL_BAFFLE(baffles, baffle_spacing, baffle_spacing_in, baffle_spacing_out, laminar)
  • baffles (int, required): Number of baffles (-).
  • baffle_spacing (float, required): Average baffle spacing (m).
  • baffle_spacing_in (float, optional, default: null): Spacing from inlet to first baffle (m).
  • baffle_spacing_out (float, optional, default: null): Spacing from last baffle to outlet (m).
  • laminar (bool, optional, default: false): Whether laminar correction is applied (-).

Returns (float): Unequal baffle spacing correction factor, or an error message if invalid.

Example 1: Example unequal spacing case

Inputs:

baffles baffle_spacing baffle_spacing_in baffle_spacing_out
16 0.1 0.15 0.15

Excel formula:

=CTB_UNEQUAL_BAFFLE(16, 0.1, 0.15, 0.15)

Expected output:

0.964009

Example 2: Equal spacing case

Inputs:

baffles baffle_spacing baffle_spacing_in baffle_spacing_out
12 0.12 0.12 0.12

Excel formula:

=CTB_UNEQUAL_BAFFLE(12, 0.12, 0.12, 0.12)

Expected output:

1

Example 3: Laminar flow case

Inputs:

baffles baffle_spacing baffle_spacing_in baffle_spacing_out laminar
8 0.2 0.1 0.2 true

Excel formula:

=CTB_UNEQUAL_BAFFLE(8, 0.2, 0.1, 0.2, TRUE)

Expected output:

1.01529

Example 4: Default inlet and outlet spacing

Inputs:

baffles baffle_spacing
10 0.15

Excel formula:

=CTB_UNEQUAL_BAFFLE(10, 0.15)

Expected output:

1

Python Code

Show Code
from ht.conv_tube_bank import unequal_baffle_spacing_Bell as ht_unequal_baffle_spacing_Bell

def ctb_unequal_baffle(baffles, baffle_spacing, baffle_spacing_in=None, baffle_spacing_out=None, laminar=False):
    """
    Compute Bell-Delaware unequal baffle spacing correction factor.

    See: https://ht.readthedocs.io/en/latest/ht.conv_tube_bank.html

    This example function is provided as-is without any representation of accuracy.

    Args:
        baffles (int): Number of baffles (-).
        baffle_spacing (float): Average baffle spacing (m).
        baffle_spacing_in (float, optional): Spacing from inlet to first baffle (m). Default is None.
        baffle_spacing_out (float, optional): Spacing from last baffle to outlet (m). Default is None.
        laminar (bool, optional): Whether laminar correction is applied (-). Default is False.

    Returns:
        float: Unequal baffle spacing correction factor, or an error message if invalid.
    """
    try:
        return ht_unequal_baffle_spacing_Bell(
            baffles=baffles,
            baffle_spacing=baffle_spacing,
            baffle_spacing_in=baffle_spacing_in,
            baffle_spacing_out=baffle_spacing_out,
            laminar=laminar,
        )
    except Exception as e:
        return f"Error: {str(e)}"

Online Calculator

Number of baffles (-).
Average baffle spacing (m).
Spacing from inlet to first baffle (m).
Spacing from last baffle to outlet (m).
Whether laminar correction is applied (-).

CTB_WALL_FACTOR

This function computes a wall-property correction factor used to adjust heat-transfer or related correlations for property differences between bulk fluid and wall conditions.

Depending on the selected property option, the factor is based on viscosity, Prandtl number, or temperature ratio, with separate heating and cooling exponents.

Excel Usage

=CTB_WALL_FACTOR(mu, mu_wall, Pr, Pr_wall, T, T_wall, mu_heating_coeff, mu_cooling_coeff, Pr_heating_coeff, Pr_cooling_coeff, T_heating_coeff, T_cooling_coeff, property_option)
  • mu (float, optional, default: null): Viscosity of bulk fluid (Pa*s).
  • mu_wall (float, optional, default: null): Viscosity at the wall (Pa*s).
  • Pr (float, optional, default: null): Prandtl number of bulk fluid (-).
  • Pr_wall (float, optional, default: null): Prandtl number at the wall (-).
  • T (float, optional, default: null): Bulk fluid temperature (K).
  • T_wall (float, optional, default: null): Wall temperature (K).
  • mu_heating_coeff (float, optional, default: 0.11): Heating coefficient for viscosity correction (-).
  • mu_cooling_coeff (float, optional, default: 0.25): Cooling coefficient for viscosity correction (-).
  • Pr_heating_coeff (float, optional, default: 0.11): Heating coefficient for Prandtl correction (-).
  • Pr_cooling_coeff (float, optional, default: 0.25): Cooling coefficient for Prandtl correction (-).
  • T_heating_coeff (float, optional, default: 0.11): Heating coefficient for temperature correction (-).
  • T_cooling_coeff (float, optional, default: 0.25): Cooling coefficient for temperature correction (-).
  • property_option (str, optional, default: “Prandtl”): Property used for correction factor (-).

Returns (float): Wall correction factor, or an error message if invalid.

Example 1: Prandtl correction for heating

Inputs:

Pr Pr_wall T T_wall property_option
1.2 1.1 300 350 Prandtl

Excel formula:

=CTB_WALL_FACTOR(1.2, 1.1, 300, 350, "Prandtl")

Expected output:

1.00962

Example 2: Viscosity correction for cooling

Inputs:

mu mu_wall T T_wall property_option
0.0008 0.0003 350 300 Viscosity

Excel formula:

=CTB_WALL_FACTOR(0.0008, 0.0003, 350, 300, "Viscosity")

Expected output:

1.11393

Example 3: Temperature ratio correction

Inputs:

T T_wall property_option
300 360 Temperature

Excel formula:

=CTB_WALL_FACTOR(300, 360, "Temperature")

Expected output:

0.980144

Example 4: Viscosity correction with defaults

Inputs:

mu mu_wall T T_wall property_option
0.001 0.0009 320 330 Viscosity

Excel formula:

=CTB_WALL_FACTOR(0.001, 0.0009, 320, 330, "Viscosity")

Expected output:

1.01166

Python Code

Show Code
from ht.conv_tube_bank import wall_factor as ht_wall_factor

def ctb_wall_factor(mu=None, mu_wall=None, Pr=None, Pr_wall=None, T=None, T_wall=None, mu_heating_coeff=0.11, mu_cooling_coeff=0.25, Pr_heating_coeff=0.11, Pr_cooling_coeff=0.25, T_heating_coeff=0.11, T_cooling_coeff=0.25, property_option='Prandtl'):
    """
    Compute wall correction factor for heat transfer properties.

    See: https://ht.readthedocs.io/en/latest/ht.conv_tube_bank.html

    This example function is provided as-is without any representation of accuracy.

    Args:
        mu (float, optional): Viscosity of bulk fluid (Pa*s). Default is None.
        mu_wall (float, optional): Viscosity at the wall (Pa*s). Default is None.
        Pr (float, optional): Prandtl number of bulk fluid (-). Default is None.
        Pr_wall (float, optional): Prandtl number at the wall (-). Default is None.
        T (float, optional): Bulk fluid temperature (K). Default is None.
        T_wall (float, optional): Wall temperature (K). Default is None.
        mu_heating_coeff (float, optional): Heating coefficient for viscosity correction (-). Default is 0.11.
        mu_cooling_coeff (float, optional): Cooling coefficient for viscosity correction (-). Default is 0.25.
        Pr_heating_coeff (float, optional): Heating coefficient for Prandtl correction (-). Default is 0.11.
        Pr_cooling_coeff (float, optional): Cooling coefficient for Prandtl correction (-). Default is 0.25.
        T_heating_coeff (float, optional): Heating coefficient for temperature correction (-). Default is 0.11.
        T_cooling_coeff (float, optional): Cooling coefficient for temperature correction (-). Default is 0.25.
        property_option (str, optional): Property used for correction factor (-). Valid options: Viscosity, Prandtl, Temperature. Default is 'Prandtl'.

    Returns:
        float: Wall correction factor, or an error message if invalid.
    """
    try:
        return ht_wall_factor(
            mu=mu,
            mu_wall=mu_wall,
            Pr=Pr,
            Pr_wall=Pr_wall,
            T=T,
            T_wall=T_wall,
            mu_heating_coeff=mu_heating_coeff,
            mu_cooling_coeff=mu_cooling_coeff,
            Pr_heating_coeff=Pr_heating_coeff,
            Pr_cooling_coeff=Pr_cooling_coeff,
            T_heating_coeff=T_heating_coeff,
            T_cooling_coeff=T_cooling_coeff,
            property_option=property_option,
        )
    except Exception as e:
        return f"Error: {str(e)}"

Online Calculator

Viscosity of bulk fluid (Pa*s).
Viscosity at the wall (Pa*s).
Prandtl number of bulk fluid (-).
Prandtl number at the wall (-).
Bulk fluid temperature (K).
Wall temperature (K).
Heating coefficient for viscosity correction (-).
Cooling coefficient for viscosity correction (-).
Heating coefficient for Prandtl correction (-).
Cooling coefficient for Prandtl correction (-).
Heating coefficient for temperature correction (-).
Cooling coefficient for temperature correction (-).
Property used for correction factor (-).

CTB_ZUK_ROW_CORR

This function computes the Zukauskas tube-row correction factor for crossflow heat transfer across finite tube banks. It adjusts heat-transfer predictions relative to the asymptotic long-bank limit.

The factor depends on row count, arrangement (staggered or inline), and Reynolds-number regime.

Excel Usage

=CTB_ZUK_ROW_CORR(tube_rows, staggered, Re)
  • tube_rows (int, required): Number of tube rows per bundle (-).
  • staggered (bool, optional, default: true): Whether the tube layout is staggered (-).
  • Re (float, optional, default: 10000): Reynolds number based on bare tube diameter (-).

Returns (float): Tube row correction factor, or an error message if invalid.

Example 1: Staggered bundle with four rows

Inputs:

tube_rows staggered
4 true

Excel formula:

=CTB_ZUK_ROW_CORR(4, TRUE)

Expected output:

0.8942

Example 2: Inline bundle with six rows

Inputs:

tube_rows staggered
6 false

Excel formula:

=CTB_ZUK_ROW_CORR(6, FALSE)

Expected output:

0.9465

Example 3: Staggered bundle at low Reynolds number

Inputs:

tube_rows staggered Re
8 true 800

Excel formula:

=CTB_ZUK_ROW_CORR(8, TRUE, 800)

Expected output:

0.9785

Example 4: Many rows with inline layout

Inputs:

tube_rows staggered Re
20 false 5000

Excel formula:

=CTB_ZUK_ROW_CORR(20, FALSE, 5000)

Expected output:

1

Python Code

Show Code
from ht.conv_tube_bank import Zukauskas_tube_row_correction as ht_Zukauskas_tube_row_correction

def ctb_zuk_row_corr(tube_rows, staggered=True, Re=10000):
    """
    Compute Zukauskas tube row correction factor for a tube bundle.

    See: https://ht.readthedocs.io/en/latest/ht.conv_tube_bank.html

    This example function is provided as-is without any representation of accuracy.

    Args:
        tube_rows (int): Number of tube rows per bundle (-).
        staggered (bool, optional): Whether the tube layout is staggered (-). Default is True.
        Re (float, optional): Reynolds number based on bare tube diameter (-). Default is 10000.

    Returns:
        float: Tube row correction factor, or an error message if invalid.
    """
    try:
        return ht_Zukauskas_tube_row_correction(
            tube_rows=tube_rows,
            staggered=staggered,
            Re=Re,
        )
    except Exception as e:
        return f"Error: {str(e)}"

Online Calculator

Number of tube rows per bundle (-).
Whether the tube layout is staggered (-).
Reynolds number based on bare tube diameter (-).