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