heat_exchanger.py

class openconcept.thermal.heat_exchanger.OffsetStripFinGeometry(**kwargs)

Bases: ExplicitComponent

Computes geometric and solid parameters of a offset strip fin plate-fin heat exchanger.

Geometric parameters as published by Manglik and Bergles, ‘Heat Transfer and Pressure Drop Correlations for the Rectangular Offset Strip Fin Compact Heat Exchanger’, Experimental Thermal and Fluid Science, 1995 DOI https://doi.org/10.1016/0894-1777(94)00096-Q

Inputs:
  • channel_width_hot (float) – Width of each finned flow channel on the hot side (scalar, m)

  • channel_height_hot (float) – Height of each finned flow channel on the hot side (scalar, m)

  • fin_length_hot (float) – Length of each offset strip fin on the hot side (scalar, m)

  • channel_width_cold (float) – Width of each finned flow channel on the cold side (scalar, m)

  • channel_height_cold (float) – Height of each finned flow channel on the cold side (scalar, m)

  • fin_length_cold (float) – Length of each offset strip fin on the cold side (scalar, m)

  • fin_thickness (float) – Thickness of fin material (scalar, m)

  • plate_thickness (float) – Thickness of plate divider material (scalar, m)

  • case_thickness (float) – Thickness of the outer case material (scalar, m)

  • n_wide_cold (float) – Number of channels wide (cold side) (scalar, dimensionless)

  • n_long_cold (float) – Number of fins long (cold side) (scalar, dimensionless)

  • n_tall (float) – Number of times to stack the hot/cold combo (scalar, dimensionless)

  • material_rho (float) – Density of the heat exchanger material (scalar, kg/m**3)

Outputs:
  • component_weight (float) – Weight / mass of the heat exchanger material (scalar, kg)

  • length_overall (float) – Overall heat exchanger length as viewed from cold side (scalar, m)

  • height_overall (float) – Overall heat exhcanger height (scalar, m)

  • width_overall (float) – Overall heat exchanger width as viewed from cold side (scalar, m)

  • frontal_area (float) – Frontal area of the heat exchanger (cold side) (scalar, m**2)

  • xs_area_cold (float) – Cross-sectional flow area of the cold side (scalar, m**2)

  • heat_transfer_area_cold (float) – Total heat transfer surface area of the cold side (scalar, m**2)

  • dh_cold (float) – Hydraulic diameter of the cold side flow channels (scalar, m)

  • fin_area_ratio_cold (float) – Ratio of fin area to total heat transfer area (scalar, dimensionless)

  • contraction_ratio_cold (float) – Ratio of flow xs area to total xs area of the cold side (scalar, dimensionless)

  • alpha_cold (float) – Ratio of fin channel width to height on the cold side (scalar, dimensionless)

  • delta_cold (float) – Ratio of fin thickness to length on the cold side (scalar, dimensionless)

  • gamma_cold (float) – Ratio of fin thickness to flow width on the cold side (scalar, dimensionless)

  • xs_area_hot (float) – Cross-sectional flow area of the hot side (scalar, m**2)

  • heat_transfer_area_hot (float) – Total heat transfer surface area of the hot side (scalar, m**2)

  • dh_hot (float) – Hydraulic diameter of the hot side flow channels (scalar, m)

  • fin_area_ratio_hot (float) – Ratio of fin area to total heat transfer area (scalar, dimensionless)

  • contraction_ratio_hot (float) – Ratio of flow xs area to total xs area of the hot side (scalar, dimensionless)

  • alpha_hot (float) – Ratio of fin channel width to height on the hot side (scalar, dimensionless)

  • delta_hot (float) – Ratio of fin thickness to length on the hot side (scalar, dimensionless)

  • gamma_hot (float) – Ratio of fin thickness to flow width on the hot side (scalar, dimensionless)

class openconcept.thermal.heat_exchanger.OffsetStripFinData(**kwargs)

Bases: ExplicitComponent

Computes Fanning friction factor f and Coburn j factor for offset strip fin geometry Correlations from empirical data published by Manglik and Bergles, ‘Heat Transfer and Pressure Drop Correlations for the Rectangular Offset Strip Fin Compact Heat Exchanger’, Experimental Thermal and Fluid Science, 1995 DOI https://doi.org/10.1016/0894-1777(94)00096-Q Equations 34 and 35

