Air Cooler

Overview

Air-cooled heat exchange is a core design problem in process, power, and HVAC systems where ambient air removes heat from a process fluid through finned tube bundles. In this category, air-cooler thermal rating links heat-transfer prediction, pressure-drop estimation, and acoustic checks into one engineering workflow. These calculations matter because exchanger size, fan power, and operating cost are tightly coupled: improving thermal duty often increases airflow resistance and noise. Practical design therefore requires coordinated models rather than isolated correlations.

The shared framework uses the exchanger energy balance and corrected driving force, Q = U A F_T \Delta T_{lm}, with air-side coefficients from Nusselt-style correlations, geometry-aware fin effectiveness, and correction factors for wall properties and limited row count. Across the functions, key concepts are finned-surface augmentation, crossflow temperature correction, air-side hydrodynamics, and empirical validity ranges. Together they support early sizing, debottlenecking, and what-if analysis of retrofit options.

Implementation is based on the Python ht library, specifically ht.air_cooler. This module provides established air-cooler correlations and utility factors used in industrial thermal design, so workflows can stay transparent while remaining reproducible in spreadsheets and Python.

For thermal driving-force and correction utilities, LMTD computes the log-mean temperature difference and FT_AIRCOOLER supplies the crossflow correction factor used in air-cooler arrangements with rows and tube passes. WALL_FACTOR applies property-ratio corrections between bulk and wall conditions, which is often needed when viscosity or Prandtl number changes materially near hot or cold surfaces. ESDU_TUBE_ROW_CORR provides row-count correction behavior used by ESDU-style air-side correlations. This group is typically used first to build the corrected temperature driving force and property-adjusted basis before selecting a detailed heat-transfer correlation.

For air-side heat-transfer prediction, H_BRIGGS_YOUNG, H_ESDU_HIGH_FIN, H_ESDU_LOW_FIN, and H_GANGULI_VDI estimate finned-tube bundle coefficients under different geometric assumptions and empirical datasets. FIN_EFF_KERN_KRAUS complements these by estimating circular-fin efficiency, helping translate ideal surface area into effective heat-transfer area. In practice, engineers compare these methods to bracket uncertainty, then select a correlation consistent with fin type (high-fin vs low-fin), arrangement, and Reynolds-number range. This cluster is central for exchanger thermal rating, fan-duty tradeoff studies, and sensitivity checks during conceptual and detailed design.

For aerodynamic and mechanical-side constraints, DP_ESDU_HIGH_FIN and DP_ESDU_LOW_FIN predict air-side pressure drop through high-fin and low-fin bundles, respectively, capturing acceleration and friction effects across tube rows. Because pressure drop strongly drives fan power and operating cost, these tools are evaluated alongside the heat-transfer functions rather than afterward. Acoustic screening is handled by AIR_NOISE_GPSA and AIR_NOISE_MUKHERJEE, which estimate fan noise from tip speed, power, and fan geometry (with draft-type adjustment in the Mukherjee form). Used together, these functions support realistic design envelopes that satisfy thermal duty, hydraulic limits, and site noise constraints.

AIR_NOISE_GPSA

This function estimates the sound pressure level from an air-cooler fan using the GPSA correlation, based on blade tip speed and motor shaft power. The relation follows a logarithmic dependence on speed and power and returns the predicted noise level near the source.

\mathrm{SPL} = 56 + 30\log_{10}\!\left(\frac{v_{\text{tip}}}{304.8\ \mathrm{m/min}}\right) + 10\log_{10}(P_{\mathrm{hp}})

Excel Usage

=AIR_NOISE_GPSA(tip_speed, power)
  • tip_speed (float, required): Fan blade tip speed (m/s).
  • power (float, required): Fan shaft power (W).

Returns (float): Sound pressure level at 1 m, or an error message if invalid.

Example 1: Moderate tip speed and power

Inputs:

tip_speed power
50 15000

Excel formula:

=AIR_NOISE_GPSA(50, 15000)

Expected output:

98.8285

Example 2: Higher tip speed and power

Inputs:

tip_speed power
65 25000

Excel formula:

=AIR_NOISE_GPSA(65, 25000)

Expected output:

104.465

Example 3: Lower power fan

Inputs:

tip_speed power
45 8000

Excel formula:

=AIR_NOISE_GPSA(45, 8000)

Expected output:

94.7257

Example 4: High power fan

Inputs:

tip_speed power
55 40000

Excel formula:

=AIR_NOISE_GPSA(55, 40000)

Expected output:

104.33

Python Code

Show Code
from ht.air_cooler import air_cooler_noise_GPSA as ht_air_cooler_noise_GPSA

def air_noise_gpsa(tip_speed, power):
    """
    Compute air cooler noise using the GPSA correlation.

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

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

    Args:
        tip_speed (float): Fan blade tip speed (m/s).
        power (float): Fan shaft power (W).

    Returns:
        float: Sound pressure level at 1 m, or an error message if invalid.
    """
    try:
        return ht_air_cooler_noise_GPSA(tip_speed=tip_speed, power=power)
    except Exception as e:
        return f"Error: {str(e)}"

Online Calculator

Fan blade tip speed (m/s).
Fan shaft power (W).

AIR_NOISE_MUKHERJEE

This function predicts air-cooler fan noise using the Mukherjee correlation from tip speed, shaft power, and fan diameter, with an optional induced-draft adjustment. The model increases with speed and power and decreases with larger fan diameter.

\mathrm{SPL} = 46 + 30\log_{10}(v_{\text{tip}}) + 10\log_{10}(P_{\mathrm{hp}}) - 20\log_{10}(D_{\text{fan}})

When induced draft is selected, a 3 dB reduction is applied.

Excel Usage

=AIR_NOISE_MUKHERJEE(tip_speed, power, fan_diameter, induced)
  • tip_speed (float, required): Fan blade tip speed (m/s).
  • power (float, required): Fan shaft power (W).
  • fan_diameter (float, required): Fan diameter (m).
  • induced (bool, optional, default: false): Whether the air cooler is induced draft (true) or forced draft (false).

Returns (float): Sound pressure level at 1 m, or an error message if invalid.

Example 1: Forced draft fan

Inputs:

tip_speed power fan_diameter induced
55 20000 4 false

Excel formula:

=AIR_NOISE_MUKHERJEE(55, 20000, 4, FALSE)

Expected output:

100.454

Example 2: Induced draft fan

Inputs:

tip_speed power fan_diameter induced
55 20000 4 true

Excel formula:

=AIR_NOISE_MUKHERJEE(55, 20000, 4, TRUE)

Expected output:

97.4543

Example 3: Larger diameter fan

Inputs:

tip_speed power fan_diameter induced
50 15000 5 false

Excel formula:

=AIR_NOISE_MUKHERJEE(50, 15000, 5, FALSE)

Expected output:

96.025

Example 4: Higher power fan

Inputs:

tip_speed power fan_diameter induced
60 35000 4.5 false

Excel formula:

=AIR_NOISE_MUKHERJEE(60, 35000, 4.5, FALSE)

Expected output:

102.995

Python Code

Show Code
from ht.air_cooler import air_cooler_noise_Mukherjee as ht_air_cooler_noise_Mukherjee

def air_noise_mukherjee(tip_speed, power, fan_diameter, induced=False):
    """
    Compute air cooler noise using the Mukherjee correlation.

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

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

    Args:
        tip_speed (float): Fan blade tip speed (m/s).
        power (float): Fan shaft power (W).
        fan_diameter (float): Fan diameter (m).
        induced (bool, optional): Whether the air cooler is induced draft (true) or forced draft (false). Default is False.

    Returns:
        float: Sound pressure level at 1 m, or an error message if invalid.
    """
    try:
        return ht_air_cooler_noise_Mukherjee(
            tip_speed=tip_speed,
            power=power,
            fan_diameter=fan_diameter,
            induced=induced,
        )
    except Exception as e:
        return f"Error: {str(e)}"

Online Calculator

Fan blade tip speed (m/s).
Fan shaft power (W).
Fan diameter (m).
Whether the air cooler is induced draft (true) or forced draft (false).

DP_ESDU_HIGH_FIN

