bloc.chem.heat_transfer#

Heat transfer correlations and utilities for reactor modeling.

This module consolidates all heat transfer functions used in Bloc: external natural convection, linearized radiation, thermal resistance networks, gas-to-wall radiative flux, and internal forced convection.

Internal convection delegates to ht.conv_internal which automatically selects the most accurate applicable correlation for the flow regime.

References

[CalebBell_ht]

Caleb Bell and Contributors (2016-2025). ht: Heat transfer component of Chemical Engineering Design Library (ChEDL). CalebBell/ht

Attributes#

Classes#

PhysicalModel

General class for a physical prediction model.

SurfaceAreaModel

Predicts the surface area of carbon based on temperature and residence time.

KirkOthmer2004SurfaceArea

Predicts the surface area of carbon based on temperature and residence time.

Functions#

thermal_resistance_radial_conduction(diameter, length, ...)

Thermal resistance for radial conduction in cylindrical geometry.

thermal_resistance_CC(h_CC, S)

Thermal resistance of a conducto-convective heat transfer surface.

compute_hCC_natConv_vertCyl(diameter, length, ...[, ...])

Natural convection coefficient at the external wall of a vertical cylinder.

compute_hCC_natConv_horizCyl(diameter, length, ...[, ...])

Natural convection coefficient at the external wall of a horizontal cylinder.

compute_hrad_linearRadiation(eps, Tmoy)

Linearized radiative conductance for small temperature differences.

compute_heat_losses_linear(Tr_C, Tamb_C, R_list)

Solve heat transfer through a series thermal resistance stack.

compute_gas2wall_radiative_flux(T_g, T_w, kappa_grey, D)

Radiative flux from a participating gas to the tube wall in W/m2.

internal_convection_h(diameter, mass_flow_rate, gas[, ...])

Compute internal forced convection coefficient for gas in a circular tube.

Module Contents#

bloc.chem.heat_transfer.g = 9.81#
bloc.chem.heat_transfer.sigma_SB = 5.67e-08#
bloc.chem.heat_transfer.nu_air_20C = 1.589e-05#
bloc.chem.heat_transfer.alpha_air_20C = 2.25e-05#
bloc.chem.heat_transfer.conductivity_air_20C = 0.0263#
bloc.chem.heat_transfer.Pr_air_20C = 0.707#
bloc.chem.heat_transfer.thermal_resistance_radial_conduction(diameter, length, conductivity, e_insulation)#

Thermal resistance for radial conduction in cylindrical geometry.

\[R = \frac{\ln(r_2/r_1)}{2\pi k L}, \quad r_1 = D/2, \quad r_2 = D/2 + e_{\mathrm{insulation}}\]
Parameters:
  • diameter (float) – Inner diameter in m.

  • length (float) – Cylinder length in m.

  • conductivity (float) – Thermal conductivity of insulation in W/m/K.

  • e_insulation (float) – Insulation thickness in m.

Returns:

Thermal resistance in K/W.

Return type:

float

bloc.chem.heat_transfer.thermal_resistance_CC(h_CC, S)#

Thermal resistance of a conducto-convective heat transfer surface.

\[R = \frac{1}{h_{\mathrm{CC}} \, S}\]
Parameters:
  • h_CC (float) – Heat transfer coefficient in W/m2/K.

  • S (float) – Surface area in m2.

Returns:

Thermal resistance in K/W.

Return type:

float

bloc.chem.heat_transfer.compute_hCC_natConv_vertCyl(diameter, length, T_wall_C, T_amb_C, conductivity=conductivity_air_20C, nu=nu_air_20C, alpha=alpha_air_20C, Pr=Pr_air_20C)#

Natural convection coefficient at the external wall of a vertical cylinder.

Correlation from Taine / Lefevre (1956).

Warning

Valid for laminar flow only; gives low h values.

\[ \begin{align}\begin{aligned}\mathrm{Ra}_L = \frac{g \beta (T_{\mathrm{wall}} - T_{\mathrm{amb}}) L^3}{\nu \alpha}\\\mathrm{Nu} = \frac{4}{3} \left(\frac{7 \mathrm{Ra}_L \mathrm{Pr}}{100 + 105 \mathrm{Pr}}\right)^{1/4} + 0.1143 \frac{272 + 315 \mathrm{Pr}}{64 + 63 \mathrm{Pr}} \frac{L}{D}, \quad h = \frac{\mathrm{Nu} \, k}{L}\end{aligned}\end{align} \]
Parameters:
  • diameter (float) – Outer diameter in m.

  • length (float) – Cylinder length in m.

  • T_wall_C (float) – Wall temperature in deg C.

  • T_amb_C (float) – Ambient temperature in deg C.

  • conductivity (float, optional) – Fluid thermal conductivity in W/m/K. Defaults to air at 20 deg C.

  • nu (float, optional) – Kinematic viscosity in m2/s. Defaults to air at 20 deg C.

  • alpha (float, optional) – Thermal diffusivity in m2/s. Defaults to air at 20 deg C.

  • Pr (float, optional) – Prandtl number. Defaults to air at 20 deg C.