Inputs:
  • Re_dh_cold (float) – Hydraulic diameter reynolds number of the cold side (vector, dimensionless)

  • alpha_cold (float) – Ratio of fin channel width to height on the cold side (scalar, dimensionless)

  • delta_cold (float) – Ratio of fin thickness to length on the cold side (scalar, dimensionless)

  • gamma_cold (float) – Ratio of fin thickness to flow width on the cold side (scalar, dimensionless)

  • Re_dh_hot (float) – Hydraulic diameter reynolds number of the hot side (vector, dimensionless)

  • alpha_hot (float) – Ratio of fin channel width to height on the hot side (scalar, dimensionless)

  • delta_hot (float) – Ratio of fin thickness to length on the hot side (scalar, dimensionless)

  • gamma_hot (float) – Ratio of fin thickness to flow width on the hot side (scalar, dimensionless)

Outputs:
  • j_cold (float) – Colburn j factor for cold side (vector, dimensionless)

  • f_cold (float) – Fanning friction factor for cold side (vector, dimensionless)

  • j_hot (float) – Colburn j factor for hot side (vector, dimensionless)

  • f_hot (float) – Fanning friction factor for hot side (vector, dimensionless)

Options:

num_nodes (int) – Number of analysis points to run (scalar, dimensionless)

class openconcept.thermal.heat_exchanger.HydraulicDiameterReynoldsNumber(**kwargs)

Bases: ExplicitComponent

Computes Re_dh for both sides of a heat exchanger

Inputs:
  • mdot_cold (float) – Mass flow rate of the cold side (vector, kg/s)

  • mu_cold (float) – Dynamic viscosity of the cold side fluid (scalar, kg/m/s)

  • xs_area_cold (float) – Cross-sectional flow area of the cold side (scalar, m**2)

  • dh_cold (float) – Hydraulic diameter of the cold side flow channels (scalar, m)

  • mdot_hot (float) – Mass flow rate of the hot side (vector, kg/s)

  • mu_hot (float) – Dynamic viscosity of the hot side fluid (scalar, kg/m/s)

  • xs_area_hot (float) – Cross-sectional flow area of the hot side (scalar, m**2)

  • dh_hot (float) – Hydraulic diameter of the hot side flow channels (scalar, m)

Outputs:
  • Re_dh_cold (float) – Reynolds number based on the hydraulic diameter, cold side (vector, dimensionless)

  • Re_dh_hot (float) – Reynolds number based on the hydraulic diameter, hot side (vector, dimensionless)

Options:

num_nodes (int) – Number of analysis points to run (scalar, dimensionless)

class openconcept.thermal.heat_exchanger.NusseltFromColburnJ(**kwargs)

Bases: ExplicitComponent

Computes Nu from the Colburn j factor, Re, and Pr (mu, cp, k). Nu = j * Redh * (cp mu / k) ^(1/3)

Inputs:
  • Re_dh_cold (float) – Reynolds number based on the hydraulic diameter, cold side (vector, dimensionless)

  • j_cold (float) – Colburn j factor (vector, dimensionless)

  • k_cold (float) – Thermal conductivity of the cold side fluid (scalar, W/m/K)

  • mu_cold (float) – Dynamic viscosity of the cold side fluid (scalar, kg/m/s)

  • cp_cold (float) – Specific heat at constant pressure, cold side (scalar, J/kg/K)

  • Re_dh_hot (float) – Reynolds number based on the hydraulic diameter, hot side (vector, dimensionless)

  • j_hot (float) – Colburn j factor (vector, dimensionless)

  • k_hot (float) – Thermal conductivity of the hot side fluid (scalar, W/m/K)

  • mu_hot (float) – Dynamic viscosity of the hot side fluid (scalar, kg/m/s)

  • cp_hot (float) – Specific heat at constant pressure, hot side (scalar, J/kg/K)

