Source code for vclibpy.components.heat_exchangers.heat_transfer.air_to_wall

import abc
import logging

from .heat_transfer import HeatTransfer
from vclibpy.media import TransportProperties


logger = logging.getLogger(__name__)


[docs]class AirToWallTransfer(HeatTransfer, abc.ABC): """ Heat transfer model for air to wall. Args: A_cross (float): Cross-section area in m2. characteristic_length (float): Length in m to calculate the similitude approach for the heat transfer from secondary_medium -> wall. """ def __init__(self, A_cross: float, characteristic_length: float): self.A_cross = A_cross self.characteristic_length = characteristic_length
[docs] def calc(self, transport_properties: TransportProperties, m_flow: float) -> float: """ Heat transfer coefficient from air to the wall of the heat exchanger. The flow is assumed to be always laminar. Returns: float: Heat transfer coefficient in W/(m^2*K). """ Re = self.calc_reynolds(dynamic_viscosity=transport_properties.dyn_vis, m_flow=m_flow) alpha_sec = self.calc_laminar_area_nusselt(Re, transport_properties.Pr, lambda_=transport_properties.lam) return alpha_sec
[docs] @abc.abstractmethod def calc_reynolds(self, dynamic_viscosity: float, m_flow: float): """ Calculate the reynolds number of the given flow rate. Args: dynamic_viscosity (float): Dynamic viscosity. m_flow (float): Mass flow rate. Returns: float: Reynolds number """ raise NotImplementedError
[docs] @abc.abstractmethod def calc_laminar_area_nusselt(self, Re, Pr, lambda_): """ Calculate the Nusselt number for laminar heat transfer on an area (Used for Air->Wall in the evaporator). Args: Re (float): Reynolds number Pr (float): Prandlt number lambda_ (float): Lambda of air Returns: float: Nusselt number """ raise NotImplementedError
[docs]class WSUAirToWall(AirToWallTransfer): """ Class to implement the heat transfer calculations based on the WSÜ-Script at the RWTH. """
[docs] def calc_reynolds(self, dynamic_viscosity: float, m_flow: float) -> float: """ Calculate the Reynolds number on air side. Args: dynamic_viscosity (float): Dynamic viscosity of air. m_flow (float): Mass flow rate of air. Returns: float: Reynolds number. """ velocity_times_dens = m_flow / self.A_cross return (velocity_times_dens * self.characteristic_length) / dynamic_viscosity
[docs] def calc_laminar_area_nusselt(self, Re, Pr, lambda_) -> float: """ Calculate the Nusselt number for laminar heat transfer on an area (Used for Air->Wall in the evaporator). Args: Re (float): Reynolds number of air. Pr (float): Prandtl number of air. lambda_ (float): Lambda of air. Returns: float: Nusselt number of air. """ const_fac = 0.664 exp_rey = 0.5 exp_pra = 1 / 3 if Re > 2e5: raise ValueError(f"Given Re {Re} is outside of allowed bounds for WSÜ-Script") if Pr > 10 or Pr < 0.6: raise ValueError(f"Given Pr {Pr} is outside of allowed bounds for WSÜ-Script") Nu = const_fac * Re ** exp_rey * Pr ** exp_pra return Nu * lambda_ / self.characteristic_length