Returns:

Convective heat transfer coefficient h in W/m2/K.

Return type:

float

bloc.chem.heat_transfer.compute_hCC_natConv_horizCyl(diameter, length, T_wall_C, T_amb_C, conductivity=conductivity_air_20C, nu=nu_air_20C, alpha=alpha_air_20C, Pr=Pr_air_20C)#

Natural convection coefficient at the external wall of a horizontal cylinder.

Uses Churchill & Chu (1975) correlation.

\[ \begin{align}\begin{aligned}\mathrm{Ra}_D = \frac{g \beta (T_{\mathrm{wall}} - T_{\mathrm{amb}}) D^3}{\nu \alpha}\\\mathrm{Nu}_D = \left(0.6 + \frac{0.387 \mathrm{Ra}_D^{1/6}} {(1 + (0.559/\mathrm{Pr})^{9/16})^{8/27}}\right)^2, \quad h = \frac{\mathrm{Nu}_D \, k}{D}\end{aligned}\end{align} \]
Parameters:
  • diameter (float) – Outer diameter in m.

  • length (float) – Cylinder length in m (unused in this correlation, kept for API consistency).

  • T_wall_C (float) – Wall temperature in deg C.

  • T_amb_C (float) – Ambient temperature in deg C.

  • conductivity (float, optional) – Fluid thermal conductivity in W/m/K. Defaults to air at 20 deg C.

  • nu (float, optional) – Kinematic viscosity in m2/s. Defaults to air at 20 deg C.

  • alpha (float, optional) – Thermal diffusivity in m2/s. Defaults to air at 20 deg C.

  • Pr (float, optional) – Prandtl number. Defaults to air at 20 deg C.

Returns:

Convective heat transfer coefficient h in W/m2/K.

Return type:

float

bloc.chem.heat_transfer.compute_hrad_linearRadiation(eps, Tmoy)#

Linearized radiative conductance for small temperature differences.

\[h_{\mathrm{rad}} = \varepsilon \sigma_{\mathrm{SB}} \, 4 T_{\mathrm{moy}}^3\]
Parameters:
  • eps (float) – Emissivity, dimensionless.

  • Tmoy (float) – Mean temperature in K.

Returns:

Linearized radiative heat transfer coefficient in W/m2/K.

Return type:

float

bloc.chem.heat_transfer.compute_heat_losses_linear(Tr_C, Tamb_C, R_list)#

Solve heat transfer through a series thermal resistance stack.

\[R_{\mathrm{tot}} = \sum_i R_i, \quad \Phi = \frac{T_{\mathrm{reac}} - T_{\mathrm{amb}}}{R_{\mathrm{tot}}}, \quad \Delta T_i = \Phi \, R_i\]
Parameters:
  • Tr_C (float) – Temperature inside the reactor in deg C.

  • Tamb_C (float) – Ambient temperature in deg C.

  • R_list (list of float) – Thermal resistances in K/W, ordered from reactor interior to ambient.

Returns:

{"Phi": float, "T_reac": float, "T_wall_ext": float, "T_amb": float, ...} where Phi is heat loss in W.

Return type:

dict

bloc.chem.heat_transfer.compute_gas2wall_radiative_flux(T_g, T_w, kappa_grey, D)#

Radiative flux from a participating gas to the tube wall in W/m2.

Uses the grey gas approximation with cylindrical geometry (mean beam length approximation via spherical integral).

Assumptions:

  • Temperature and composition are uniform in the cross-section.

  • Grey body gas with absorption coefficient kappa_grey.

  • Walls are black (covered by soot); no wall reflection.

\[ \begin{align}\begin{aligned}f_{\mathrm{trans}} = 2 \int_0^{\pi/2} e^{-\kappa D \cos\theta} \cos^2\theta \sin\theta \, d\theta\\q_{\mathrm{rad}} = \left(\frac{2}{3} - f_{\mathrm{trans}}\right) \sigma_{\mathrm{SB}} (T_g^4 - T_w^4)\end{aligned}\end{align} \]

