Conv Packed Bed
Overview
Packed-bed convective heat transfer describes how efficiently flowing fluids exchange heat with solid particles in fixed beds, a common configuration in catalytic reactors, adsorption systems, thermal storage units, and packed columns. In engineering terms, these tools estimate the particle-scale heat-transfer coefficient through the Nusselt number, Nu = h d_p/k, so designers can translate flow and property data into exchanger or reactor thermal performance. Packed beds are a core unit operation in chemical and energy systems, and their behavior is strongly coupled to bed geometry and flow distribution (see Packed bed). Reliable Nu estimates are therefore essential for sizing, rating, and sensitivity studies.
The unifying framework across this category is dimensionless transport analysis: Reynolds number (Re) captures inertial-to-viscous flow effects around particles, Prandtl number (Pr) represents momentum-to-thermal diffusivity, and voidage (\epsilon) captures how bed porosity alters velocity fields and interstitial transport. Most correlations use empirical power-law forms to map these variables to Nu, with differing assumptions about particle shape, regime coverage, and whether voidage is explicit. In practice, engineers select a correlation by matching experimental pedigree and validity range, then compare outputs for robustness in uncertain operating windows.
Implementation in this category is based on the Python ht library, specifically ht.conv_packed_bed. The ht package provides production-ready thermal engineering correlations in a consistent API, making it practical for spreadsheet-backed calculators, scripted design workflows, and automated parameter sweeps.
NU_ACHENBACH and NU_KTA are voidage-explicit packed-bed correlations that take Re, Pr, and \epsilon directly, making them useful when bed structure is known and must be reflected in the result. NU_ACHENBACH blends two Reynolds-dependent contributions and is frequently used for pebble-bed style evaluations over broad operating pressure conditions. NU_KTA is tied to KTA guidance and is often preferred when users want alignment with that standards-oriented formulation and its published applicability constraints. Together, these two functions are strong first choices for conventional fixed-bed thermal rating with explicit porosity dependence.
NU_WAKAO_KAGEI and NU_PACKED_BED_GN provide complementary modeling granularity. NU_WAKAO_KAGEI is a compact two-input correlation in Re and Pr, which makes it valuable for rapid screening, preliminary estimates, and cases where voidage data are uncertain. NU_PACKED_BED_GN follows a Gnielinski-style approach built from particle-scale convection with a packed-bed enhancement factor, using particle diameter, superficial velocity, density, viscosity, and optional f_a to represent packing morphology. This makes it especially useful for detailed design studies where fluid properties, geometry, and non-spherical packing effects must be represented explicitly.
Across workflows, these four functions are best treated as a calibrated toolkit rather than a single universal model: pick the correlation whose assumptions match the process, verify that inputs fall within documented ranges, and benchmark alternatives to quantify model-form uncertainty before final design decisions.
NU_ACHENBACH
This function computes the packed-bed Nusselt number using the Achenbach correlation for convective heat transfer around particles in a bed. It combines two Reynolds-number-dependent terms and is useful for estimating heat transfer when Reynolds number, Prandtl number, and bed void fraction are known.
The correlation is:
Nu = \left[(1.18Re^{0.58})^4 + \left(0.23\left(\frac{Re}{1-\epsilon}\right)^{0.75}\right)^4\right]^{0.25}
where Re is the particle Reynolds number, Pr is the Prandtl number, and \epsilon is the bed voidage.
Excel Usage
=NU_ACHENBACH(Re, Pr, voidage)
Re(float, required): Reynolds number using particle diameter as length scale (-).Pr(float, required): Prandtl number of the fluid (-).voidage(float, required): Void fraction of bed packing (-).
Returns (float): Nusselt number for heat transfer to the packed bed.
Example 1: Example Reynolds and Prandtl values
Inputs:
| Re | Pr | voidage |
|---|---|---|
| 2000 | 0.7 | 0.4 |
Excel formula:
=NU_ACHENBACH(2000, 0.7, 0.4)
Expected output:
117.703
Example 2: Lower Reynolds number case
Inputs:
| Re | Pr | voidage |
|---|---|---|
| 500 | 1.2 | 0.35 |
Excel formula:
=NU_ACHENBACH(500, 1.2, 0.35)
Expected output:
46.8431
Example 3: Mid range Reynolds number
Inputs:
| Re | Pr | voidage |
|---|---|---|
| 10000 | 0.9 | 0.38 |
Excel formula:
=NU_ACHENBACH(10000, 0.9, 0.38)
Expected output:
352.48
Example 4: Higher void fraction case
Inputs:
| Re | Pr | voidage |
|---|---|---|
| 1500 | 0.8 | 0.45 |
Excel formula:
=NU_ACHENBACH(1500, 0.8, 0.45)
Expected output:
100.512
Python Code
Show Code
from ht.conv_packed_bed import Nu_Achenbach as ht_Nu_Achenbach
def Nu_Achenbach(Re, Pr, voidage):
"""
Calculate Nusselt number for a packed bed using the Achenbach correlation.
See: https://ht.readthedocs.io/en/latest/ht.conv_packed_bed.html
This example function is provided as-is without any representation of accuracy.
Args:
Re (float): Reynolds number using particle diameter as length scale (-).
Pr (float): Prandtl number of the fluid (-).
voidage (float): Void fraction of bed packing (-).
Returns:
float: Nusselt number for heat transfer to the packed bed.
"""
try:
Re = float(Re)
Pr = float(Pr)
voidage = float(voidage)
return ht_Nu_Achenbach(Re=Re, Pr=Pr, voidage=voidage)
except Exception as e:
return f"Error: {str(e)}"Online Calculator
NU_KTA
This function evaluates the KTA packed-bed heat transfer correlation to estimate the Nusselt number from Reynolds number, Prandtl number, and bed void fraction. It is commonly used for pebble-bed and related packed-bed thermal calculations within the recommended validity ranges.
The KTA expression is:
Nu = 1.27\frac{Pr^{1/3}}{\epsilon^{1.18}}Re^{0.36} + 0.033\frac{Pr^{0.5}}{\epsilon^{1.07}}Re^{0.86}
where Re is the particle Reynolds number, Pr is the Prandtl number, and \epsilon is the voidage.
Excel Usage
=NU_KTA(Re, Pr, voidage)
Re(float, required): Reynolds number using particle diameter as length scale (-).Pr(float, required): Prandtl number of the fluid (-).voidage(float, required): Void fraction of bed packing (-).
Returns (float): Nusselt number for heat transfer to the packed bed.
Example 1: Example Reynolds and Prandtl values
Inputs:
| Re | Pr | voidage |
|---|---|---|
| 2000 | 0.7 | 0.4 |
Excel formula:
=NU_KTA(2000, 0.7, 0.4)
Expected output:
102.085
Example 2: Lower Reynolds number case
Inputs:
| Re | Pr | voidage |
|---|---|---|
| 400 | 1.1 | 0.36 |
Excel formula:
=NU_KTA(400, 1.1, 0.36)
Expected output:
55.6902
Example 3: Mid range Reynolds number
Inputs:
| Re | Pr | voidage |
|---|---|---|
| 12000 | 0.9 | 0.38 |
Excel formula:
=NU_KTA(12000, 0.9, 0.38)
Expected output:
396.986
Example 4: Higher void fraction case
Inputs:
| Re | Pr | voidage |
|---|---|---|
| 1500 | 0.8 | 0.42 |
Excel formula:
=NU_KTA(1500, 0.8, 0.42)
Expected output:
85.8885
Python Code
Show Code
from ht.conv_packed_bed import Nu_KTA as ht_Nu_KTA
def Nu_KTA(Re, Pr, voidage):
"""
Calculate Nusselt number for a packed bed using the KTA correlation.
See: https://ht.readthedocs.io/en/latest/ht.conv_packed_bed.html
This example function is provided as-is without any representation of accuracy.
Args:
Re (float): Reynolds number using particle diameter as length scale (-).
Pr (float): Prandtl number of the fluid (-).
voidage (float): Void fraction of bed packing (-).
Returns:
float: Nusselt number for heat transfer to the packed bed.
"""
try:
Re = float(Re)
Pr = float(Pr)
voidage = float(voidage)
return ht_Nu_KTA(Re=Re, Pr=Pr, voidage=voidage)
except Exception as e:
return f"Error: {str(e)}"Online Calculator
NU_PACKED_BED_GN
This function computes packed-bed Nusselt number using the Gnielinski approach, which scales single-particle heat transfer by an enhancement factor for packed arrangements. Inputs include particle diameter, void fraction, superficial velocity, fluid properties, and optionally a user-specified enhancement factor.
The model uses:
Nu = f_a\,Nu_{sphere}
with Reynolds number defined as:
Re = \frac{\rho v_s d_p}{\mu \epsilon}
where d_p is particle diameter, v_s is superficial velocity, \rho is fluid density, \mu is dynamic viscosity, and \epsilon is voidage.
Excel Usage
=NU_PACKED_BED_GN(dp, voidage, vs, rho, mu, Pr, fa)
dp(float, required): Equivalent spherical particle diameter of packing (m).voidage(float, required): Void fraction of bed packing (-).vs(float, required): Superficial velocity of the fluid (m/s).rho(float, required): Density of the fluid (kg/m^3).mu(float, required): Dynamic viscosity of the fluid (Pa*s).Pr(float, required): Prandtl number of the fluid (-).fa(float, optional, default: null): Heat transfer enhancement factor (-).
Returns (float): Nusselt number for heat transfer to the packed bed.
Example 1: Example packed bed case
Inputs:
| dp | voidage | vs | rho | mu | Pr |
|---|---|---|---|---|---|
| 0.0008 | 0.4 | 1 | 1000 | 0.001 | 0.7 |
Excel formula:
=NU_PACKED_BED_GN(0.0008, 0.4, 1, 1000, 0.001, 0.7)
Expected output:
61.3782
Example 2: Packed bed case with enhancement factor
Inputs:
| dp | voidage | vs | rho | mu | Pr | fa |
|---|---|---|---|---|---|---|
| 0.0012 | 0.45 | 0.8 | 998 | 0.0011 | 4 | 1.6 |
Excel formula:
=NU_PACKED_BED_GN(0.0012, 0.45, 0.8, 998, 0.0011, 4, 1.6)
Expected output:
86.0162
Example 3: Lower velocity case
Inputs:
| dp | voidage | vs | rho | mu | Pr |
|---|---|---|---|---|---|
| 0.001 | 0.38 | 0.2 | 950 | 0.002 | 10 |
Excel formula:
=NU_PACKED_BED_GN(0.001, 0.38, 0.2, 950, 0.002, 10)
Expected output:
48.5717
Example 4: Higher Prandtl number case
Inputs:
| dp | voidage | vs | rho | mu | Pr |
|---|---|---|---|---|---|
| 0.0006 | 0.42 | 2 | 1050 | 0.0009 | 25 |
Excel formula:
=NU_PACKED_BED_GN(0.0006, 0.42, 2, 1050, 0.0009, 25)
Expected output:
247.185
Python Code
Show Code
from ht.conv_packed_bed import Nu_packed_bed_Gnielinski as ht_Nu_packed_bed_Gnielinski
def Nu_packed_bed_Gn(dp, voidage, vs, rho, mu, Pr, fa=None):
"""
Calculate Nusselt number for a packed bed using the Gnielinski correlation.
See: https://ht.readthedocs.io/en/latest/ht.conv_packed_bed.html
This example function is provided as-is without any representation of accuracy.
Args:
dp (float): Equivalent spherical particle diameter of packing (m).
voidage (float): Void fraction of bed packing (-).
vs (float): Superficial velocity of the fluid (m/s).
rho (float): Density of the fluid (kg/m^3).
mu (float): Dynamic viscosity of the fluid (Pa*s).
Pr (float): Prandtl number of the fluid (-).
fa (float, optional): Heat transfer enhancement factor (-). Default is None.
Returns:
float: Nusselt number for heat transfer to the packed bed.
"""
try:
dp = float(dp)
voidage = float(voidage)
vs = float(vs)
rho = float(rho)
mu = float(mu)
Pr = float(Pr)
fa_value = None if fa is None else float(fa)
return ht_Nu_packed_bed_Gnielinski(
dp=dp,
voidage=voidage,
vs=vs,
rho=rho,
mu=mu,
Pr=Pr,
fa=fa_value,
)
except Exception as e:
return f"Error: {str(e)}"Online Calculator
NU_WAKAO_KAGEI
This function estimates packed-bed convective heat transfer with the Wakao-Kagei correlation. The relationship depends on Reynolds and Prandtl numbers and provides a practical estimate when a simple, widely used packed-bed correlation is needed.
The correlation is:
Nu = 2 + 1.1Pr^{1/3}Re^{0.6}
where Re is the particle Reynolds number and Pr is the Prandtl number of the fluid.
Excel Usage
=NU_WAKAO_KAGEI(Re, Pr)
Re(float, required): Reynolds number using particle diameter as length scale (-).Pr(float, required): Prandtl number of the fluid (-).
Returns (float): Nusselt number for heat transfer to the packed bed.
Example 1: Example Reynolds and Prandtl values
Inputs:
| Re | Pr |
|---|---|
| 2000 | 0.7 |
Excel formula:
=NU_WAKAO_KAGEI(2000, 0.7)
Expected output:
95.4064
Example 2: Lower Reynolds number case
Inputs:
| Re | Pr |
|---|---|
| 50 | 1.2 |
Excel formula:
=NU_WAKAO_KAGEI(50, 1.2)
Expected output:
14.2227
Example 3: Mid range Reynolds number
Inputs:
| Re | Pr |
|---|---|
| 12000 | 0.9 |
Excel formula:
=NU_WAKAO_KAGEI(12000, 0.9)
Expected output:
299.611
Example 4: Higher Prandtl number case
Inputs:
| Re | Pr |
|---|---|
| 1500 | 5 |
Excel formula:
=NU_WAKAO_KAGEI(1500, 5)
Expected output:
153.369
Python Code
Show Code
from ht.conv_packed_bed import Nu_Wakao_Kagei as ht_Nu_Wakao_Kagei
def Nu_Wakao_Kagei(Re, Pr):
"""
Calculate Nusselt number for a packed bed using the Wakao-Kagei correlation.
See: https://ht.readthedocs.io/en/latest/ht.conv_packed_bed.html
This example function is provided as-is without any representation of accuracy.
Args:
Re (float): Reynolds number using particle diameter as length scale (-).
Pr (float): Prandtl number of the fluid (-).
Returns:
float: Nusselt number for heat transfer to the packed bed.
"""
try:
Re = float(Re)
Pr = float(Pr)
return ht_Nu_Wakao_Kagei(Re=Re, Pr=Pr)
except Exception as e:
return f"Error: {str(e)}"Online Calculator