This function computes air-side pressure drop across high-fin tube bundles using the ESDU approach. It combines an acceleration term and a friction term that scales with Reynolds number, geometric pitch ratios, and tube-row count.

\Delta P = (K_{\text{acc}} + n_{\text{rows}}K_f)\,\frac{1}{2}\rho v_{\max}^2

The method is intended for turbulent crossflow through finned tube banks and uses minimum-flow-area velocity conditions.

Excel Usage

=DP_ESDU_HIGH_FIN(m, A_min, A_increase, flow_area_contraction_ratio, tube_diameter, pitch_parallel, pitch_normal, tube_rows, rho, mu)
  • m (float, required): Mass flow rate across the tube bank (kg/s).
  • A_min (float, required): Minimum flow area (m^2).
  • A_increase (float, required): Surface area ratio relative to bare tube (-).
  • flow_area_contraction_ratio (float, required): Ratio of minimum to face area (-).
  • tube_diameter (float, required): Bare tube diameter (m).
  • pitch_parallel (float, required): Tube pitch parallel to flow (m).
  • pitch_normal (float, required): Tube pitch normal to flow (m).
  • tube_rows (int, required): Number of tube rows (-).
  • rho (float, required): Air density (kg/m^3).
  • mu (float, required): Air viscosity (Pa*s).

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

Example 1: Baseline high-fin tube bank

Inputs:

m A_min A_increase flow_area_contraction_ratio tube_diameter pitch_parallel pitch_normal tube_rows rho mu
1.2 4 12 0.4 0.02 0.05 0.06 4 1.2 0.000018

Excel formula:

=DP_ESDU_HIGH_FIN(1.2, 4, 12, 0.4, 0.02, 0.05, 0.06, 4, 1.2, 0.000018)

Expected output:

0.279233

Example 2: Higher flow rate and larger tubes

Inputs:

m A_min A_increase flow_area_contraction_ratio tube_diameter pitch_parallel pitch_normal tube_rows rho mu
2 5 10 0.5 0.025 0.06 0.07 6 1.1 0.000019

Excel formula:

=DP_ESDU_HIGH_FIN(2, 5, 10, 0.5, 0.025, 0.06, 0.07, 6, 1.1, 0.000019)

Expected output:

0.678684

Example 3: Compact bundle geometry

Inputs:

m A_min A_increase flow_area_contraction_ratio tube_diameter pitch_parallel pitch_normal tube_rows rho mu
0.8 3.5 14 0.35 0.016 0.045 0.055 3 1.25 0.000017

Excel formula:

=DP_ESDU_HIGH_FIN(0.8, 3.5, 14, 0.35, 0.016, 0.045, 0.055, 3, 1.25, 0.000017)

Expected output:

0.128936

Example 4: Many rows with moderate flow

Inputs:

m A_min A_increase flow_area_contraction_ratio tube_diameter pitch_parallel pitch_normal tube_rows rho mu
1.5 4.5 11 0.45 0.018 0.052 0.062 8 1.18 0.0000185

Excel formula:

=DP_ESDU_HIGH_FIN(1.5, 4.5, 11, 0.45, 0.018, 0.052, 0.062, 8, 1.18, 0.0000185)

Expected output:

0.556944

Python Code

Show Code
from ht.air_cooler import dP_ESDU_high_fin as ht_dP_ESDU_high_fin

def dP_ESDU_high_fin(m, A_min, A_increase, flow_area_contraction_ratio, tube_diameter, pitch_parallel, pitch_normal, tube_rows, rho, mu):
    """
    Compute air-side pressure drop for high-fin tube banks.

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

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

    Args:
        m (float): Mass flow rate across the tube bank (kg/s).
        A_min (float): Minimum flow area (m^2).
        A_increase (float): Surface area ratio relative to bare tube (-).
        flow_area_contraction_ratio (float): Ratio of minimum to face area (-).
        tube_diameter (float): Bare tube diameter (m).
        pitch_parallel (float): Tube pitch parallel to flow (m).
        pitch_normal (float): Tube pitch normal to flow (m).
        tube_rows (int): Number of tube rows (-).
        rho (float): Air density (kg/m^3).
        mu (float): Air viscosity (Pa*s).

    Returns:
        float: Pressure drop across the finned tube bank (Pa), or an error message if invalid.
    """
    try:
        return ht_dP_ESDU_high_fin(
            m=m,
            A_min=A_min,
            A_increase=A_increase,
            flow_area_contraction_ratio=flow_area_contraction_ratio,
            tube_diameter=tube_diameter,
            pitch_parallel=pitch_parallel,
            pitch_normal=pitch_normal,
            tube_rows=tube_rows,
            rho=rho,
            mu=mu,
        )
    except Exception as e:
        return f"Error: {str(e)}"

Online Calculator

Mass flow rate across the tube bank (kg/s).
Minimum flow area (m^2).
Surface area ratio relative to bare tube (-).
Ratio of minimum to face area (-).
Bare tube diameter (m).
Tube pitch parallel to flow (m).
Tube pitch normal to flow (m).
Number of tube rows (-).
Air density (kg/m^3).
Air viscosity (Pa*s).

DP_ESDU_LOW_FIN

This function evaluates air-side pressure drop for low-fin tube banks using the ESDU correlation. The calculation includes both acceleration and friction contributions, with friction affected by Reynolds number, fin-to-bare-length ratio, and pitch geometry.

\Delta P = (K_{\text{acc}} + n_{\text{rows}}K_f)\,\frac{1}{2}\rho v_{\max}^2

It is suited to low-fin crossflow geometries and uses flow properties referenced to the bundle minimum flow area.

Excel Usage

=DP_ESDU_LOW_FIN(m, A_min, A_increase, flow_area_contraction_ratio, tube_diameter, fin_height, bare_length, pitch_parallel, pitch_normal, tube_rows, rho, mu)
  • m (float, required): Mass flow rate across the tube bank (kg/s).
  • A_min (float, required): Minimum flow area (m^2).
  • A_increase (float, required): Surface area ratio relative to bare tube (-).
  • flow_area_contraction_ratio (float, required): Ratio of minimum to face area (-).
  • tube_diameter (float, required): Bare tube diameter (m).
  • fin_height (float, required): Fin height above the bare tube (m).
  • bare_length (float, required): Bare tube length between fins (m).
  • pitch_parallel (float, required): Tube pitch parallel to flow (m).
  • pitch_normal (float, required): Tube pitch normal to flow (m).
  • tube_rows (int, required): Number of tube rows (-).
  • rho (float, required): Air density (kg/m^3).
  • mu (float, required): Air viscosity (Pa*s).

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

Example 1: Baseline low-fin tube bank

Inputs:

m A_min A_increase flow_area_contraction_ratio tube_diameter fin_height bare_length pitch_parallel pitch_normal tube_rows rho mu
1.1 3.8 11.5 0.42 0.02 0.004 0.0025 0.05 0.06 4 1.2 0.000018

Excel formula:

=DP_ESDU_LOW_FIN(1.1, 3.8, 11.5, 0.42, 0.02, 0.004, 0.0025, 0.05, 0.06, 4, 1.2, 0.000018)

Expected output:

0.187157

Example 2: Higher flow rate and larger tubes

Inputs:

m A_min A_increase flow_area_contraction_ratio tube_diameter fin_height bare_length pitch_parallel pitch_normal tube_rows rho mu
1.9 4.8 9.8 0.5 0.025 0.005 0.003 0.06 0.07 6 1.1 0.000019

Excel formula:

=DP_ESDU_LOW_FIN(1.9, 4.8, 9.8, 0.5, 0.025, 0.005, 0.003, 0.06, 0.07, 6, 1.1, 0.000019)

Expected output:

0.494035

Example 3: Compact bundle geometry

Inputs:

m A_min A_increase flow_area_contraction_ratio tube_diameter fin_height bare_length pitch_parallel pitch_normal tube_rows rho mu
0.9 3.4 13.5 0.36 0.016 0.0035 0.002 0.045 0.055 3 1.25 0.000017

Excel formula:

=DP_ESDU_LOW_FIN(0.9, 3.4, 13.5, 0.36, 0.016, 0.0035, 0.002, 0.045, 0.055, 3, 1.25, 0.000017)

