Heat Transfer Coefficient

For more information regarding limits, please see Thresholds.

Some explanation regarding the jargon of this module:

  • SPL - Single Phase Liquid region.

  • INC - Incipience Point, beyond which boiling occurs.

  • SCB - Subcooled Boiling region.

In this module several functions relating to the calculation of the heat transfer coefficient between coolant and walls are defined. The most significant point of contact between this subpackage and the rest of STREAM is through the wall_heat_transfer_coeff function:

wall_heat_transfer_coeff(*, T_wall, T_cool, mdot, pressure, coolant_funcs, Dh, A, h_spl=<function Dittus_Boelter_h_spl>, q_scb=<function Bergles_Rohsenhow_SCB_heat_flux>, film=CPUDispatcher(<function film_temperature>), incipience=CPUDispatcher(<function Bergles_Rohsenow_T_ONB>), partial_scb=CPUDispatcher(<function Bergles_Rohsenhow_partial_SCB>), **kwargs)[source]

Computes the heat transfer coefficient according to[3].

Parameters:
  • T_wall (Celsius) – Wall temperature.

  • T_cool (Celsius) – Coolant bulk temperature.

  • mdot (KgPerS) – Mass current.

  • pressure (Pascal) – Coolant absolute static pressure at each cell.

  • coolant_funcs (LiquidFuncs) – Coolant properties functions.

  • Dh (Meter) – The effective hydraulic diameter used for Re, Nu values.

  • A (Meter2) – Cross sectional flow area.

  • h_spl (SinglePhaseLiquidHTC) – The single phase liquid (SPL) heat transfer coefficient function, which is returned when there is no boiling.

  • q_scb (SubCooledBoilingFluxFunction) – The subcooled boiling heat flux (SCB) function (which returns W/M2).

  • partial_scb (PartialSCBFactorFunction) – An interpolation function between the SPL and SCB regimes, returning the factor by which q’’_SPL is multiplied.

  • film (FilmFunction) – Film temperature function, for which the coolant properties for heat transfer are calculated.

  • incipience (IncipienceTemperatureFunction) – Boiling INC (incipience) temperature function.

  • kwargs – Extra arguments for h_spl.

Returns:

h – heat transfer coefficient of clad-coolant

Return type:

WPerM2K

The last five arguments are functions used to control the general behavior of this function. We shall walk through those options one by one:

  1. Single Phase Liquid (SPL)

  2. Subcooled Boiling (SCB)

  3. Partial SCB

  4. Film

  5. Incipience

Single Phase Liquid (SPL)

spl_htc(name, **kwargs)[source]

Create a Single Phase Liquid Heat Transfer Coefficient function chosen from the list below with almost uniform signatures. The main usage of this function is as input for wall_heat_transfer_coeff.

Available functions:

regime_dependent

regime_dependent_h_spl, which depends on the Re No., given re_bounds. Laminar, Turbulent and Natural SinglePhaseLiquidHTCExArgs functions are required.

laminar

laminar_h_spl. Requires the aspect_ratio = channel_depth / channel_width parameter.

laminar_constant_nu

laminar_h_spl.

laminar_developed

laminar_developed.

turbulent

Dittus_Boelter_h_spl which employs Dittus_Boelter.

natural

Elenbaas_h_spl. Requires the Lh = heated_length parameter.

maximal

Computes the natural, laminar and turbulent HTCs and selects the highest at each cell.

Parameters:
  • name (SPLMethod | Literal["natural", "laminar", "turbulent", "regime_dependent", "maximal"]) – Method name

  • kwargs (Dict) – Options to pass onto the given method

Returns:

Single Phase Liquid Heat Transfer Coefficient function

Return type:

SinglePhaseLiquidHTCExArgs

class SinglePhaseLiquidHTC(*args, **kwargs)[source]

Bases: Protocol

__call__(coolant, mdot, Dh, A, T_cool, T_wall, coolant_funcs, pressure)[source]

Single Phase Liquid Heat Transfer Coefficient function.

Parameters:
  • coolant (Liquid) – Coolant film properties. See in wall_heat_transfer_coeff

  • mdot (KgPerS) – Coolant mass flow

  • Dh (Meter) – Hydraulic diameter

  • A (Meter2) – Flow area

  • T_cool (Celsius) – Coolant bulk temperature

  • T_wall (Celsius) – Wall temperature

  • coolant_funcs (LiquidFuncs) – Coolant properties functions.

  • pressure (Pascal) – Static pressure of the liquid.