Outputs:
  • Nu_dh_cold (float) – Hydraulic diameter Nusselt number (vector, dimensionless)

  • Nu_dh_hot (float) – Hydraulic diameter Nusselt number (vector, dimensionless

Options:

num_nodes (int) – Number of analysis points to run (scalar, dimensionless)

class openconcept.thermal.heat_exchanger.ConvectiveCoefficient(**kwargs)

Bases: ExplicitComponent

Computes h from Nu_Dh (hydraulic diam Nusselt number), Dh (hyd diam), and k (thermal conductivity)

Inputs:
  • Nu_dh_cold (float) – Hydraulic diameter Nusselt number (vector, dimensionless)

  • dh_cold (float) – Hydraulic diameter of the cold side flow channels (scalar, m)

  • k_cold (float) – Thermal conductivity of the cold side fluid (scalar, W/m/K)

  • Nu_dh_cold (float) – Hydraulic diameter Nusselt number (vector, dimensionless)

  • dh_cold (float) – Hydraulic diameter of the cold side flow channels (scalar, m)

  • k_cold (float) – Thermal conductivity of the cold side fluid (scalar, W/m/K)

Outputs:
  • h_conv_cold (float) – Convective heat transfer coefficient (vector, dimensionless)

  • h_conv_hot (float) – Convective heat transfer coefficient (vector, dimensionless)

Options:

num_nodes (int) – Number of analysis points to run (scalar, dimensionless)

class openconcept.thermal.heat_exchanger.FinEfficiency(**kwargs)

Bases: ExplicitComponent

Computes overall heat transfer efficiency eta_0 including fin efficiency This accounts for the actual heat transfer being less than if the temperature of the fin were uniform. If conduction is not perfect, temperature drop along the fin results in less than unity efficiency.

Method described in Fundamentals of Heat and Mass Transfer 6th Edition (Incropera and DeWitt)

Inputs:
  • h_conv_cold (float) – Convective heat transfer coefficient (vector, dimensionless)

  • fin_area_ratio_cold (float) – Ratio of fin area to total heat transfer area (scalar, dimensionless)

  • channel_height_cold (float) – Height of each finned flow channel on the cold side (scalar, m)

  • h_conv_hot (float) – Convective heat transfer coefficient (vector, dimensionless)

  • fin_area_ratio_hot (float) – Ratio of fin area to total heat transfer area (scalar, dimensionless)

  • channel_height_hot (float) – Height of each finned flow channel on the hot side (scalar, m)

  • fin_thickness (float) – Thickness of fin material (scalar, m)

  • material_k (float) – Thermal conductivity of fin material (scalar, W/m/K)

Outputs:
  • eta_overall_cold (float) – Overall heat transfer efficiency including fin efficiency (vector, dimensionless)

  • eta_overall_hot (float) – Overall heat transfer efficiency including fin efficiency (vector, dimensionless)

Options:

num_nodes (int) – Number of analysis points to run (scalar, dimensionless)

class openconcept.thermal.heat_exchanger.UAOverall(**kwargs)

Bases: ExplicitComponent

Computes overall heat transfer coefficient for a heat exchanger

Method from Kays and London and Incropera and DeWitt

Inputs:
  • h_conv_cold (float) – Convective heat transfer coefficient (vector, W/m**2/K)

  • heat_transfer_area_cold (float) – Total cold-side heat transfer area (scalar, m**2)

  • eta_overall_cold (float) – Overall thermal efficiency for the cold side (vector, dimensionless)

  • h_conv_hot (float) – Convective heat transfer coefficient (vector, W/m**2/K)

  • heat_transfer_area_hot (float) – Total hot-side heat transfer area (scalar, m**2)

  • eta_overall_hot (float) – Overall thermal efficiency for the colhotd side (vector, dimensionless)

Outputs:

UA_overall (float) – Inverse overall thermal resistance for the entire heat exchanger (vector, W/K)

Options:
  • num_nodes (int) – Number of analysis points to run (scalar, dimensionless)

  • fouling_factor_hot (float) – Fouling factor, hot side (scalar, m**2 K / W)

  • fouling_factor_cold (float) – Fouling factor, cold side (scalar, m**2 K /W)

class openconcept.thermal.heat_exchanger.NTUMethod(**kwargs)

Bases: ExplicitComponent

Computes number of thermal units and maximum possible heat transfer.

Method described in Incropera and DeWitt and Kays and London

Inputs:
  • UA_overall (float) – Overall inverse thermal resistance (vector, W/K)

  • mdot_cold (float) – Mass flow rate, cold side (vector, kg/s)

  • T_in_cold (float) – Inlet temperature, cold side (vector, K)

  • cp_cold (float) – Specific heat at constant pressure, cold side (scalar, J/kg/K)

  • mdot_hot (float) – Mass flow rate, cold side (vector, kg/s)

  • T_in_hot (float) – Inlet temperature, hot side (vector, K)

  • cp_hot (float) – Specific heat at constant pressure, cold side (scalar, J/kg/K)

Outputs:
  • NTU (float) – Number of thermal units (vector, dimensionless)

  • heat_max (float) – Maximum possible heat transfer (vector, W)

  • C_ratio (float) – The ratio of the maximum mdot*cp to the maximum (vector, dimensionless)

Options:

num_nodes (int) – Number of analysis points to run (scalar, dimensionless)

class openconcept.thermal.heat_exchanger.CrossFlowNTUEffectiveness(**kwargs)

Bases: ExplicitComponent

Computes the heat transfer effectiveness of a crossflow heat exchanger

Expression from Kays and London

Inputs:
  • NTU (float) – Number of thermal units (vector, dimensionless)

  • C_ratio (float) – Ratio of mdot * cp _min to _max (vector, dimensionless)

Outputs:

effectiveness (float) – Heat transfer effectiveness (vector, dimensionless)

Options:

num_nodes (int) – Number of analysis points to run (scalar, dimensionless)

class openconcept.thermal.heat_exchanger.NTUEffectivenessActualHeatTransfer(**kwargs)

Bases: ExplicitComponent

Computes the actual heat transfer and outlet temperatures of a heat exchanger using the NTU-effectiveness method described in Kays and London and Incropera and DeWitt

Inputs:
  • effectiveness (float) – Heat transfer effectiveness (vector, dimensionless)

  • heat_max (float) – Maximum possible heat transfer (vector, W)

Outputs:

heat_transfer (float) – Actual heat transfer from hot to cold side (vector, W)

Options:

num_nodes (int) – Number of analysis points to run (scalar, dimensionless)

class openconcept.thermal.heat_exchanger.OutletTemperatures(**kwargs)

Bases: ExplicitComponent

Computes outlet temperatures of hot and cold streams, given mass flow rates, cp, and heat transfer

Inputs:
  • heat_transfer (float) – Actual heat transfer from hot to cold side (vector, W)

  • mdot_cold (float) – Mass flow rate, cold side (vector, kg/s)

  • T_in_cold (float) – Inlet temperature, cold side (vector, K)

  • cp_cold (float) – Specific heat at constant pressure, cold side (scalar, J/kg/K)

  • mdot_hot (float) – Mass flow rate, cold side (vector, kg/s)

  • T_in_hot (float) – Inlet temperature, hot side (vector, K)

  • cp_hot (float) – Specific heat at constant pressure, cold side (scalar, J/kg/K)

Outputs:
  • T_out_cold (float) – Outlet temperature, cold side (vector, K)

  • T_out_hot (float) – Outlet temperature, hot side (vector, K)

Options:

num_nodes (int) – Number of analysis points to run (scalar, dimensionless)

class openconcept.thermal.heat_exchanger.PressureDrop(**kwargs)

Bases: ExplicitComponent

Computes total pressure drop in the hot and cold streams

Method and estimated parameters from Kays and London

Inputs:
  • length_overall (float) – Overall length of the cold side flowpath (scalar, m)

  • width_overall (float) – Overall length of the hot side flowpath (scalar, m)

  • f_cold (float) – Fanning friction factor (vector, dimensionless)

  • mdot_cold (float) – Mass flow rate, cold side (vector, kg/s)

  • rho_cold (float) – Inlet density, cold side (vector, kg/m**3)

  • dh_cold (float) – Hydraulic diameter of the cold side flow channels (scalar, m)

  • xs_area_cold (float) – Cross-sectional flow area of the cold side (scalar, m**2)

  • f_hot (float) – Fanning friction factor (vector, dimensionless)

  • mdot_hot (float) – Mass flow rate, hot side (vector, kg/s)

  • rho_hot (float) – Inlet density, hot side (vector, kg/m**3)

  • dh_hot (float) – Hydraulic diameter of the hot side flow channels (scalar, m)

  • xs_area_hot (float) – Cross-sectional flow area of the hot side (scalar, m**2)

Outputs:
  • delta_p_cold (float) – Pressure drop, cold side. Negative is pressure drop (vector, Pa)

  • delta_p_hot (float) – Pressure drop, cold side. Negative is pressure drop (vector, Pa)

Options:
  • num_nodes (int) – Number of analysis points to run (scalar, dimensionless)

  • Kc_cold (float) – Irreversible contraction loss coefficient (per Kays and London) (scalar, dimensionless)

  • Ke_cold (float) – Irreversible expansion loss coefficient (per Kays and London) (scalar, dimensionless)

  • Kc_hot (float) – Irreversible contraction loss coefficient (per Kays and London) (scalar, dimensionless)

  • Ke_hot (float) – Irreversible expansion loss coefficient (per Kays and London) (scalar, dimensionless)

class openconcept.thermal.heat_exchanger.HXGroup(**kwargs)

Bases: Group

A heat exchanger model for use with the duct models Note that there are many design variables defined as dvs which could be varied in optimization.

Inputs:
  • mdot_cold (float) – Mass flow rate of the cold side (air) (vector, kg/s)

  • T_in_cold (float) – Inflow temperature of the cold side (air) (vector, K)

  • rho_cold (float) – Inflow density of the cold side (air) (vector, kg/m**3)

  • mdot_hot (float) – Mass flow rate of the hot side (liquid) (vector, kg/s)

  • T_in_hot (float) – Inflow temperature of the hot side (liquid) (vector, kg/s)

  • rho_hot (float) – Inflow density of the hot side (liquid) (vector, kg/m**3)