Expected output:

0.124318

Example 4: Many rows with moderate flow

Inputs:

m A_min A_increase flow_area_contraction_ratio tube_diameter fin_height bare_length pitch_parallel pitch_normal tube_rows rho mu
1.4 4.2 10.8 0.45 0.018 0.0042 0.0028 0.052 0.062 8 1.18 0.0000185

Excel formula:

=DP_ESDU_LOW_FIN(1.4, 4.2, 10.8, 0.45, 0.018, 0.0042, 0.0028, 0.052, 0.062, 8, 1.18, 0.0000185)

Expected output:

0.404805

Python Code

Show Code
from ht.air_cooler import dP_ESDU_low_fin as ht_dP_ESDU_low_fin

def dP_ESDU_low_fin(m, A_min, A_increase, flow_area_contraction_ratio, tube_diameter, fin_height, bare_length, pitch_parallel, pitch_normal, tube_rows, rho, mu):
    """
    Compute air-side pressure drop for low-fin tube banks.

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

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

    Args:
        m (float): Mass flow rate across the tube bank (kg/s).
        A_min (float): Minimum flow area (m^2).
        A_increase (float): Surface area ratio relative to bare tube (-).
        flow_area_contraction_ratio (float): Ratio of minimum to face area (-).
        tube_diameter (float): Bare tube diameter (m).
        fin_height (float): Fin height above the bare tube (m).
        bare_length (float): Bare tube length between fins (m).
        pitch_parallel (float): Tube pitch parallel to flow (m).
        pitch_normal (float): Tube pitch normal to flow (m).
        tube_rows (int): Number of tube rows (-).
        rho (float): Air density (kg/m^3).
        mu (float): Air viscosity (Pa*s).

    Returns:
        float: Pressure drop across the finned tube bank (Pa), or an error message if invalid.
    """
    try:
        return ht_dP_ESDU_low_fin(
            m=m,
            A_min=A_min,
            A_increase=A_increase,
            flow_area_contraction_ratio=flow_area_contraction_ratio,
            tube_diameter=tube_diameter,
            fin_height=fin_height,
            bare_length=bare_length,
            pitch_parallel=pitch_parallel,
            pitch_normal=pitch_normal,
            tube_rows=tube_rows,
            rho=rho,
            mu=mu,
        )
    except Exception as e:
        return f"Error: {str(e)}"

Online Calculator

Mass flow rate across the tube bank (kg/s).
Minimum flow area (m^2).
Surface area ratio relative to bare tube (-).
Ratio of minimum to face area (-).
Bare tube diameter (m).
Fin height above the bare tube (m).
Bare tube length between fins (m).
Tube pitch parallel to flow (m).
Tube pitch normal to flow (m).
Number of tube rows (-).
Air density (kg/m^3).
Air viscosity (Pa*s).

ESDU_TUBE_ROW_CORR

This function returns the ESDU tube-row correction factor used in crossflow tube-bank heat-transfer correlations. The correction depends on row count and whether the layout is staggered or inline, and approaches 1 for larger row counts.

The optional Reynolds-number input is included for interface compatibility, but in this implementation it does not change the tabulated correction value.

Excel Usage

=ESDU_TUBE_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:

=ESDU_TUBE_ROW_CORR(4, TRUE)

Expected output:

0.8984

Example 2: Inline bundle with six rows

Inputs:

tube_rows staggered
6 false

Excel formula:

=ESDU_TUBE_ROW_CORR(6, FALSE)

Expected output:

0.9551

Example 3: Ten rows at higher Reynolds number

Inputs:

tube_rows staggered Re
10 true 8000

Excel formula:

=ESDU_TUBE_ROW_CORR(10, TRUE, 8000)

Expected output:

1

Example 4: Single row with default method

Inputs:

tube_rows staggered Re
1 true 4500

Excel formula:

=ESDU_TUBE_ROW_CORR(1, TRUE, 4500)

Expected output:

0.8593

Python Code

Show Code
from ht.air_cooler import ESDU_tube_row_correction as ht_ESDU_tube_row_correction

def esdu_tube_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.air_cooler.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 (-).

FIN_EFF_KERN_KRAUS

This function computes circular-fin efficiency for a constant-thickness fin attached to a tube, using the Kern-Kraus formulation with modified Bessel functions. It quantifies how effectively the fin transfers heat relative to an ideal isothermal fin.

\eta_f = \frac{2r_o}{m(r_e^2-r_o^2)}\left[\frac{I_1(mr_e)K_1(mr_o)-K_1(mr_e)I_1(mr_o)}{I_0(mr_o)K_1(mr_e)+I_1(mr_e)K_0(mr_o)}\right],\quad m=\sqrt{\frac{2h}{k_{\text{fin}}t_{\text{fin}}}}

Efficiency decreases as convection strength increases relative to fin conduction capability.

Excel Usage

=FIN_EFF_KERN_KRAUS(Do, D_fin, t_fin, k_fin, h)
  • Do (float, required): Bare tube outer diameter (m).
  • D_fin (float, required): Fin outer diameter (m).
  • t_fin (float, required): Fin thickness (m).
  • k_fin (float, required): Fin thermal conductivity (W/m/K).
  • h (float, required): Heat transfer coefficient (W/m^2/K).

Returns (float): Fin efficiency, or an error message if invalid.

Example 1: Baseline fin geometry

Inputs:

Do D_fin t_fin k_fin h
0.0254 0.05715 0.00038 200 58

Excel formula:

=FIN_EFF_KERN_KRAUS(0.0254, 0.05715, 0.00038, 200, 58)

Expected output:

0.841259

Example 2: Thicker fin with higher conductivity

Inputs:

Do D_fin t_fin k_fin h
0.03 0.07 0.0006 230 65

Excel formula:

=FIN_EFF_KERN_KRAUS(0.03, 0.07, 0.0006, 230, 65)

Expected output:

0.841518

Example 3: Smaller fin diameter

Inputs:

Do D_fin t_fin k_fin h
0.02 0.045 0.0004 180 50

Excel formula:

=FIN_EFF_KERN_KRAUS(0.02, 0.045, 0.0004, 180, 50)

Expected output:

0.902913

Example 4: Higher heat transfer coefficient

Inputs:

Do D_fin t_fin k_fin h
0.025 0.06 0.00035 205 90

Excel formula:

=FIN_EFF_KERN_KRAUS(0.025, 0.06, 0.00035, 205, 90)

Expected output:

0.724212

Python Code

Show Code
from ht.air_cooler import fin_efficiency_Kern_Kraus as ht_fin_efficiency_Kern_Kraus

def fin_eff_kern_kraus(Do, D_fin, t_fin, k_fin, h):
    """
    Compute circular fin efficiency for constant-thickness fins.

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

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

    Args:
        Do (float): Bare tube outer diameter (m).
        D_fin (float): Fin outer diameter (m).
        t_fin (float): Fin thickness (m).
        k_fin (float): Fin thermal conductivity (W/m/K).
        h (float): Heat transfer coefficient (W/m^2/K).

    Returns:
        float: Fin efficiency, or an error message if invalid.
    """
    try:
        return ht_fin_efficiency_Kern_Kraus(
            Do=Do,
            D_fin=D_fin,
            t_fin=t_fin,
            k_fin=k_fin,
            h=h,
        )
    except Exception as e:
        return f"Error: {str(e)}"

Online Calculator

Bare tube outer diameter (m).
Fin outer diameter (m).
Fin thickness (m).
Fin thermal conductivity (W/m/K).
Heat transfer coefficient (W/m^2/K).

FT_AIRCOOLER

This function calculates the log-mean temperature-difference correction factor F_T for air-cooler style crossflow exchangers. It uses a fitted explicit relation based on stream temperatures, tube-pass count, and row count.

The correction factor adjusts ideal LMTD to account for non-ideal exchanger flow arrangement:

\Delta T_{\text{effective}} = F_T\,\Delta T_{\text{LMTD,ideal}}

This is useful for thermal design and rating when exchanger geometry departs from true countercurrent flow.

Excel Usage

