heat_pipe.py

class openconcept.thermal.heat_pipe.HeatPipe(**kwargs)

Bases: Group

Model for an ammonia heat pipe. After model has been run, make sure that the heat transfer is always less than the q_max output!

Inputs:
  • T_evap (float) – Temperature of connection to evaporator end of heat pipe (vector, degC)

  • q (float) – Heat transferred from evaporator side to condenser side by heat pipe (vector, W)

  • length (float) – Heat pipe length (scalar, m)

  • inner_diam (float) – Inner diameter of heat pipe vapor/wick section (scalar, m)

  • n_pipes (float) – Number of heat pipes in parallel; non-integer values are nonphysical but maintained for gradient optimization purposes (scalar, dimensionless)

  • T_design (float) – Max temperature expected in heat pipe, used to compute weight (scalar, degC)

Outputs:
  • q_max (float) – Maximum heat transfer possible by heat pipes before dry-out (vector, W)

  • T_cond (float) – Temperature of connection to condenser end of heat pipe (vector, degC)

  • weight (float) – Weight of heat pipe walls, excludes working fluid (scalar, kg)

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

  • length_evap (float) – Length of evaporator, default 0.25 m (scalar, m)

  • length_cond (float) – Length of condenser, default 0.25 m (scalar, m)

  • wall_conduct (float) – Thermal conductivity of wall material, default aluminum 7075 (scalar, W/(m-K))

  • wick_thickness (float) – Thickness of internal wick liner in heat pipe, default no wick (scalar, m)

  • wick_conduct (float) – Thermal conductivity of wick liner, default 4 (scalar, W/(m-K)) Note: default is from wick resistance on slide 21 of https://www.youtube.com/watch?v=JnS0ui8Pt64 and backs out thermal conductivity using an assumed thickness of ~0.005” (rough estimate based on the x-section picture)

  • yield_stress (float) – Yield stress of the heat pipe materia;, default 7075 aluminum (scalar, MPa)

  • rho_wall (float) – Density of the wall material, default 7075 aluminum (scalar, kg/m^3)

  • stress_safety_factor (float) – Factor of safety for the wall hoop stress, default 4 (scalar, dimensionless)

  • theta (float) – Tilt from vertical of heat pipe, default 0 deg; MUST be greater than or equal to 0 less than 90 (scalar, deg)

  • q_max_warn (float) – User will be warned if q input exceeds q_max_warn * q_max, default 0.75 (scalar, dimensionless)

class openconcept.thermal.heat_pipe.HeatPipeThermalResistance(**kwargs)

Bases: ExplicitComponent

Computes thermal resistance of a heat pipe with metal exterior, wicking liner, and vapor core.

Inputs:
  • inner_diam (float) – Inner diameter of vapor/wick portion of heat pipe (scalar, m)

  • wall_thickness (float) – Thickness of outer metallic wall of heat pipe, default 1.25 mm (scalar, m)

  • q (float) – Heat transferred through the pipe per unit time, should always be positive; must be specified if vapor_resistance = True, otherwise unused (vector, W)

  • delta_T (float) – Vapor temperature drop from one end of the heat pipe to the other; must be specified if vapor_resistance = True, otherwise unused (vector, degC)

Outputs:

thermal_resistance (float) – Effective thermal resistance of heat pipe, takes into account heat entering/exiting through pipe and wick boundary radially and traveling axially along the pipe (vector, K/W)

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

  • length_evap (float) – Length of evaporator, default 0.25 m (scalar, m)

  • length_cond (float) – Length of condenser, default 0.25 m (scalar, m)

  • wall_conduct (float) – Thermal conductivity of wall material, default aluminum 7075 (scalar, W/(m-K))

  • wick_thickness (float) – Thickness of internal wick liner in heat pipe, default no wick (scalar, m)

  • wick_conduct (float) – Thermal conductivity of wick liner, default 4 (scalar, W/(m-K)) Note: default is from wick resistance on slide 21 of https://www.youtube.com/watch?v=JnS0ui8Pt64 and backs out thermal conductivity using an assumed thickness of ~0.005” (rough estimate based on the x-section picture)

  • vapor_resistance (bool) – Set to true to include vapor resistance (usually negligible) in calculation, default false. If set to true, the q and temp inputs MUST be connected

class openconcept.thermal.heat_pipe.HeatPipeVaporTempDrop(**kwargs)

Bases: ExplicitComponent

Inputs the vapor space temp drop due to pressure drop

This component is hard-coded on ammonia and uses a curve fit of the slope of the temp-pressure curve applicable from -10C to 100C operating temperatures

Inputs:
  • q (float) – Heat transfer in the heat pipe (vector, W)

  • temp (float) – Mean temp of the heat pipe (vector, degC)

  • rho_vapor (float) – Vapor density (vector, kg/m3)

  • vapor_pressure (float) – Vapor pressure (vector, Pa)

  • inner_diam (float) – Inner diameter of the heat pipe (scalar, m)

  • length (float) – Length of the heat pipe (scalar, m)

Outputs:

delta_T (float) – Temperature differential across the vapor phase (vector, K)

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

  • Other options shouldn’t be adjusted since they’re for ammonia and there is a

  • hardcoded curve fit also for ammonia in the compute method

class openconcept.thermal.heat_pipe.HeatPipeWeight(**kwargs)

Bases: ExplicitComponent

Computes the weight of a heat pipe neglecting liquid/vapor weight. Uses a simple expression for hoop stress times a factor of safety.

Inputs:
  • design_pressure (float) – The maximum design vapor pressure (scalar, MPa)

  • inner_diam (float) – Inner diameter of the heat pipe (scalar, m)

  • length (float) – Length of the heat pipe (scalar, m)

Outputs:
  • heat_pipe_weight (float) – The material weight of the heat pipe tube (scalar, kg)

  • wall_thickness (float) – Thickness of heat pipe walls (scalar, m)

Options:
  • yield_stress (float) – Yield stress of the heat pipe material in MPa

  • rho_wall (float) – Density of the wall material in kg/m3

  • stress_safety_factor (float) – Factor of safety for the wall hoop stress

class openconcept.thermal.heat_pipe.AmmoniaProperties(**kwargs)

Bases: Group

Computes properties of ammonia at liquid-vapor equilibrium as a function of temperature using a cubic interpolation of data here: https://en.wikipedia.org/wiki/Ammonia_(data_page)#Vapor%E2%80%93liquid_equilibrium_data

NOTE: Data is from -75 to 100 deg C, any temps outside this range may be inaccurate

Inputs:

temp (float) – Temperature of ammonia liquid/vapor (vector, degC)

Outputs:
  • rho_liquid (float) – Ammonia liquid density (vector, kg/m^3)

  • rho_vapor (float) – Ammonia vapor density (vector, kg/m^3)

  • vapor_pressure (float) – Ammonia vapor pressure (vector, kPa)

Options:

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

class openconcept.thermal.heat_pipe.QMaxHeatPipe(**kwargs)

Bases: Group

Computes the maximum possible heat transfer rate of an ammonia heat pipe. As a rule of thumb, the heat pipe should stay below 75% of this value.

NOTE: This model uses experimental data to compute the ammonia surface tension

and liquid/vapor density, so it is invalid for any other working fluid. The walls are assumed to be 7075 Al with a factor of safety of 4

Inputs:
  • inner_diam (float) – Inner diameter of heat pipe (scalar, m)

  • length (float) – Length of the heat pipe (scalar, m)

  • temp (float) – Average temperature in heat pipe (vector, degC)

  • design_temp (float) – Max design temperature of the heat pipe (scalar, degC)

Outputs:
  • q_max (float) – Maximum heat transfer possible in heat pipe (vector, W)

  • heat_pipe_weight (float) – Weight of heat pipe walls (scalar, kg)

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

  • theta (float) – Tilt from vertical, default 0 deg (scalar, deg)

  • yield_stress (float) – Yield stress of the heat pipe material in MPa

  • rho_wall (float) – Density of the wall material in kg/m3

  • stress_safety_factor (float) – Factor of safety for the wall hoop stress

class openconcept.thermal.heat_pipe.QMaxAnalyticalPart(**kwargs)

Bases: ExplicitComponent

Computes the analytical part of the Q max calculation. For the overall Q max calculation, use the QMaxHeatPipe group, not this component.

Equations from https://www.1-act.com/resources/heat-pipe-performance/. Surface tension data from page 16 of http://web.iiar.org/membersonly/PDF/CO/databook_ch2.pdf. Both accessed on Aug 9, 2022.

Inputs:
  • inner_diam (float) – Inner diameter of heat pipe (scalar, m)

  • temp (float) – Average temperature in heat pipe (vector, K)

  • rho_liquid (float) – Density of working fluid in liquid form (vector, m)

  • rho_vapor (float) – Density of working fluid in vapor form (vector, m)

Outputs:

q_max (float) – Maximum heat transfer possible in heat pipe (vector, W)

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

  • theta (float) – Tilt from vertical, default 0 deg (scalar, deg)

  • latent_heat (float) – Latent heat of vaporization, default ammonia 1,371,200 J/kg (scalar, J/kg)

  • surface_tension_base (float) – Surface tension at 0 deg C, default ammonia (in 0-50 deg C range) 0.026 N/m (scalar, N/m)

  • surface_tension_incr (float) – Surface tension sensitivity w.r.t. temperature (used for linear estimate), default ammonia (in 0-50 deg C range) -2.3e-4 N/m/degC (scalar, N/m/degC)

class openconcept.thermal.heat_pipe.QMaxWarning(**kwargs)

Bases: ExplicitComponent

Component to warn user if the heat transfer ever exceeds a specified fraction of Q max.

Inputs:
  • q (float) – Heat transferred from evaporator side to condenser side by heat pipe (vector, W)

  • q_max (float) – Maximum heat transfer possible by heat pipes before dry-out (vector, W)

Outputs:

None

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

  • q_max_warn (float) – User will be warned if q input exceeds q_max_warn * q_max, default 0.75 (scalar, dimensionless)