Returns:

h – Heat transfer coefficient

Return type:

WPerM2K

class SinglePhaseLiquidHTCExArgs(*args, **kwargs)[source]

Bases: Protocol

__call__(*, coolant, mdot, Dh, A, T_cool, T_wall, coolant_funcs, pressure, h_spl=None, q_scb=None, film=None, incipience=None, partial_scb=None, develop_length=None, **_)[source]

Same as SinglePhaseLiquidHTC except it accepts any additional keyword parameters.

Parameters:
  • coolant (Liquid)

  • mdot (float | ndarray)

  • Dh (float | ndarray)

  • A (float | ndarray)

  • T_cool (float | ndarray)

  • T_wall (float | ndarray)

  • coolant_funcs (LiquidFuncs)

  • pressure (float | ndarray)

Return type:

float | ndarray

Turbulent Heat Transfer Coefficient

Turbulent Single Phase Heat Transfer Coefficient

Dittus_Boelter(re, pr)[source]

The Dittus-Boelter equation calculates the Nusselt number. Where Reynolds is given for the inside diameter of an equivalent circular smooth duct.

\[\text{Nu} = 0.023\text{Re}^{0.8}\text{Pr}^{0.4}\]

Its application is in the following phase subspace:

Parameters:
  • re (Value) – Reynolds number -> 10,000

  • pr (Value) – Prandtl number, in [0.6, 160]

Returns:

Nu – The Nusselt number

Return type:

Value

Examples

>>> Dittus_Boelter(re=1., pr=1.)
0.023
Dittus_Boelter_h_spl(*, coolant, mdot, Dh, A, **_)[source]

Single phase liquid heat transfer coefficient. This is done through the Dittus-Boelter correlation, which holds for certain very high Reynolds.

\[h_\text{SPL} = (k / D_h)\text{Nu} = 0.023(k / D_h)\text{Re}^{0.8}\text{Pr}^{0.4}\]
Parameters:
  • coolant (Liquid) – Coolant properties

  • mdot (KgPerS) – Characteristic flow mass current

  • Dh (Meter) – The effective hydraulic diameter used for Re, Nu values.

  • A (Meter2) – Cross sectional flow area.

Returns:

h_SPL – h_SPL heat transfer coefficient

Return type:

WPerM2K

Laminar Heat Transfer Coefficient

Laminar Single Phase Heat Transfer Coefficient

Marco_Han_Nusselt(aspect_ratio)[source]

For the case of laminar flow in rectangular ducts, an approximation to an analytical solution by Marco and Han is provided (reported error is +-0.03%).[5] This is useful for ducts of case 1, where the channel is heated from all sides.

Parameters:

aspect_ratio (float) – channel_depth / channel_width (less than 1)

Returns:

Nu – The Nusselt number (Nu)

Return type:

float

Examples

>>> Marco_Han_Nusselt(0.)
8.235
>>> Marco_Han_Nusselt(0.2)
5.991134842079999

References

constant_Nusselt_h_spl(*, coolant, Dh, nu=8.235, **_)[source]

A SinglePhaseLiquidHTC for constant Nu Number: math:h = text{Nu}k/D_h

Parameters:
  • coolant (Liquid) – Properties of the coolant.

  • Dh (Meter) – Hydraulic diameter.

  • nu (float) – Nusselt Number. Default is FIXED_FLUXES

Returns:

Heat transfer coefficient

Return type:

Watts per Meter squared degrees Kelvin

developing_laminar_h_spl(*, coolant, mdot, A, Dh, develop_length, aspect_ratio, **_)[source]

A SinglePhaseLiquidHTC relying on A Nusselt number definition for thermally developing flow.[6]

This includes a correction for the channel being finite in size. These equations are valid for Reynolds<2100.[7]

References

Parameters:
  • coolant (Liquid) – Properties of the coolant.

  • mdot (KgPerS) – Mass flow rate.

  • A (Meter2) – Flow area.

  • Dh (Meter) – Hydraulic diameter.

  • develop_length (Meter) – Distance from channel entrance.

  • aspect_ratio (float in [0,1]) – The aspect ratio of the channel.