=FT_AIRCOOLER(Thi, Tho, Tci, Tco, Ntp, rows)
  • Thi (float, required): Hot fluid inlet temperature (K).
  • Tho (float, required): Hot fluid outlet temperature (K).
  • Tci (float, required): Cold fluid inlet temperature (K).
  • Tco (float, required): Cold fluid outlet temperature (K).
  • Ntp (int, optional, default: 1): Number of tube passes (-).
  • rows (int, optional, default: 1): Number of tube rows (-).

Returns (float): Log-mean temperature difference correction factor, or an error message if invalid.

Example 1: Four rows with one pass

Inputs:

Thi Tho Tci Tco Ntp rows
125 45 25 95 1 4

Excel formula:

=FT_AIRCOOLER(125, 45, 25, 95, 1, 4)

Expected output:

0.550509

Example 2: Two rows with two passes

Inputs:

Thi Tho Tci Tco Ntp rows
180 90 30 120 2 2

Excel formula:

=FT_AIRCOOLER(180, 90, 30, 120, 2, 2)

Expected output:

0.901058

Example 3: Three rows with one pass

Inputs:

Thi Tho Tci Tco Ntp rows
150 70 40 110 1 3

Excel formula:

=FT_AIRCOOLER(150, 70, 40, 110, 1, 3)

Expected output:

0.664608

Example 4: Single row with one pass

Inputs:

Thi Tho Tci Tco Ntp rows
110 60 20 80 1 1

Excel formula:

=FT_AIRCOOLER(110, 60, 20, 80, 1, 1)

Expected output:

0.532634

Python Code

Show Code
from ht.air_cooler import Ft_aircooler as ht_Ft_aircooler

def Ft_aircooler(Thi, Tho, Tci, Tco, Ntp=1, rows=1):
    """
    Compute the LMTD correction factor for an air cooler crossflow exchanger.

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

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

    Args:
        Thi (float): Hot fluid inlet temperature (K).
        Tho (float): Hot fluid outlet temperature (K).
        Tci (float): Cold fluid inlet temperature (K).
        Tco (float): Cold fluid outlet temperature (K).
        Ntp (int, optional): Number of tube passes (-). Default is 1.
        rows (int, optional): Number of tube rows (-). Default is 1.

    Returns:
        float: Log-mean temperature difference correction factor, or an error message if invalid.
    """
    try:
        return ht_Ft_aircooler(Thi=Thi, Tho=Tho, Tci=Tci, Tco=Tco, Ntp=Ntp, rows=rows)
    except Exception as e:
        return f"Error: {str(e)}"

Online Calculator

Hot fluid inlet temperature (K).
Hot fluid outlet temperature (K).
Cold fluid inlet temperature (K).
Cold fluid outlet temperature (K).
Number of tube passes (-).
Number of tube rows (-).

H_BRIGGS_YOUNG

This function computes the air-side heat-transfer coefficient for finned tube bundles using the Briggs-Young correlation. It evaluates a Nusselt-number relationship based on Reynolds and Prandtl numbers together with geometric fin-spacing ratios, then reports the result on a bare-tube area basis.

Nu = 0.134\,Re^{0.681}Pr^{0.33}\left(\frac{S}{h_f}\right)^{0.2}\left(\frac{S}{b}\right)^{0.1134}

The output is intended for forced-convection crossflow over finned tube banks.

Excel Usage

=H_BRIGGS_YOUNG(m, A, A_min, A_increase, A_fin, A_tube_showing, tube_diameter, fin_diameter, fin_thickness, bare_length, rho, Cp, mu, k, k_fin)
  • m (float, required): Mass flow rate across the tube bank (kg/s).
  • A (float, required): Total exposed surface area (m^2).
  • A_min (float, required): Minimum flow area (m^2).
  • A_increase (float, required): Surface area ratio relative to bare tube (-).
  • A_fin (float, required): Total fin surface area (m^2).
  • A_tube_showing (float, required): Exposed bare tube area (m^2).
  • tube_diameter (float, required): Bare tube diameter (m).
  • fin_diameter (float, required): Finned tube outer diameter (m).
  • fin_thickness (float, required): Fin thickness (m).
  • bare_length (float, required): Bare tube length between fins (m).
  • rho (float, required): Air density (kg/m^3).
  • Cp (float, required): Air heat capacity (J/kg/K).
  • mu (float, required): Air viscosity (Pa*s).
  • k (float, required): Air thermal conductivity (W/m/K).
  • k_fin (float, required): Fin thermal conductivity (W/m/K).

Returns (float): Heat transfer coefficient on a bare-tube basis (W/m^2/K), or an error message if invalid.

Example 1: Baseline bundle properties

Inputs:

m A A_min A_increase A_fin A_tube_showing tube_diameter fin_diameter fin_thickness bare_length rho Cp mu k k_fin
1.2 40 4 12 35 5 0.02 0.05 0.001 0.003 1.2 1005 0.000018 0.026 200

Excel formula:

=H_BRIGGS_YOUNG(1.2, 40, 4, 12, 35, 5, 0.02, 0.05, 0.001, 0.003, 1.2, 1005, 0.000018, 0.026, 200)

Expected output:

78.9099

Example 2: Higher flow rate and larger fin diameter

Inputs:

m A A_min A_increase A_fin A_tube_showing tube_diameter fin_diameter fin_thickness bare_length rho Cp mu k k_fin
2 55 5 10 48 7 0.025 0.06 0.0012 0.0035 1.1 1010 0.000019 0.027 210

Excel formula:

=H_BRIGGS_YOUNG(2, 55, 5, 10, 48, 7, 0.025, 0.06, 0.0012, 0.0035, 1.1, 1010, 0.000019, 0.027, 210)

Expected output:

74.7508

Example 3: Compact geometry with lower flow

Inputs:

m A A_min A_increase A_fin A_tube_showing tube_diameter fin_diameter fin_thickness bare_length rho Cp mu k k_fin
0.9 32 3.5 13 28 4 0.016 0.045 0.0009 0.0025 1.25 1000 0.000017 0.025 180

Excel formula:

=H_BRIGGS_YOUNG(0.9, 32, 3.5, 13, 28, 4, 0.016, 0.045, 0.0009, 0.0025, 1.25, 1000, 0.000017, 0.025, 180)

Expected output:

78.8332

Example 4: Higher fin conductivity case

Inputs:

m A A_min A_increase A_fin A_tube_showing tube_diameter fin_diameter fin_thickness bare_length rho Cp mu k k_fin
1.5 45 4.5 11 38 7 0.018 0.055 0.0011 0.0032 1.18 1008 0.0000185 0.0265 240

Excel formula:

=H_BRIGGS_YOUNG(1.5, 45, 4.5, 11, 38, 7, 0.018, 0.055, 0.0011, 0.0032, 1.18, 1008, 0.0000185, 0.0265, 240)

Expected output:

77.9519

Python Code

Show Code
from ht.air_cooler import h_Briggs_Young as ht_h_Briggs_Young

def h_Briggs_Young(m, A, A_min, A_increase, A_fin, A_tube_showing, tube_diameter, fin_diameter, fin_thickness, bare_length, rho, Cp, mu, k, k_fin):
    """
    Compute air-side heat transfer coefficient using Briggs and Young correlations.

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

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

    Args:
        m (float): Mass flow rate across the tube bank (kg/s).
        A (float): Total exposed surface area (m^2).
        A_min (float): Minimum flow area (m^2).
        A_increase (float): Surface area ratio relative to bare tube (-).
        A_fin (float): Total fin surface area (m^2).
        A_tube_showing (float): Exposed bare tube area (m^2).
        tube_diameter (float): Bare tube diameter (m).
        fin_diameter (float): Finned tube outer diameter (m).
        fin_thickness (float): Fin thickness (m).
        bare_length (float): Bare tube length between fins (m).
        rho (float): Air density (kg/m^3).
        Cp (float): Air heat capacity (J/kg/K).
        mu (float): Air viscosity (Pa*s).
        k (float): Air thermal conductivity (W/m/K).
        k_fin (float): Fin thermal conductivity (W/m/K).

    Returns:
        float: Heat transfer coefficient on a bare-tube basis (W/m^2/K), or an error message if invalid.
    """
    try:
        return ht_h_Briggs_Young(
            m=m,
            A=A,
            A_min=A_min,
            A_increase=A_increase,
            A_fin=A_fin,
            A_tube_showing=A_tube_showing,
            tube_diameter=tube_diameter,
            fin_diameter=fin_diameter,
            fin_thickness=fin_thickness,
            bare_length=bare_length,
            rho=rho,
            Cp=Cp,
            mu=mu,
            k=k,
            k_fin=k_fin,
        )
    except Exception as e:
        return f"Error: {str(e)}"

