modelGenericDistributed_HX_withMass

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.

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
Heat Transfer
Booleanuse_HeatTransfer_tubetrue= true to use inner wall heat port (i.e., tube to wall)
Booleanuse_HeatTransfer_shelltrue= true to use outer wall heat port (i.e., wall to shell)
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_start_walllinspaceRepeat_1D(Ts_start_wall_tubeSide, if counterCurrent then Modelica.Math.Vectors.reverse(Ts_start_wall_shellSide) else Ts_start_wall_shellSide, geometry.nR)Tube wall temperature
SI.Temperature[geometry.nV]Ts_start_wall_tubeSideMedium_tube.temperature_phX(ps_start_tube, hs_start_tube, Xs_start_tube)Tube side wall temperature
SI.Temperature[geometry.nV]Ts_start_wall_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[3]traceDynamics{massDynamics[1], massDynamics[2], energyDynamics[3]}Formulation 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}
Trace Mass Transfer
IntegernC0Number of trace substances transfered through wall. Currently nC must be <= min(Medium_tube.nC,Medium_shell.nC)
Trace Mass Transfer › Shell
Booleanuse_TraceMassTransfer_shellfalse= true to use the TraceMassTransfer model
Trace Mass Transfer › Tube
Booleanuse_TraceMassTransfer_tubefalse= true to use the TraceMassTransfer model
Trace Mass Transfer › Wall
Boolean[2]adiabaticDimsMT{false, false}=true, toggle off diffusive mass transfer in dimension {1,2}
Real[geometry.nV,nC]nb_wall_shellSidefill(1, geometry.nV, nC)Exponential parameter of (C/kb)^nb (i.e., if Sievert than nb = 2)
Real[geometry.nV,nC]nb_wall_tubeSidefill(1, geometry.nV, nC)Exponential parameter of (C/kb)^nb (i.e., if Sievert than nb = 2)
Wall Initialization › Start Value: Concentration
SI.Concentration[geometry.nR,geometry.nV,nC]Cs_start_walllinspaceRepeat_1D_multi(Cs_start_wall_tubeSide, if counterCurrent then Modelica.Math.Matrices.flipUpDown(Cs_start_wall_shellSide) else Cs_start_wall_shellSide, geometry.nR)
SI.Concentration[geometry.nV,nC]Cs_start_wall_tubeSide{{tube.Cs_start[i, tube.traceMassTransfer.iC[j]]*Medium_tube.density_phX(ps_start_tube[i], hs_start_tube[i], Xs_start_tube[i, :])/tube.traceMassTransfer.MMs[j] for j in 1:nC} for i in 1:geometry.nV}Tube side wall concentration
SI.Concentration[geometry.nV,nC]Cs_start_wall_shellSide{{shell.Cs_start[i, shell.traceMassTransfer.iC[j]]*Medium_shell.density_phX(ps_start_shell[i], hs_start_shell[i], Xs_start_shell[i, :])/shell.traceMassTransfer.MMs[j] for j in 1:nC} for i in 1:geometry.nV}Shell side wall concentration
Visualization
BooleanshowNametrue
Advanced › Wall
SI.Density[geometry.nR,geometry.nV]ds_referenceMaterial_wall.density(Material_wall.setState_T(Ts_start_wall))Reference density of mass reference for constant volumes
Booleanuse_nCs_scaledfalse=true to use der(nCs_scaled) = nCbs/C_nominal else der(nCs) = nCbs.
Units.NonDim[nC]C_nominalfill(1e-6, nC)Nominal concentration [mol/m3] for improved numeric stability

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
Fluid.Pipes.GenericPipe_MultiTransferSurfaceshell
Fluid.Pipes.GenericPipe_MultiTransferSurfacetube
HeatAndMassTransfer.DiscritizedModels.HMTransfer_2DtubeWall
TRANSFORM.HeatExchangers.BaseClasses.Summarysummary
Real[geometry.nV,nC]Ka_shellSidefill(1, geometry.nV, nC)Fluid side solubility coefficient (i.e., Henry/Sievert)
Real[geometry.nV,nC]Kb_wall_shellSidefill(1, geometry.nV, nC)Wall side solubility coefficient (i.e., Henry/Sievert)
Real[geometry.nV,nC]Ka_tubeSidefill(1, geometry.nV, nC)Fluid side solubility coefficient (i.e., Henry/Sievert)
Real[geometry.nV,nC]Kb_wall_tubeSidefill(1, geometry.nV, nC)Wall side solubility coefficient (i.e., Henry/Sievert)
HeatAndMassTransfer.BoundaryConditions.Mass.CounterFlowcounterFlowM
HeatAndMassTransfer.BoundaryConditions.Heat.CounterFlowcounterFlow
HeatAndMassTransfer.BoundaryConditions.Mass.AdiabaticMass[geometry.nV]adiabaticM_shellSide
HeatAndMassTransfer.BoundaryConditions.Mass.AdiabaticMass[geometry.nR]adiabaticM_a
HeatAndMassTransfer.BoundaryConditions.Heat.Adiabatic[geometry.nV]adiabatic_shellSide
HeatAndMassTransfer.BoundaryConditions.Mass.AdiabaticMass[geometry.nR]adiabaticM_b
HeatAndMassTransfer.BoundaryConditions.Heat.Adiabatic[geometry.nR]adiabatic_b
HeatAndMassTransfer.BoundaryConditions.Heat.Adiabatic[geometry.nR]adiabatic_a
HeatAndMassTransfer.BoundaryConditions.Mass.AdiabaticMass[geometry.nV]adiabaticM_tubeSide
HeatAndMassTransfer.BoundaryConditions.Heat.Adiabatic[geometry.nV]adiabatic_tubeSide
HeatAndMassTransfer.Resistances.Mass.SolubilityInterface[geometry.nV]interfaceM_tubeSide
HeatAndMassTransfer.Resistances.Mass.SolubilityInterface[geometry.nV]interfaceM_shellSide

Contents

NameDescription
Geometry
Medium_shellShell side medium
Medium_tubeTube side medium
Material_wallTube wall material
FlowModel_shell
FlowModel_tube
HeatTransfer_shell
HeatTransfer_tube
InternalHeatGen_shell
InternalHeatGen_tube
InternalHeatModel_wall
TraceMassTransfer_shell
TraceMassTransfer_tube
InternalTraceGen_shell
InternalTraceGen_tube
InternalMassModel_wall
DiffusionCoeff_wall