Positive q_rad means net heat transfer from gas to wall.

Parameters:
  • T_g (float) – Gas temperature in K.

  • T_w (float) – Wall temperature in K.

  • kappa_grey (float) – Grey gas absorption coefficient in 1/m. Use kappa_grey = 0 to disable gas radiation.

  • D (float) – Tube inner diameter in m.

Returns:

  • q_rad (float) – Net radiative heat flux from gas to wall in W/m2.

  • f_trans (float) – Transmittance factor (dimensionless).

bloc.chem.heat_transfer.internal_convection_h(diameter, mass_flow_rate, gas, x_position=None)#

Compute internal forced convection coefficient for gas in a circular tube.

Delegates to ht.conv_internal.Nu_conv_internal() [CalebBell_ht] which dynamically selects the most accurate applicable correlation:

  • Laminar developing flow (Re < 2300, x_position provided): Baehr-Stephan laminar thermal/velocity entry.

  • Laminar fully-developed (Re < 2300, no x_position): Constant wall temperature, Nu = 3.66.

  • Turbulent with entry effects (Re > 4000, x_position provided): Hausen.

  • Turbulent general (Re > 4000): Churchill-Zajic.

  • Turbulent, low Prandtl (Pr < 0.03): Martinelli.

Transport properties (viscosity, thermal conductivity, heat capacity) are read from the Cantera Solution object at the current state. The gas mechanism must define a transport model (e.g. Mix or Multi); mechanisms with transport_model == 'none' are not supported.

Parameters:
  • diameter (float) – Tube inner diameter in m.

  • mass_flow_rate (float) – Mass flow rate through the tube in kg/s.

  • gas (cantera.Solution) – Gas object at the current thermodynamic state (must have transport).

  • x_position (float or None, optional) – Distance from the tube inlet in m. When provided, entry-length correlations are used; otherwise fully-developed flow is assumed.

Returns:

Convective heat transfer coefficient h in W/m2/K.

Return type:

float

Raises:

ValueError – If gas.transport_model == 'none' (mechanism has no transport data).

See also

ht.conv_internal.Nu_conv_internal

Underlying correlation selector from the ht library.

Notes

For CH4 pyrolysis conditions (10 SLM, D = 100 mm), Re ~ 130–250 across the full temperature range (25–1600 deg C), so fully-developed laminar flow applies and Nu = 3.66. Radiation dominates at high temperatures.

class bloc.chem.heat_transfer.PhysicalModel(model, imputer)#

Bases: object

General class for a physical prediction model.

model#
imputer#
fit(X, y)#
predict(X)#
class bloc.chem.heat_transfer.SurfaceAreaModel#

Bases: PhysicalModel

Predicts the surface area of carbon based on temperature and residence time.

The model must be initialized with data to be fitted through the fit() method. Child classes come with prefitted data. See for instance KirkOthmer2004SurfaceArea.

The model uses a Linear regression trained on polynomial features of ; using a PolynomialFeatures with degree 2.

fit(temperature, residence_time, surface_area)#

Fit the model to experimental or reference data.

Note the model uses a LinearRegression with temperature and log10(residence_time) as input.

predict(temperature, residence_time)#

Predict the surface area of carbon based on temperature and residence time.

model#
imputer#
class bloc.chem.heat_transfer.KirkOthmer2004SurfaceArea#

Bases: SurfaceAreaModel

Predicts the surface area of carbon based on temperature and residence time.

The model must be initialized with data to be fitted through the fit() method. Child classes come with prefitted data. See for instance KirkOthmer2004SurfaceArea.

The model uses a Linear regression trained on polynomial features of ; using a PolynomialFeatures with degree 2.

TEMPERATURE_DATA#
RESIDENCE_TIME_DATA#
SURFACE_AREA_DATA#

Predicts the surface area of carbon based on temperature and residence time.

Reference#

Kirk-Othmer Encyclopedia of Chemical Technology, Volume 4, 5th Edition ISBN: 978-0-471-48519-3; March 2004 https://www.wiley.com/en-us/Kirk-Othmer+Encyclopedia+of+Chemical+Technology%2C+Volume+4%2C+5th+Edition-p-9780471485193

Examples

Surface Area Model.

Surface Area Model.
fit(temperature, residence_time, surface_area)#

Fit the model to experimental or reference data.

Note the model uses a LinearRegression with temperature and log10(residence_time) as input.

predict(temperature, residence_time)#

Predict the surface area of carbon based on temperature and residence time.

model#
imputer#
bloc.chem.heat_transfer.carbon_model#