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

Reynolds number using particle diameter as length scale (-).
Prandtl number of the fluid (-).
Void fraction of bed packing (-).

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

Reynolds number using particle diameter as length scale (-).
Prandtl number of the fluid (-).
Void fraction of bed packing (-).

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

Equivalent spherical particle diameter of packing (m).
Void fraction of bed packing (-).
Superficial velocity of the fluid (m/s).
Density of the fluid (kg/m^3).
Dynamic viscosity of the fluid (Pa*s).
Prandtl number of the fluid (-).
Heat transfer enhancement factor (-).

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

Reynolds number using particle diameter as length scale (-).
Prandtl number of the fluid (-).