Returns:

Heat transfer coefficient

Return type:

Watts per Meter squared degrees Kelvin

fully_developed_laminar_h_spl(*, coolant, Dh, aspect_ratio, **_)[source]

A SinglePhaseLiquidHTC relying on Marco_Han_Nusselt

Parameters:
  • coolant (Liquid) – Properties of the coolant.

  • Dh (Meter) – Hydraulic diameter.

  • aspect_ratio (float in [0,1]) – The aspect ratio of the channel.

Returns:

Heat transfer coefficient

Return type:

Watts per Meter squared degrees Kelvin

two_sided_heating_nusselt(aspect_ratio, nu0=8.235)[source]

Nusselt number for channels heated from two sides.

For the case of laminar flow in rectangular ducts, an approximation to an analytical solution is given in case 3 of Kakac[8]

Parameters:
  • aspect_ratio (float) – channel_depth / channel_width (0<=x<=1)

  • nu0 (float) – The nusselt value for an infinitely wide channel compared to its depth. Defaults to the fully developed value.

Returns:

Nu – The Nusselt number (Nu)

Return type:

float

Examples

>>> two_sided_heating_nusselt(0.)
8.235

The answer should conform with the results Shah & London give from Schmidt in their table 44[9]

>>> alpha = np.array([0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.7, 1.0])
>>> vtable44 = np.array([8.235, 7.248, 6.561, 5.997, 5.555, 5.203, 4.662, 4.094])
>>> np.allclose(two_sided_heating_nusselt(alpha), vtable44, rtol=1.1e-2)
True

References

FIXED_FLUXES = 8.235

For parallel plates in laminar flow, the Nusselt number is constant, depending on the boundary conditions. See J. H. Lienhard IV, J. H. Lienhard V, “A HEAT TRANSFER TEXTBOOK”, 3rd ed., ch. 7.5, p. 373

FIXED_TEMPS = 7.541

For parallel plates in laminar flow, the Nusselt number is constant, depending on the boundary conditions. See J. H. Lienhard IV, J. H. Lienhard V, “A HEAT TRANSFER TEXTBOOK”, 3rd ed., ch. 7.5, p. 373

ONE_FIXED_FLUX_ONE_ADIABATIC = 5.385

For parallel plates in laminar flow, the Nusselt number is constant, depending on the boundary conditions. See J. H. Lienhard IV, J. H. Lienhard V, “A HEAT TRANSFER TEXTBOOK”, 3rd ed., ch. 7.5, p. 373

Natural (Free) Convection Heat Transfer Coefficient

Elenbaas_h_spl(*, coolant, depth, T_cool, T_wall, Lh, **_)[source]

A semi-empirical correlation for SinglePhaseLiquidHTC made by Elenbaas[1][2] for the case of symmetrically heated, isothermal plates:

\[\text{Nu}_S=\frac{1}{24}\frac{S}{L}\text{Ra}_S \left\{ 1-\exp \left[ -\frac{35}{Ra_S(S/L)} \right] \right\}^{3/4}\]
Parameters:
  • coolant (Liquid) – Coolant properties

  • depth (Meter) – The depth, length between the two parallel plates

  • T_cool (Celsius) – Coolant bulk temperature

  • T_wall (Celsius) – Surface temperature

  • Lh (Meter) – Heated length

Returns:

Heat transfer coefficient

Return type:

WPerM2K

References

Composed HTC Functions

regime_dependent_h_spl(coolant, mdot, Dh, A, T_cool, T_wall, re_bounds, coolant_funcs, laminar=<function developing_laminar_h_spl>, turbulent=<function Dittus_Boelter_h_spl>, natural=<function Elenbaas_h_spl>, **kwargs)[source]

A flow-regime-dependent single phase heat transfer coefficient function.

Given laminar, turbulent and natural regimes heat transfer functions, this function interpolates between turbulent-laminar values, where re_bounds determines their respective area of applicability, and applies the natural function when \(\text{Gr}/\text{Re}^2_\text{film} > 1\).

The interpolation is done linearly on the bulk-evaluated Reynolds number. The laminar regime function is passed bulk values, whereas the turbulent function is passed film values.