Online Calculator

Mass flow rate across the tube bank (kg/s).
Total exposed surface area (m^2).
Minimum flow area (m^2).
Surface area ratio relative to bare tube (-).
Total fin surface area (m^2).
Exposed bare tube area (m^2).
Bare tube diameter (m).
Finned tube outer diameter (m).
Fin thickness (m).
Bare tube length between fins (m).
Air density (kg/m^3).
Air heat capacity (J/kg/K).
Air viscosity (Pa*s).
Air thermal conductivity (W/m/K).
Fin thermal conductivity (W/m/K).

H_ESDU_HIGH_FIN

This function estimates air-side heat-transfer coefficient for high-fin tube banks using the ESDU formulation. The method computes a Nusselt correlation with Reynolds and Prandtl dependence plus correction factors for wall-property effects and tube-row count.

Nu = 0.242\,Re^{0.658}\left(\frac{\text{bare length}}{\text{fin height}}\right)^{0.297}\left(\frac{p_1}{p_2}\right)^{-0.091}Pr^{1/3}F_1F_2

The returned coefficient is converted to a bare-tube reference basis using fin efficiency and area-ratio terms.

Excel Usage

=H_ESDU_HIGH_FIN(m, A, A_min, A_increase, A_fin, A_tube_showing, tube_diameter, fin_diameter, fin_thickness, bare_length, pitch_parallel, pitch_normal, tube_rows, rho, Cp, mu, k, k_fin, Pr_wall)
  • m (float, required): Mass flow rate across the tube bank (kg/s).
  • A (float, required): Total exposed surface area (m^2).
  • A_min (float, required): Minimum flow area (m^2).
  • A_increase (float, required): Surface area ratio relative to bare tube (-).
  • A_fin (float, required): Total fin surface area (m^2).
  • A_tube_showing (float, required): Exposed bare tube area (m^2).
  • tube_diameter (float, required): Bare tube diameter (m).
  • fin_diameter (float, required): Finned tube outer diameter (m).
  • fin_thickness (float, required): Fin thickness (m).
  • bare_length (float, required): Bare tube length between fins (m).
  • pitch_parallel (float, required): Tube pitch parallel to flow (m).
  • pitch_normal (float, required): Tube pitch normal to flow (m).
  • tube_rows (int, required): Number of tube rows (-).
  • rho (float, required): Air density (kg/m^3).
  • Cp (float, required): Air heat capacity (J/kg/K).
  • mu (float, required): Air viscosity (Pa*s).
  • k (float, required): Air thermal conductivity (W/m/K).
  • k_fin (float, required): Fin thermal conductivity (W/m/K).
  • Pr_wall (float, optional, default: null): Prandtl number at wall temperature (-).

Returns (float): Heat transfer coefficient on a bare-tube basis (W/m^2/K), or an error message if invalid.

Example 1: Baseline high-fin bundle

Inputs:

m A A_min A_increase A_fin A_tube_showing tube_diameter fin_diameter fin_thickness bare_length pitch_parallel pitch_normal tube_rows rho Cp mu k k_fin
1.2 40 4 12 35 5 0.02 0.05 0.001 0.003 0.05 0.06 4 1.2 1005 0.000018 0.026 200

Excel formula:

=H_ESDU_HIGH_FIN(1.2, 40, 4, 12, 35, 5, 0.02, 0.05, 0.001, 0.003, 0.05, 0.06, 4, 1.2, 1005, 0.000018, 0.026, 200)

Expected output:

92.5103

Example 2: Higher flow rate and larger pitch

Inputs:

m A A_min A_increase A_fin A_tube_showing tube_diameter fin_diameter fin_thickness bare_length pitch_parallel pitch_normal tube_rows rho Cp mu k k_fin
2 55 5 10 48 7 0.025 0.06 0.0012 0.0035 0.06 0.07 6 1.1 1010 0.000019 0.027 210

Excel formula:

=H_ESDU_HIGH_FIN(2, 55, 5, 10, 48, 7, 0.025, 0.06, 0.0012, 0.0035, 0.06, 0.07, 6, 1.1, 1010, 0.000019, 0.027, 210)

Expected output:

87.2028

Example 3: Compact geometry with lower flow

Inputs:

m A A_min A_increase A_fin A_tube_showing tube_diameter fin_diameter fin_thickness bare_length pitch_parallel pitch_normal tube_rows rho Cp mu k k_fin
0.9 32 3.5 13 28 4 0.016 0.045 0.0009 0.0025 0.045 0.055 3 1.25 1000 0.000017 0.025 180

Excel formula:

=H_ESDU_HIGH_FIN(0.9, 32, 3.5, 13, 28, 4, 0.016, 0.045, 0.0009, 0.0025, 0.045, 0.055, 3, 1.25, 1000, 0.000017, 0.025, 180)

Expected output:

85.0774

Example 4: Wall Prandtl correction applied

Inputs:

m A A_min A_increase A_fin A_tube_showing tube_diameter fin_diameter fin_thickness bare_length pitch_parallel pitch_normal tube_rows rho Cp mu k k_fin Pr_wall
1.5 45 4.5 11 38 7 0.018 0.055 0.0011 0.0032 0.052 0.062 5 1.18 1008 0.0000185 0.0265 240 0.72

Excel formula:

=H_ESDU_HIGH_FIN(1.5, 45, 4.5, 11, 38, 7, 0.018, 0.055, 0.0011, 0.0032, 0.052, 0.062, 5, 1.18, 1008, 0.0000185, 0.0265, 240, 0.72)

Expected output:

89.9773

Python Code

Show Code
from ht.air_cooler import h_ESDU_high_fin as ht_h_ESDU_high_fin

def h_ESDU_high_fin(m, A, A_min, A_increase, A_fin, A_tube_showing, tube_diameter, fin_diameter, fin_thickness, bare_length, pitch_parallel, pitch_normal, tube_rows, rho, Cp, mu, k, k_fin, Pr_wall=None):
    """
    Compute air-side heat transfer coefficient for high-fin tube banks.

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

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

    Args:
        m (float): Mass flow rate across the tube bank (kg/s).
        A (float): Total exposed surface area (m^2).
        A_min (float): Minimum flow area (m^2).
        A_increase (float): Surface area ratio relative to bare tube (-).
        A_fin (float): Total fin surface area (m^2).
        A_tube_showing (float): Exposed bare tube area (m^2).
        tube_diameter (float): Bare tube diameter (m).
        fin_diameter (float): Finned tube outer diameter (m).
        fin_thickness (float): Fin thickness (m).
        bare_length (float): Bare tube length between fins (m).
        pitch_parallel (float): Tube pitch parallel to flow (m).
        pitch_normal (float): Tube pitch normal to flow (m).
        tube_rows (int): Number of tube rows (-).
        rho (float): Air density (kg/m^3).
        Cp (float): Air heat capacity (J/kg/K).
        mu (float): Air viscosity (Pa*s).
        k (float): Air thermal conductivity (W/m/K).
        k_fin (float): Fin thermal conductivity (W/m/K).
        Pr_wall (float, optional): Prandtl number at wall temperature (-). Default is None.

    Returns:
        float: Heat transfer coefficient on a bare-tube basis (W/m^2/K), or an error message if invalid.
    """
    try:
        return ht_h_ESDU_high_fin(
            m=m,
            A=A,
            A_min=A_min,
            A_increase=A_increase,
            A_fin=A_fin,
            A_tube_showing=A_tube_showing,
            tube_diameter=tube_diameter,
            fin_diameter=fin_diameter,
            fin_thickness=fin_thickness,
            bare_length=bare_length,
            pitch_parallel=pitch_parallel,
            pitch_normal=pitch_normal,
            tube_rows=tube_rows,
            rho=rho,
            Cp=Cp,
            mu=mu,
            k=k,
            k_fin=k_fin,
            Pr_wall=Pr_wall,
        )
    except Exception as e:
        return f"Error: {str(e)}"

