Source code for stream.physical_models.heat_transfer_coefficient.subcooled_boiling

import numpy as np
from numba import njit

from stream.physical_models.dimensionless import Pr, flow_regimes
from stream.substances import Liquid
from stream.units import Celsius, Value, WPerM2, g
from stream.utilities import lin_interp


[docs] def Bergles_Rohsenhow_SCB_heat_flux( T_wall: Celsius, coolant: Liquid, n: float = 1.26, csf: float = 0.011, **_ ) -> WPerM2: r""" Given the wall initial boiling temperature, the heat flux for subcooled boiling may be given by [#BR]_ .. math:: 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, csf: float Dimensionless params. See equation above. Returns ------- q: WPerM2 Appropriate heat flux 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 """ return _BR_q_scb_inner( cp=coolant.specific_heat, T_wall=T_wall, T_sat=coolant.sat_temperature, hfg=coolant.latent_heat, mu=coolant.viscosity, k=coolant.conductivity, n=n, csf=csf, rho=coolant.density, steam_rho=coolant.vapor_density, sigma=coolant.surface_tension, )
@njit def _BR_q_scb_inner(cp, T_wall, T_sat, hfg, mu, k, n, csf, rho, steam_rho, sigma): a = cp * (T_wall - T_sat) / hfg b = Pr(cp, mu, k) ** (-n) / csf d_rho = rho - steam_rho c = mu * hfg / np.sqrt(sigma / (g * d_rho)) return c * (a * b) ** (1.0 / 0.33)
[docs] @njit def McAdams_SCB_heat_flux(T_sat: Celsius, T_wall: Celsius) -> WPerM2: r""" A correlation for heat flux at the Subcooled Boiling (SCB) regime. [#tecdoc]_ Parameters ---------- T_sat: Celsius Coolant saturation temperature. T_wall: Celsius Wall (or interface) temperature. Returns ------- q: WPerM2 heat flux at the Subcooled Boiling (SCB) regime 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 ---------- .. [#tecdoc] IAEA TECDOC-233 """ return 2.26 * (T_wall - T_sat) ** 3.86
[docs] def regime_dependent_q_scb( T_wall: Celsius, coolant: Liquid, re: np.ndarray, re_bounds: tuple[float, float], **_, ) -> WPerM2: r"""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`: .. list-table:: :widths: 20,80 * - **Turbulent** - :func:`McAdams <McAdams_SCB_heat_flux>` * - **Laminar** - :func:`Bergles-Rosenhow <Bergles_Rohsenhow_SCB_heat_flux>` * - **Interim** - Interpolation between the limit values, see :func:`.lin_interp` Parameters ---------- T_wall: Celsius Wall temperature coolant: Liquid Coolant properties re: Value Reynolds No., see :func:`~stream.physical_models.dimensionless.Re` re_bounds: tuple[float, float] Regime boundaries Returns ------- q_SCB: WPerM2 Subcooled boiling heat flux """ q = np.empty(len(T_wall)) T_sat = coolant.sat_temperature lam, inter, turb = flow_regimes(re, re_bounds) q[lam] = Bergles_Rohsenhow_SCB_heat_flux(T_wall[lam], coolant[lam]) q[inter] = lin_interp( x1=re_bounds[0], x2=re_bounds[1], x=re[inter], y2=McAdams_SCB_heat_flux(T_sat[inter], T_wall[inter]), y1=Bergles_Rohsenhow_SCB_heat_flux(T_wall[inter], coolant[inter]), ) q[turb] = McAdams_SCB_heat_flux(T_sat[turb], T_wall[turb]) return q
[docs] @njit def Bergles_Rohsenhow_partial_SCB(q_spl: WPerM2, q_scb: WPerM2, q_scb_inc: WPerM2) -> Value: r""" 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. .. math:: 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: Value Correction for the heat transfer coefficient (h) or equivalently the heat flux (q''). Examples -------- >>> Bergles_Rohsenhow_partial_SCB(1., 1., 1.) 1.0 """ return (1 + (q_scb / q_spl * (1 - q_scb_inc / q_scb)) ** 2) ** 0.5