Parameters:
  • coolant (Liquid) – Coolant film properties. See in wall_heat_transfer_coeff

  • mdot (KgPerS) – Coolant mass flow

  • Dh (Meter) – Hydraulic diameter

  • A (Meter2) – Flow area

  • T_cool (Celsius) – Coolant bulk temperature

  • T_wall (Celsius) – Wall temperature

  • re_bounds (tuple[Value, Value]) – Boundaries depicting transition between laminar, interim, and turbulent regimes.

  • coolant_funcs (LiquidFuncs) – Coolant properties functions.

  • laminar (SinglePhaseLiquidHTCExArgs) – Laminar heat transfer coefficient. It is evaluated with bulk coolant properties.

  • turbulent (SinglePhaseLiquidHTCExArgs) – Turbulent heat transfer coefficient

  • natural (SinglePhaseLiquidHTCExArgs) – Natural convection heat transfer coefficient

Returns:

h – Heat transfer coefficient

Return type:

WPerM2K

maximal_h_spl(hs=(<function Elenbaas_h_spl>, <function Dittus_Boelter_h_spl>, <function developing_laminar_h_spl>))[source]

Creates a new SinglePhaseLiquidHTCExArgs function, which returns the maximal value out of the given functions.

Parameters:

hs (Sequence[SinglePhaseLiquidHTCExArgs]) – Functions to evaluate

Returns:

A SPL HTC function with maximal values

Return type:

SinglePhaseLiquidHTCExArgs

Incipience (INC)

class IncipienceTemperatureFunction(*args, **kwargs)[source]

Bases: Protocol

__call__(pressure, q_spl, Tsat)[source]
Parameters:
  • pressure (float | ndarray)

  • q_spl (float | ndarray)

  • Tsat (float | ndarray)

Return type:

float | ndarray

Bergles_Rohsenow_T_ONB(pressure, q_spl, Tsat)[source]

The wall temperature at which nucleate boiling begins at certain conditions. This is simply the saturation temperature combined with the Bergles & Rohsenow correlation[3][4].

Like all Bergles & Rohsenow, this is for water only.

See also

Bergles_Rohsenow_dT_ONB

Parameters:
  • pressure (Pascal) – Absolute pressure of coolant

  • q_spl (WPerM2) – Single phase heat flux

  • Tsat (Celsius) – Saturation (Boiling) temperature of coolant

Returns:

T_inc – Incipience temperature

Return type:

Celsius

Examples

>>> Bergles_Rohsenow_T_ONB(Tsat=100., q_spl=0., pressure=1e10)
100.0

Subcooled Boiling (SCB)

The subcooled boiling region is identified with a fully subcooled flux function, whose protocol is

class SubCooledBoilingFluxFunction(*args, **kwargs)[source]

Bases: Protocol

__call__(T_wall, coolant, re)[source]
Parameters:
  • T_wall (Celsius) – Wall temperatures

  • coolant (Liquid) – Saturated Coolant properties

  • re (Value) – Reynolds Number

Returns:

q – heat flux at the Subcooled Boiling (SCB) regime

Return type:

WPerM2

Several SCB flux correlations are available:

McAdams_SCB_heat_flux(T_sat, T_wall)[source]

A correlation for heat flux at the Subcooled Boiling (SCB) regime.[10]

Parameters:
  • T_sat (Celsius) – Coolant saturation temperature.

  • T_wall (Celsius) – Wall (or interface) temperature.

Returns:

q – heat flux at the Subcooled Boiling (SCB) regime

Return type:

WPerM2

Examples

>>> McAdams_SCB_heat_flux(T_sat=100., T_wall=100.)
0.0
>>> McAdams_SCB_heat_flux(T_sat=100., T_wall=120.)
237730.12702161702

References

Bergles_Rohsenhow_SCB_heat_flux(T_wall, coolant, n=1.26, csf=0.011, **_)[source]

Given the wall initial boiling temperature, the heat flux for subcooled boiling may be given by[3]

\[q_\text{SCB}''(T_{wall}) = \left[\frac{c_p(T_{wall,inc}-T_{sat})}{h_{fg}} \frac{\text{Pr}^{-n}}{C_{sf}}\right]^{1/0.33} \frac{\mu_l h_{fg}}{\sqrt{\sigma/(g(\rho_l - \rho_v))}}\]