Online Calculator

Mass flow rate across the tube bank (kg/s).
Total exposed surface area (m^2).
Minimum flow area (m^2).
Surface area ratio relative to bare tube (-).
Total fin surface area (m^2).
Exposed bare tube area (m^2).
Bare tube diameter (m).
Finned tube outer diameter (m).
Fin thickness (m).
Bare tube length between fins (m).
Tube pitch parallel to flow (m).
Tube pitch normal to flow (m).
Number of tube rows (-).
Air density (kg/m^3).
Air heat capacity (J/kg/K).
Air viscosity (Pa*s).
Air thermal conductivity (W/m/K).
Fin thermal conductivity (W/m/K).
Prandtl number at wall temperature (-).

H_ESDU_LOW_FIN

This function calculates air-side heat-transfer coefficient for low-fin tube banks with the ESDU low-fin correlation. It uses Reynolds, Prandtl, and geometry ratios with optional wall-property correction and tube-row correction factors.

Nu = 0.183\,Re^{0.7}\left(\frac{\text{bare length}}{\text{fin height}}\right)^{0.36}\left(\frac{p_1}{D_o}\right)^{0.06}\left(\frac{\text{fin height}}{D_o}\right)^{0.11}Pr^{0.36}F_1F_2

The reported value is expressed on a bare-tube basis after applying fin/area transformations.

Excel Usage

=H_ESDU_LOW_FIN(m, A, A_min, A_increase, A_fin, A_tube_showing, tube_diameter, fin_diameter, fin_thickness, bare_length, pitch_parallel, pitch_normal, tube_rows, rho, Cp, mu, k, k_fin, Pr_wall)
  • m (float, required): Mass flow rate across the tube bank (kg/s).
  • A (float, required): Total exposed surface area (m^2).
  • A_min (float, required): Minimum flow area (m^2).
  • A_increase (float, required): Surface area ratio relative to bare tube (-).
  • A_fin (float, required): Total fin surface area (m^2).
  • A_tube_showing (float, required): Exposed bare tube area (m^2).
  • tube_diameter (float, required): Bare tube diameter (m).
  • fin_diameter (float, required): Finned tube outer diameter (m).
  • fin_thickness (float, required): Fin thickness (m).
  • bare_length (float, required): Bare tube length between fins (m).
  • pitch_parallel (float, required): Tube pitch parallel to flow (m).
  • pitch_normal (float, required): Tube pitch normal to flow (m).
  • tube_rows (int, required): Number of tube rows (-).
  • rho (float, required): Air density (kg/m^3).
  • Cp (float, required): Air heat capacity (J/kg/K).
  • mu (float, required): Air viscosity (Pa*s).
  • k (float, required): Air thermal conductivity (W/m/K).
  • k_fin (float, required): Fin thermal conductivity (W/m/K).
  • Pr_wall (float, optional, default: null): Prandtl number at wall temperature (-).

Returns (float): Heat transfer coefficient on a bare-tube basis (W/m^2/K), or an error message if invalid.

Example 1: Baseline low-fin bundle

Inputs:

m A A_min A_increase A_fin A_tube_showing tube_diameter fin_diameter fin_thickness bare_length pitch_parallel pitch_normal tube_rows rho Cp mu k k_fin
1.1 36 3.8 11.5 30 6 0.02 0.048 0.001 0.003 0.05 0.06 4 1.2 1005 0.000018 0.026 200

Excel formula:

=H_ESDU_LOW_FIN(1.1, 36, 3.8, 11.5, 30, 6, 0.02, 0.048, 0.001, 0.003, 0.05, 0.06, 4, 1.2, 1005, 0.000018, 0.026, 200)

Expected output:

62.1053

Example 2: Higher flow rate and larger pitch

Inputs:

m A A_min A_increase A_fin A_tube_showing tube_diameter fin_diameter fin_thickness bare_length pitch_parallel pitch_normal tube_rows rho Cp mu k k_fin
1.9 50 4.8 9.8 41 9 0.025 0.058 0.0012 0.0035 0.06 0.07 6 1.1 1010 0.000019 0.027 210

Excel formula:

=H_ESDU_LOW_FIN(1.9, 50, 4.8, 9.8, 41, 9, 0.025, 0.058, 0.0012, 0.0035, 0.06, 0.07, 6, 1.1, 1010, 0.000019, 0.027, 210)

Expected output:

64.8819

Example 3: Compact geometry with lower flow

Inputs:

m A A_min A_increase A_fin A_tube_showing tube_diameter fin_diameter fin_thickness bare_length pitch_parallel pitch_normal tube_rows rho Cp mu k k_fin
0.9 30 3.4 13.5 25 5 0.016 0.043 0.0009 0.0025 0.045 0.055 3 1.25 1000 0.000017 0.025 180

Excel formula:

=H_ESDU_LOW_FIN(0.9, 30, 3.4, 13.5, 25, 5, 0.016, 0.043, 0.0009, 0.0025, 0.045, 0.055, 3, 1.25, 1000, 0.000017, 0.025, 180)

Expected output:

66.5522

Example 4: Wall Prandtl correction applied

Inputs:

m A A_min A_increase A_fin A_tube_showing tube_diameter fin_diameter fin_thickness bare_length pitch_parallel pitch_normal tube_rows rho Cp mu k k_fin Pr_wall
1.4 42 4.2 10.8 35 7 0.018 0.052 0.0011 0.0032 0.052 0.062 5 1.18 1008 0.0000185 0.0265 240 0.75

Excel formula:

=H_ESDU_LOW_FIN(1.4, 42, 4.2, 10.8, 35, 7, 0.018, 0.052, 0.0011, 0.0032, 0.052, 0.062, 5, 1.18, 1008, 0.0000185, 0.0265, 240, 0.75)

Expected output:

65.1229

Python Code

Show Code
from ht.air_cooler import h_ESDU_low_fin as ht_h_ESDU_low_fin

def h_ESDU_low_fin(m, A, A_min, A_increase, A_fin, A_tube_showing, tube_diameter, fin_diameter, fin_thickness, bare_length, pitch_parallel, pitch_normal, tube_rows, rho, Cp, mu, k, k_fin, Pr_wall=None):
    """
    Compute air-side heat transfer coefficient for low-fin tube banks.

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

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

    Args:
        m (float): Mass flow rate across the tube bank (kg/s).
        A (float): Total exposed surface area (m^2).
        A_min (float): Minimum flow area (m^2).
        A_increase (float): Surface area ratio relative to bare tube (-).
        A_fin (float): Total fin surface area (m^2).
        A_tube_showing (float): Exposed bare tube area (m^2).
        tube_diameter (float): Bare tube diameter (m).
        fin_diameter (float): Finned tube outer diameter (m).
        fin_thickness (float): Fin thickness (m).
        bare_length (float): Bare tube length between fins (m).
        pitch_parallel (float): Tube pitch parallel to flow (m).
        pitch_normal (float): Tube pitch normal to flow (m).
        tube_rows (int): Number of tube rows (-).
        rho (float): Air density (kg/m^3).
        Cp (float): Air heat capacity (J/kg/K).
        mu (float): Air viscosity (Pa*s).
        k (float): Air thermal conductivity (W/m/K).
        k_fin (float): Fin thermal conductivity (W/m/K).
        Pr_wall (float, optional): Prandtl number at wall temperature (-). Default is None.

    Returns:
        float: Heat transfer coefficient on a bare-tube basis (W/m^2/K), or an error message if invalid.
    """
    try:
        return ht_h_ESDU_low_fin(
            m=m,
            A=A,
            A_min=A_min,
            A_increase=A_increase,
            A_fin=A_fin,
            A_tube_showing=A_tube_showing,
            tube_diameter=tube_diameter,
            fin_diameter=fin_diameter,
            fin_thickness=fin_thickness,
            bare_length=bare_length,
            pitch_parallel=pitch_parallel,
            pitch_normal=pitch_normal,
            tube_rows=tube_rows,
            rho=rho,
            Cp=Cp,
            mu=mu,
            k=k,
            k_fin=k_fin,
            Pr_wall=Pr_wall,
        )
    except Exception as e:
        return f"Error: {str(e)}"

