modelGenericDistributed_HXold

A (i.e., no inlet/outlet plenum considerations, etc.) generic heat exchanger with discritized fluid and wall volumes where concurrent/counter flow is specified mass flow direction.

Extends from TRANSFORM.Icons.ObsoleteModel (Icon for classes that are obsolete and will be removed in later versions).

Information

A generic heat exchanger for any relatively simple general purpose heat transfer process.


- Currently the nodes on the shell and tube side must be equal. The lengths do not however there are no geometry checks to ensure reasonable user input.

- The wall is currently fixed as a 2D cylinder but may be generalized in the future to allow user to select wall geometry. The 2D cyclinder though does not require the tubes/shell to be cylinders but will potentially impact the results depending on what thermal resistance dominates.

Parameters

TypeNameDefaultDescription
RealnParallel1# of identical parallel HXs
BooleancounterCurrenttrueSwap shell side temperature and flux vector order
Shell Initialization › Start Value: Absolute Pressure
SI.AbsolutePressureps_start_shelllinspace_1D(p_a_start_shell, p_b_start_shell, geometry.nV)Pressure
SI.AbsolutePressurep_a_start_shellMedium_shell.p_defaultPressure at port a
SI.AbsolutePressurep_b_start_shellp_a_start_shell + (if m_flow_a_start_shell > 0 then -1e3 elseif m_flow_a_start_shell < 0 then -1e3 else 0)Pressure at port b
Shell Initialization › Start Value: Temperature
Booleanuse_Ts_start_shelltrueUse T_start if true, otherwise h_start
SI.Temperature[geometry.nV]Ts_start_shelllinspace_1D(T_a_start_shell, T_b_start_shell, geometry.nV)Temperature
SI.TemperatureT_a_start_shellMedium_shell.T_defaultTemperature at port a
SI.TemperatureT_b_start_shellT_a_start_shellTemperature at port b
Shell Initialization › Start Value: Specific Enthalpy
SI.SpecificEnthalpyhs_start_shellif not use_Ts_start_shell then linspace_1D(h_a_start_shell, h_b_start_shell, geometry.nV) else {Medium_shell.specificEnthalpy_pTX(ps_start_shell[i], Ts_start_shell[i], Xs_start_shell[i, 1:Medium_shell.nX]) for i in 1:geometry.nV}Specific enthalpy
SI.SpecificEnthalpyh_a_start_shellMedium_shell.specificEnthalpy_pTX(p_a_start_shell, T_a_start_shell, X_a_start_shell)Specific enthalpy at port a
SI.SpecificEnthalpyh_b_start_shellMedium_shell.specificEnthalpy_pTX(p_b_start_shell, T_b_start_shell, X_b_start_shell)Specific enthalpy at port b
Shell Initialization › Start Value: Species Mass Fraction
SI.MassFraction[geometry.nV,Medium_shell.nX]Xs_start_shelllinspaceRepeat_1D(X_a_start_shell, X_b_start_shell, geometry.nV)Mass fraction
SI.MassFraction[Medium_shell.nX]X_a_start_shellMedium_shell.X_defaultMass fraction at port a
SI.MassFraction[Medium_shell.nX]X_b_start_shellX_a_start_shellMass fraction at port b
Shell Initialization › Start Value: Trace Substances
SIadd.ExtraProperty[geometry.nV,Medium_shell.nC]Cs_start_shelllinspaceRepeat_1D(C_a_start_shell, C_b_start_shell, geometry.nV)Mass-Specific value
SIadd.ExtraProperty[Medium_shell.nC]C_a_start_shellfill(0, Medium_shell.nC)Mass-Specific value at port a
SIadd.ExtraProperty[Medium_shell.nC]C_b_start_shellC_a_start_shellMass-Specific value at port b
Shell Initialization › Start Value: Mass Flow Rate
SI.MassFlowRatem_flows_start_shelllinspace(m_flow_a_start_shell, -m_flow_b_start_shell, geometry.nV + 1)Mass flow rates
SI.MassFlowRatem_flow_a_start_shell0Mass flow rate at port_a
SI.MassFlowRatem_flow_b_start_shell-m_flow_a_start_shellMass flow rate at port_b
Tube Initialization › Start Value: Absolute Pressure
SI.AbsolutePressureps_start_tubelinspace_1D(p_a_start_tube, p_b_start_tube, geometry.nV)Pressure
SI.AbsolutePressurep_a_start_tubeMedium_tube.p_defaultPressure at port a
SI.AbsolutePressurep_b_start_tubep_a_start_tube + (if m_flow_a_start_tube > 0 then -1e3 elseif m_flow_a_start_tube < 0 then -1e3 else 0)Pressure at port b
Tube Initialization › Start Value: Temperature
Booleanuse_Ts_start_tubetrueUse T_start if true, otherwise h_start
SI.Temperature[geometry.nV]Ts_start_tubelinspace_1D(T_a_start_tube, T_b_start_tube, geometry.nV)Temperature
SI.TemperatureT_a_start_tubeMedium_tube.T_defaultTemperature at port a
SI.TemperatureT_b_start_tubeT_a_start_tubeTemperature at port b
Tube Initialization › Start Value: Specific Enthalpy
SI.SpecificEnthalpyhs_start_tubeif not use_Ts_start_tube then linspace_1D(h_a_start_tube, h_b_start_tube, geometry.nV) else {Medium_tube.specificEnthalpy_pTX(ps_start_tube[i], Ts_start_tube[i], Xs_start_tube[i, 1:Medium_tube.nX]) for i in 1:geometry.nV}Specific enthalpy
SI.SpecificEnthalpyh_a_start_tubeMedium_tube.specificEnthalpy_pTX(p_a_start_tube, T_a_start_tube, X_a_start_tube)Specific enthalpy at port a
SI.SpecificEnthalpyh_b_start_tubeMedium_tube.specificEnthalpy_pTX(p_b_start_tube, T_b_start_tube, X_b_start_tube)Specific enthalpy at port b
Tube Initialization › Start Value: Species Mass Fraction
SI.MassFraction[geometry.nV,Medium_tube.nX]Xs_start_tubelinspaceRepeat_1D(X_a_start_tube, X_b_start_tube, geometry.nV)Mass fraction
SI.MassFraction[Medium_tube.nX]X_a_start_tubeMedium_tube.X_defaultMass fraction at port a
SI.MassFraction[Medium_tube.nX]X_b_start_tubeX_a_start_tubeMass fraction at port b
Tube Initialization › Start Value: Trace Substances
SIadd.ExtraProperty[geometry.nV,Medium_tube.nC]Cs_start_tubelinspaceRepeat_1D(C_a_start_tube, C_b_start_tube, geometry.nV)Mass-Specific value
SIadd.ExtraProperty[Medium_tube.nC]C_a_start_tubefill(0, Medium_tube.nC)Mass-Specific value at port a
SIadd.ExtraProperty[Medium_tube.nC]C_b_start_tubeC_a_start_tubeMass-Specific value at port b
Tube Initialization › Start Value: Mass Flow Rate
SI.MassFlowRatem_flows_start_tubelinspace(m_flow_a_start_tube, -m_flow_b_start_tube, geometry.nV + 1)Mass flow rates
SI.MassFlowRatem_flow_a_start_tube0Mass flow rate at port_a
SI.MassFlowRatem_flow_b_start_tube-m_flow_a_start_tubeMass flow rate at port_b
Wall Initialization › Start Value: Temperature
SI.Temperature[geometry.nR,geometry.nV]Ts_wall_startlinspaceRepeat_1D(Ts_wall_start_tubeSide, if counterCurrent then Modelica.Math.Vectors.reverse(Ts_wall_start_shellSide) else Ts_wall_start_shellSide, geometry.nR)Tube wall temperature
SI.Temperature[geometry.nV]Ts_wall_start_tubeSideMedium_tube.temperature_phX(ps_start_tube, hs_start_tube, Xs_start_tube)Tube side wall temperature
SI.Temperature[geometry.nV]Ts_wall_start_shellSideMedium_shell.temperature_phX(ps_start_shell, hs_start_shell, Xs_start_shell)Shell side wall temperature
Advanced › Dynamics
Modelica.Fluid.Types.Dynamics[3]energyDynamics{Dynamics.DynamicFreeInitial, Dynamics.DynamicFreeInitial, Dynamics.DynamicFreeInitial}Formulation of energy balances {shell,tube,tubeWall}
Modelica.Fluid.Types.Dynamics[2]massDynamicsenergyDynamics[1:2]Formulation of mass balances {shell,tube}
Dynamics[2]traceDynamicsmassDynamicsFormulation of trace substance balances {shell,tube}
Modelica.Fluid.Types.Dynamics[2]momentumDynamics{Dynamics.SteadyState, Dynamics.SteadyState}Formulation of momentum balances {shell,tube}
Advanced › Shell Side
BooleanallowFlowReversal_shelltrue= true to allow flow reversal, false restricts to design direction (port_a -> port_b)
BooleanexposeState_a_shelltrue=true, p is calculated at port_a else m_flow
BooleanexposeState_b_shellfalse=true, p is calculated at port_b else m_flow
BooleanuseLumpedPressure_shellfalse=true to lump pressure states together
LumpedLocationlumpPressureAt_shellLumpedLocation.port_aLocation of pressure for flow calculations
BooleanuseInnerPortProperties_shellfalse=true to take port properties for flow models from internal control volumes
Advanced › Tube Side
BooleanallowFlowReversal_tubetrue= true to allow flow reversal, false restricts to design direction (port_a -> port_b)
BooleanexposeState_a_tubetrue=true, p is calculated at port_a else m_flow
BooleanexposeState_b_tubefalse=true, p is calculated at port_b else m_flow
BooleanuseLumpedPressure_tubefalse=true to lump pressure states together
LumpedLocationlumpPressureAt_tubeLumpedLocation.port_aLocation of pressure for flow calculations
BooleanuseInnerPortProperties_tubefalse=true to take port properties for flow models from internal control volumes
Advanced › Tube Wall
Boolean[2]adiabaticDims{false, false}=true, toggle off conduction heat transfer in dimension {1,2}