Where the coolant properties are those in saturation temperature.

Parameters:
  • T_wall (Celsius) – Wall temperatures

  • coolant (Liquid) – Coolant properties

  • n (float) – Dimensionless params. See equation above.

  • csf (float) – Dimensionless params. See equation above.

Returns:

q – Appropriate heat flux

Return type:

WPerM2

Examples

>>> from stream.substances import light_water
>>> liquid = light_water.to_properties(10.)
>>> Bergles_Rohsenhow_SCB_heat_flux(liquid.sat_temperature, liquid)
0.0
>>> Bergles_Rohsenhow_SCB_heat_flux(120., liquid, n=np.inf)
0.0
>>> Bergles_Rohsenhow_SCB_heat_flux(120., liquid, csf=np.inf)
0.0
regime_dependent_q_scb(T_wall, coolant, re, re_bounds, **_)[source]

A flow-regime-dependent Subcooled Boiling heat flux function.

Different flow regimes (different re values, partitioned by re_bounds) use different subcooled boiling heat flux correlations:

Turbulent

McAdams

Laminar

Bergles-Rosenhow

Interim

Interpolation between the limit values, see lin_interp

Parameters:
  • T_wall (Celsius) – Wall temperature

  • coolant (Liquid) – Coolant properties

  • re (Value) – Reynolds No., see Re

  • re_bounds (tuple[float, float]) – Regime boundaries

Returns:

q_SCB – Subcooled boiling heat flux

Return type:

WPerM2

and an interpolation scheme, which is Bergles_Rohsenhow_partial_SCB.

Bergles_Rohsenhow_partial_SCB(q_spl, q_scb, q_scb_inc)[source]

Between INC and the fully developed boiling curve, the heat flux for some T_wall is deduced by using the SPL curve and the SCB curve.

\[q_{partial,scb}''=q_{spl}''\left[1+\left\{ \frac{q_{scb}''} {q_{spl}''}\left(1-\frac{q_{scb,inc}''}{q_{scb}''}\right)\right\} ^{2}\right]^{0.5}\]
Parameters:
  • q_spl (WPerM2) – Single Phase heat flux at T_wall.

  • q_scb (WPerM2) – SCB heat flux at T_wall.

  • q_scb_inc (WPerM2) – SCB heat flux at INC temperature.

Returns:

multiplicative_factor – Correction for the heat transfer coefficient (h) or equivalently the heat flux (q’’).

Return type:

Value

Examples

>>> Bergles_Rohsenhow_partial_SCB(1., 1., 1.)
1.0

In protocol form:

class PartialSCBFactorFunction(*args, **kwargs)[source]

Bases: Protocol

Wall Temperature Closure

wall_temperature(T_cool, T_clad, h_cool, h_clad)[source]

Computes the interface temperature, under the assumption that the interface’s thermal inertia is 0, thus incoming and outgoing fluxes should be equal. Then temperature differences should behave as follows:

\[(T_\text{clad} - T_\text{wall}) h_\text{clad} = (T_\text{wall} - T_\text{cool}) h_\text{cool}\]
Parameters:
  • T_cool (Celsius) – Coolant bulk temperature

  • T_clad (Celsius) – Clad temperature, closest to the interface.

  • h_cool (WPerM2K) – Heat transfer coefficient between wall and coolant bulk.

  • h_clad (WPerM2K) – Clad heat transfer coefficient (conductivity / distance) between T_clad placement and T_wall placement.

Returns:

T_wall – Wall temperature

Return type:

Celsius

Note that the wall temperature is also used to determine the film temperature:

class FilmFunction(*args, **kwargs)[source]

Bases: Protocol

__call__(*, T_cool, T_wall)[source]
Parameters:
  • T_cool (float | ndarray)

  • T_wall (float | ndarray)

Return type:

float | ndarray

film_temperature(*, T_cool, T_wall)[source]

Determine the coolant temperature at the wall interface. This temperature may be used to assess the thermodynamical properties of the coolant there.

Parameters:
  • T_cool (Celsius) – Coolant bulk temperature.

  • T_wall (Celsius) – Wall interface temperature.

Returns:

film – “Film” temperature.

Return type:

Celsius

Examples

>>> film_temperature(20., 20.)
20.0