Online Calculator

Mass flow rate across the tube bank (kg/s).
Total exposed surface area (m^2).
Minimum flow area (m^2).
Surface area ratio relative to bare tube (-).
Total fin surface area (m^2).
Exposed bare tube area (m^2).
Bare tube diameter (m).
Finned tube outer diameter (m).
Fin thickness (m).
Bare tube length between fins (m).
Tube pitch parallel to flow (m).
Tube pitch normal to flow (m).
Number of tube rows (-).
Air density (kg/m^3).
Air heat capacity (J/kg/K).
Air viscosity (Pa*s).
Air thermal conductivity (W/m/K).
Fin thermal conductivity (W/m/K).
Prandtl number at wall temperature (-).

H_GANGULI_VDI

This function predicts air-side heat-transfer coefficient for finned tube bundles using Ganguli correlations with VDI-style modifications. It applies a Reynolds-based Nusselt model scaled by area ratio and Prandtl number, with different coefficients for inline and staggered arrangements.

Nu_d = C\,Re_d^{0.6}\left(\frac{A}{A_{\text{tube,only}}}\right)^{-0.15}Pr^{1/3}

The result is returned as a bare-tube-basis coefficient for use in exchanger design calculations.

Excel Usage

=H_GANGULI_VDI(m, A, A_min, A_increase, A_fin, A_tube_showing, tube_diameter, fin_diameter, fin_thickness, bare_length, pitch_parallel, pitch_normal, tube_rows, rho, Cp, mu, k, k_fin)
  • m (float, required): Mass flow rate across the tube bank (kg/s).
  • A (float, required): Total exposed surface area (m^2).
  • A_min (float, required): Minimum flow area (m^2).
  • A_increase (float, required): Surface area ratio relative to bare tube (-).
  • A_fin (float, required): Total fin surface area (m^2).
  • A_tube_showing (float, required): Exposed bare tube area (m^2).
  • tube_diameter (float, required): Bare tube diameter (m).
  • fin_diameter (float, required): Finned tube outer diameter (m).
  • fin_thickness (float, required): Fin thickness (m).
  • bare_length (float, required): Bare tube length between fins (m).
  • pitch_parallel (float, required): Tube pitch parallel to flow (m).
  • pitch_normal (float, required): Tube pitch normal to flow (m).
  • tube_rows (int, required): Number of tube rows (-).
  • rho (float, required): Air density (kg/m^3).
  • Cp (float, required): Air heat capacity (J/kg/K).
  • mu (float, required): Air viscosity (Pa*s).
  • k (float, required): Air thermal conductivity (W/m/K).
  • k_fin (float, required): Fin thermal conductivity (W/m/K).

Returns (float): Heat transfer coefficient on a bare-tube basis (W/m^2/K), or an error message if invalid.

Example 1: Baseline VDI case

Inputs:

m A A_min A_increase A_fin A_tube_showing tube_diameter fin_diameter fin_thickness bare_length pitch_parallel pitch_normal tube_rows rho Cp mu k k_fin
1.2 40 4 12 35 5 0.02 0.05 0.001 0.003 0.05 0.06 4 1.2 1005 0.000018 0.026 200

Excel formula:

=H_GANGULI_VDI(1.2, 40, 4, 12, 35, 5, 0.02, 0.05, 0.001, 0.003, 0.05, 0.06, 4, 1.2, 1005, 0.000018, 0.026, 200)

Expected output:

116.904

Example 2: Higher flow rate and larger pitch

Inputs:

m A A_min A_increase A_fin A_tube_showing tube_diameter fin_diameter fin_thickness bare_length pitch_parallel pitch_normal tube_rows rho Cp mu k k_fin
2 55 5 10 48 7 0.025 0.06 0.0012 0.0035 0.06 0.07 6 1.1 1010 0.000019 0.027 210

Excel formula:

=H_GANGULI_VDI(2, 55, 5, 10, 48, 7, 0.025, 0.06, 0.0012, 0.0035, 0.06, 0.07, 6, 1.1, 1010, 0.000019, 0.027, 210)

Expected output:

109.966

Example 3: Compact geometry with lower flow

Inputs:

m A A_min A_increase A_fin A_tube_showing tube_diameter fin_diameter fin_thickness bare_length pitch_parallel pitch_normal tube_rows rho Cp mu k k_fin
0.9 32 3.5 13 28 4 0.016 0.045 0.0009 0.0025 0.045 0.055 3 1.25 1000 0.000017 0.025 180

Excel formula:

=H_GANGULI_VDI(0.9, 32, 3.5, 13, 28, 4, 0.016, 0.045, 0.0009, 0.0025, 0.045, 0.055, 3, 1.25, 1000, 0.000017, 0.025, 180)

Expected output:

116.542

Example 4: Many rows with moderate flow

Inputs:

m A A_min A_increase A_fin A_tube_showing tube_diameter fin_diameter fin_thickness bare_length pitch_parallel pitch_normal tube_rows rho Cp mu k k_fin
1.5 45 4.5 11 38 7 0.018 0.055 0.0011 0.0032 0.052 0.062 8 1.18 1008 0.0000185 0.0265 240

Excel formula:

=H_GANGULI_VDI(1.5, 45, 4.5, 11, 38, 7, 0.018, 0.055, 0.0011, 0.0032, 0.052, 0.062, 8, 1.18, 1008, 0.0000185, 0.0265, 240)

Expected output:

120.933

Python Code

Show Code
from ht.air_cooler import h_Ganguli_VDI as ht_h_Ganguli_VDI

def h_Ganguli_VDI(m, A, A_min, A_increase, A_fin, A_tube_showing, tube_diameter, fin_diameter, fin_thickness, bare_length, pitch_parallel, pitch_normal, tube_rows, rho, Cp, mu, k, k_fin):
    """
    Compute air-side heat transfer coefficient using the Ganguli VDI method.

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

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

    Args:
        m (float): Mass flow rate across the tube bank (kg/s).
        A (float): Total exposed surface area (m^2).
        A_min (float): Minimum flow area (m^2).
        A_increase (float): Surface area ratio relative to bare tube (-).
        A_fin (float): Total fin surface area (m^2).
        A_tube_showing (float): Exposed bare tube area (m^2).
        tube_diameter (float): Bare tube diameter (m).
        fin_diameter (float): Finned tube outer diameter (m).
        fin_thickness (float): Fin thickness (m).
        bare_length (float): Bare tube length between fins (m).
        pitch_parallel (float): Tube pitch parallel to flow (m).
        pitch_normal (float): Tube pitch normal to flow (m).
        tube_rows (int): Number of tube rows (-).
        rho (float): Air density (kg/m^3).
        Cp (float): Air heat capacity (J/kg/K).
        mu (float): Air viscosity (Pa*s).
        k (float): Air thermal conductivity (W/m/K).
        k_fin (float): Fin thermal conductivity (W/m/K).

    Returns:
        float: Heat transfer coefficient on a bare-tube basis (W/m^2/K), or an error message if invalid.
    """
    try:
        return ht_h_Ganguli_VDI(
            m=m,
            A=A,
            A_min=A_min,
            A_increase=A_increase,
            A_fin=A_fin,
            A_tube_showing=A_tube_showing,
            tube_diameter=tube_diameter,
            fin_diameter=fin_diameter,
            fin_thickness=fin_thickness,
            bare_length=bare_length,
            pitch_parallel=pitch_parallel,
            pitch_normal=pitch_normal,
            tube_rows=tube_rows,
            rho=rho,
            Cp=Cp,
            mu=mu,
            k=k,
            k_fin=k_fin,
        )
    except Exception as e:
        return f"Error: {str(e)}"

Online Calculator