Connectors

TypeNameDefaultDescription
TRANSFORM.Fluid.Interfaces.FluidPort_Flowport_a_tube
TRANSFORM.Fluid.Interfaces.FluidPort_Flowport_b_tube
TRANSFORM.Fluid.Interfaces.FluidPort_Flowport_a_shell
TRANSFORM.Fluid.Interfaces.FluidPort_Flowport_b_shell

Components

TypeNameDefaultDescription
Geometrygeometry
TRANSFORM.HeatAndMassTransfer.BoundaryConditions.Heat.CounterFlowcounterFlow
TRANSFORM.Fluid.Pipes.GenericPipeshell
TRANSFORM.Fluid.Pipes.GenericPipetube
TRANSFORM.HeatAndMassTransfer.DiscritizedModels.Conduction_2DtubeWall
TRANSFORM.HeatAndMassTransfer.BoundaryConditions.Heat.Adiabatic_multiadiabaticWall_a2
TRANSFORM.HeatAndMassTransfer.BoundaryConditions.Heat.Adiabatic_multiadiabaticWall_b2
BaseClasses.Summarysummary

Contents

NameDescription
Geometry
Medium_shellShell side medium
Medium_tubeTube side medium
Material_tubeWallTube wall material
FlowModel_shell
HeatTransfer_shell
FlowModel_tube
HeatTransfer_tube
InternalTraceGen_tube
InternalTraceGen_shell
InternalHeatGen_tube
InternalHeatGen_shell