Mass flow rate across the tube bank (kg/s).
Total exposed surface area (m^2).
Minimum flow area (m^2).
Surface area ratio relative to bare tube (-).
Total fin surface area (m^2).
Exposed bare tube area (m^2).
Bare tube diameter (m).
Finned tube outer diameter (m).
Fin thickness (m).
Bare tube length between fins (m).
Tube pitch parallel to flow (m).
Tube pitch normal to flow (m).
Number of tube rows (-).
Air density (kg/m^3).
Air heat capacity (J/kg/K).
Air viscosity (Pa*s).
Air thermal conductivity (W/m/K).
Fin thermal conductivity (W/m/K).

LMTD

This function computes the log-mean temperature difference (LMTD) for ideal counterflow or co-current heat exchangers from inlet and outlet temperatures. LMTD is the effective driving force used in exchanger design equations.

\Delta T_{\mathrm{LMTD}}=\frac{\Delta T_1-\Delta T_2}{\ln(\Delta T_1/\Delta T_2)}

It correctly handles limiting cases where the terminal temperature differences become equal.

Excel Usage

=LMTD(Thi, Tho, Tci, Tco, counterflow)
  • Thi (float, required): Hot fluid inlet temperature (K).
  • Tho (float, required): Hot fluid outlet temperature (K).
  • Tci (float, required): Cold fluid inlet temperature (K).
  • Tco (float, required): Cold fluid outlet temperature (K).
  • counterflow (bool, optional, default: true): Whether the exchanger is counterflow (true) or co-current (false).

Returns (float): Log-mean temperature difference (K), or an error message if invalid.

Example 1: Counterflow temperature difference

Inputs:

Thi Tho Tci Tco counterflow
100 60 30 40.2 true

Excel formula:

=LMTD(100, 60, 30, 40.2, TRUE)

Expected output:

43.2004

Example 2: Co-current temperature difference

Inputs:

Thi Tho Tci Tco counterflow
100 60 30 40.2 false

Excel formula:

=LMTD(100, 60, 30, 40.2, FALSE)

Expected output:

39.7525

Example 3: Counterflow with equal temperature difference

Inputs:

Thi Tho Tci Tco counterflow
100 60 20 60 true

Excel formula:

=LMTD(100, 60, 20, 60, TRUE)

Expected output:

40

Example 4: Co-current with equal temperature difference

Inputs:

Thi Tho Tci Tco counterflow
100 60 20 60 false

Excel formula:

=LMTD(100, 60, 20, 60, FALSE)

Expected output:

0

Python Code

Show Code
from ht.air_cooler import LMTD as ht_LMTD

def LMTD(Thi, Tho, Tci, Tco, counterflow=True):
    """
    Compute the log-mean temperature difference for a heat exchanger.

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

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

    Args:
        Thi (float): Hot fluid inlet temperature (K).
        Tho (float): Hot fluid outlet temperature (K).
        Tci (float): Cold fluid inlet temperature (K).
        Tco (float): Cold fluid outlet temperature (K).
        counterflow (bool, optional): Whether the exchanger is counterflow (true) or co-current (false). Default is True.

    Returns:
        float: Log-mean temperature difference (K), or an error message if invalid.
    """
    try:
        return ht_LMTD(Thi=Thi, Tho=Tho, Tci=Tci, Tco=Tco, counterflow=counterflow)
    except Exception as e:
        return f"Error: {str(e)}"

Online Calculator

Hot fluid inlet temperature (K).
Hot fluid outlet temperature (K).
Cold fluid inlet temperature (K).
Cold fluid outlet temperature (K).
Whether the exchanger is counterflow (true) or co-current (false).

WALL_FACTOR

This function calculates a wall-property correction factor used to adjust ideal heat-transfer or momentum-transfer correlations for property variation between bulk fluid and wall conditions. It supports viscosity, Prandtl-number, or temperature-based ratios with separate exponents for heating and cooling.

The generic structure is:

ext{factor} = \left(\frac{\phi_{\text{bulk}}}{\phi_{\text{wall}}}\right)^n

where \phi is the selected property and n is chosen from the corresponding heating/cooling coefficient.

Excel Usage

=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): Bulk fluid viscosity (Pa*s).
  • mu_wall (float, optional, default: null): Wall fluid viscosity (Pa*s).
  • Pr (float, optional, default: null): Bulk fluid Prandtl number (-).
  • Pr_wall (float, optional, default: null): Wall fluid Prandtl number (-).
  • T (float, optional, default: null): Bulk fluid temperature (K).
  • T_wall (float, optional, default: null): Wall fluid temperature (K).
  • mu_heating_coeff (float, optional, default: 0.11): Viscosity heating coefficient (-).
  • mu_cooling_coeff (float, optional, default: 0.25): Viscosity cooling coefficient (-).
  • Pr_heating_coeff (float, optional, default: 0.11): Prandtl heating coefficient (-).
  • Pr_cooling_coeff (float, optional, default: 0.25): Prandtl cooling coefficient (-).
  • T_heating_coeff (float, optional, default: 0.11): Temperature heating coefficient (-).
  • T_cooling_coeff (float, optional, default: 0.25): Temperature cooling coefficient (-).
  • property_option (str, optional, default: “Prandtl”): Property basis for correction factor (-).

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

Example 1: Prandtl correction with default option

Inputs:

mu mu_wall Pr Pr_wall T T_wall
0.0008 0.0003 1.2 1.1 300 350

Excel formula:

=WALL_FACTOR(0.0008, 0.0003, 1.2, 1.1, 300, 350)

Expected output:

1.00962

Example 2: Viscosity correction option

Inputs:

mu mu_wall Pr Pr_wall T T_wall property_option
0.0009 0.0004 1.5 1.3 310 360 Viscosity

Excel formula:

=WALL_FACTOR(0.0009, 0.0004, 1.5, 1.3, 310, 360, "Viscosity")

Expected output:

1.0933

Example 3: Temperature correction option

Inputs:

mu mu_wall Pr Pr_wall T T_wall property_option
0.00075 0.00035 1.1 1 290 330 Temperature

Excel formula:

=WALL_FACTOR(0.00075, 0.00035, 1.1, 1, 290, 330, "Temperature")

Expected output:

0.985887

Example 4: Explicit Prandtl correction option

Inputs:

mu mu_wall Pr Pr_wall T T_wall property_option
0.001 0.00045 1.4 1.2 320 370 Prandtl

Excel formula:

=WALL_FACTOR(0.001, 0.00045, 1.4, 1.2, 320, 370, "Prandtl")

Expected output:

1.0171

Python Code

Show Code
from ht.air_cooler import wall_factor as ht_wall_factor

def 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 property correction factors for heat transfer correlations.

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

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

    Args:
        mu (float, optional): Bulk fluid viscosity (Pa*s). Default is None.
        mu_wall (float, optional): Wall fluid viscosity (Pa*s). Default is None.
        Pr (float, optional): Bulk fluid Prandtl number (-). Default is None.
        Pr_wall (float, optional): Wall fluid Prandtl number (-). Default is None.
        T (float, optional): Bulk fluid temperature (K). Default is None.
        T_wall (float, optional): Wall fluid temperature (K). Default is None.
        mu_heating_coeff (float, optional): Viscosity heating coefficient (-). Default is 0.11.
        mu_cooling_coeff (float, optional): Viscosity cooling coefficient (-). Default is 0.25.
        Pr_heating_coeff (float, optional): Prandtl heating coefficient (-). Default is 0.11.
        Pr_cooling_coeff (float, optional): Prandtl cooling coefficient (-). Default is 0.25.
        T_heating_coeff (float, optional): Temperature heating coefficient (-). Default is 0.11.
        T_cooling_coeff (float, optional): Temperature cooling coefficient (-). Default is 0.25.
        property_option (str, optional): Property basis 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

Bulk fluid viscosity (Pa*s).
Wall fluid viscosity (Pa*s).
Bulk fluid Prandtl number (-).
Wall fluid Prandtl number (-).
Bulk fluid temperature (K).
Wall fluid temperature (K).
Viscosity heating coefficient (-).
Viscosity cooling coefficient (-).
Prandtl heating coefficient (-).
Prandtl cooling coefficient (-).
Temperature heating coefficient (-).
Temperature cooling coefficient (-).
Property basis for correction factor (-).