modelSTHX_BellDelaware

Shell and tube heat exchanger model using: tube-side: MSL dynamic pipe model; shell-side: Bell Delaware dP and heat transfer method

Information

The Bell-Delaware shell and tube heat exchanger model is based on the method presented by Edward S. Gaddis and Volker Gnielinski in the VDI Heat Atlas 2nd Edition (2010). This method is based off of the extensive work performed at the University of Delaware. The Bell-Delaware method consists of breaking down the pressure drop (dP) model into various sections of the heat exchanger (see Figure 1) while the heat transfer correlation model is more of a lumped parameter type approach. The traditional Bell-Delaware method employs diagrams while the Gaddis Gnielinski version has translated the information to equations. The tube side of the shell and tube heat exchanger is independent of the Bell-Delaware method and thus can be exchanged with any appropriate pipe model, dP model, and/or heat transfer model.

Figure 1: Pressure drop model breakdown into repeated sections

Notes:

  1. The pipe models for nozzle_a/b do NOT account for long lengths where dP_friction may be important. For this reason a nozzle_pipe has been added to nozzle_a/b which enables long entrance regions to have frictional dP and static head contributions to be accounted.
  2. Variables noted in the literature are the same as in this model. They have been kept identical as possible as to facililate reference to the source material to improve error catching, ability to reference the source material, and interpretation of the results.
  3. Figures identifying each of the variables is given below. If additional information is needed, the source material provides two excellent examples.

Application:

This method was developed for use with single phase (shell side - oil/water), cylindrical, single baffle segmented, shell and tube heat exchangers. The range of reported validity (+/- 35%) for the pressure drop and heat transfer correlation models are as follows:

Pressure Drop Model (pgs. 1092 - 1105):

1 < Re < 5*10^4

3 <= Pr <= 10^3

0.2 <= S/D_i <= 1.0

0.15 <= H/D_i <= 0.4

R_B <= 0.5

1.2 <= t/d_o <= 2.0

D_i/d_o > 10

f_L >= 0.4

f_B >= 0.4

Heat Transfer Model (pgs. 731 - 741)

10 < Re_psil < 10^5

3 < Pr < 10^3

0.2 <= S/D_i <= 1

R_G <= 0.8

R_L <= 0.8

R_B <= 0.5

1.2 <= t/d_o <= 2.2

f_w >= 0.3

Figure 2: Definition of S_1, S_2, d_o, and n_MR.

Note: In these examples ->

n_tubes = a) 69, b) 73, and c) 73. (n_bs assumed = 0)

n_MRE = a) 7, b) 9, and c) 13.

n_W_tubes = a) 12, b) 7, and c) 12. (n_W_bs assumed = 0)

n_RW = a) 2, b) 2, and c) 2.

Figure 3: Definition of e and e_1 ( a, b, and L_E are internall calculated).

S_1, S_2, and d_o are identical to what is presented in Figure 2.

Note: nes for these examples are a) 8, b) 8, c) 10.

Figure 4: Definition of d_N, S_E, and S. Specific values are just examples. In this example n_B = 8 and nPasses = 2.

Note: S_E_a/d_N_a is tubesheet to baffle spacing/nozzle diameter on the port_a side.

S_E_b/d_N_b is tubesheet to baffle spacing/nozzle diameter on the port_b side.

height_ab_shell is evenly distributed between windows as a simple means of capturing static pressure.

In this example height_ab_shell = D_i while nozzle elevation changes can be assigned with height_ab_nozzle_a/b.

Figure 5: Definition of H, D_i, D_l, and D_B. Specific values are just examples.

Note: D_BE is not shown as it is often equal to D_B for most heat exchanger layouts.

DB is the diameter of a circle, which touches the outermost tubes in the space between the upper and lower edges of adjacent baffles

D_BE is the diameter of a circle, which touches the outermost tubes of all tubes in the shell of the heat exchanger

Parameters

TypeNameDefaultDescription
RealnParallel1# of identical parallel STHXs
Realn_Tn_tubes + n_bsTotal # of tubes (including blind and support)
Realn_Wn_W_tubes + n_W_bsTotal # of tubes in both the upper and lower window (including blind and support)
SI.Lengthr_inner0.5*d_o - th_tubeInner radius of tube
IntegernNodes_intTotalnNodes_endCross + (nb - 1)*(nNodes_window + nNodes_centerCross) + nNodes_window + nNodes_endCrossTotal number of nodes internal to the shell (i.e., not including nozzles and entry pipes)
IntegernNodes_TotalnNodes_entryPipe_a + nNodes_nozzle + nNodes_intTotal + nNodes_nozzle + nNodes_entryPipe_bTotal number of nodes in the shell-side (i.e., including nozzles and entry pipes)
Shell Parameters
BooleanisGasfalsetrue if Medium is a gas
Realnp0Gas specific exponential correction factor (e.g., air = 0; N2 = 0.12)
SI.Lengthheight_a_shell0Shell Elevation at port_a: Reference value only. No impact on calculations.
SI.Lengthdheight_entryPipe_a0Height(shell inlet nozzle midpoint) - Shell Height(port_a)
SI.Lengthdheight_shell0Height(shell outlet nozzle midpoint) - Height(shell inlet nozzle midpoint)
SI.Lengthdheight_entryPipe_b0Shell Height(port_b) - Height(shell outlet nozzle midpoint)
Shell Side Part 1 › General Shell Parameters
BooleancounterCurrenttrueSwap temperature and flux vector order
BooleantoggleStaggeredtruetrue = staggered grid type; false = in-line
Realn_tubes1Total # of heat transfer tubes (n_T = n_bs + n_tubes)
Realn_bs0Total # of blind and support rods
SI.LengthDBD_iTube bundle diameter
SI.LengthD_BEDBDiameter of circle that touches outermost tubes
SI.Lengthd_oOuter diameter of tubes
SI.Lengthe10Space between tubes and shell
Realnes# of shortest connections connecting neighboring tubes
Shell Side Part 1 › Cross Flow Section Parameters
SI.LengthD_iInside shell diameter
Realn_MR# of main resistances in cross flow path
Realn_MRE# of main resistances in end cross flow path
Shell Side Part 1 › Window Section Parameters
Realn_W_tubesTotal # of heat transfer tubes in both the upper and lower window
Realn_W_bs0Total # of blind and support rods in uppper and lower window
Realn_RW# of tube rows in a window section
Realn_s0# of pairs of sealing strips
Shell Side Part 2 › Baffle Parameters
Integernb2# of baffles
SI.LengthHD_i/5Height of baffle cut
SI.LengthD_lD_iBaffle Diameter
SI.Lengthd_Bd_oDiameter of holes in baffles
SI.Lengths1Tube to tube pitch parallel to baffel edge
SI.Lengths2Tube to tube pitch perpindicular to baffel edge
SI.LengthSBaffle spacing between baffles
SI.LengthS_E_aSport a baffle spacing between the heat exchanger sheets and adjacent baffles
SI.LengthS_E_bSport b baffle spacing between the heat exchanger sheets and adjacent baffles
SI.Lengthth_B0Baffle thickness
Shell Side Part 2 › Entry/Exit Region Parameters
SI.Lengthd_N_aNozzle a diameter
SI.Lengthd_N_bNozzle b diameter
SI.Lengthlength_entryPipe_a0.001Length of entryPipe_a
SI.Lengthlength_entryPipe_b0.001Length of entryPipe_b
SI.Heightroughness_entryPipe_a2.5e-5Avg. height of surface asperities
SI.Heightroughness_entryPipe_b2.5e-5Avg. height of surface asperities
Tube Parameters
RealnPasses1Number of tube passes through the shell
SI.Lengthth_tube0.001Tube wall thickness
IntegernRadial3Nodes in radial direction in tube wall
SI.Heightroughness_tube2.5e-5Average height of the inner tube surface asperities
SI.Lengthheight_a_tube0Tube Elevation at port_a: Reference value only. No impact on calculations.
SI.Lengthdheight_tube0Tube Height(port_b) - Height(port_a)
Assumptions
BooleanallowFlowReversalsystem.allowFlowReversal= true to allow flow reversal, false restricts to design direction (port_a -> port_b)
Assumptions › Shell Dynamics
Modelica.Fluid.Types.DynamicsenergyDynamics_shellsystem.energyDynamicsFormulation of energy balances
Modelica.Fluid.Types.DynamicsmassDynamics_shellsystem.massDynamicsFormulation of mass balances
Modelica.Fluid.Types.DynamicsmomentumDynamics_shellsystem.momentumDynamicsFormulation of momentum balances
Assumptions › Tube Dynamics
Modelica.Fluid.Types.DynamicsenergyDynamics_tubesystem.energyDynamicsFormulation of energy balances
Modelica.Fluid.Types.DynamicsmassDynamics_tubesystem.massDynamicsFormulation of mass balances
Modelica.Fluid.Types.DynamicsmomentumDynamics_tubesystem.momentumDynamicsFormulation of momentum balances
Assumptions › Tube Wall Dynamics
Modelica.Fluid.Types.DynamicsenergyDynamics_wallsystem.energyDynamicsFormulation of energy balances
Shell Initialization › Start Value: Pressure
SI.AbsolutePressurep_a_start_shellsystem.p_startPressure at port a
SI.AbsolutePressurep_b_start_shellp_a_start_shellPressure at port b
Medium_shell.AbsolutePressureps_start_shelllinspace(p_a_start_shell, p_b_start_shell, nNodes_Total)Pressures {port_a,...,port_b}
Shell Initialization › Start Value: Temperature
Booleanuse_Ts_start_shelltrueUse T_start if true, otherwise h_start
Modelica.Media.Interfaces.Types.TemperatureT_a_start_shellsystem.T_startTemperature at port a
Modelica.Media.Interfaces.Types.TemperatureT_b_start_shellshell.T_a_startTemperature at port b
Medium_shell.TemperatureTs_start_shellif use_Ts_start_shell then cat(1, fill(T_a_start_shell, nNodes_entryPipe_a + nNodes_nozzle), linspace(T_a_start_shell, T_b_start_shell, nNodes_intTotal), fill(T_b_start_shell, nNodes_entryPipe_b + nNodes_nozzle)) else {Medium_shell.temperature_phX(ps_start_shell[i], hs_start_shell[i], X_start_shell) for i in 1:nNodes_Total}Temperatures {a,...,b}
Shell Initialization › Start Value: Specific Enthalpy
Modelica.Media.Interfaces.Types.SpecificEnthalpyh_a_start_shellMedium_shell.specificEnthalpy_pTX(shell.p_a_start, shell.T_a_start, shell.X_start)Specific enthalpy at port a
Modelica.Media.Interfaces.Types.SpecificEnthalpyh_b_start_shellMedium_shell.specificEnthalpy_pTX(shell.p_b_start, shell.T_b_start, shell.X_start)Specific enthalpy at port b
Medium_shell.SpecificEnthalpyhs_start_shellif use_Ts_start_shell then {Medium_shell.specificEnthalpy_pTX(ps_start_shell[i], Ts_start_shell[i], X_start_shell) for i in 1:nNodes_Total} else cat(1, fill(h_a_start_shell, nNodes_entryPipe_a + nNodes_nozzle), linspace(h_a_start_shell, h_b_start_shell, nNodes_intTotal), fill(h_b_start_shell, nNodes_entryPipe_b + nNodes_nozzle))Specific enthalpies {a,...,b}
Shell Initialization › Start Value: Mass Fractions
Modelica.Media.Interfaces.Types.MassFraction[Medium_shell.nX]X_start_shellMedium_shell.X_defaultMass fractions m_i/m
Shell Initialization › Start Value: Trace Substances
Modelica.Media.Interfaces.Types.ExtraProperty[Medium_shell.nC]C_start_shellfill(0, Medium_shell.nC)Trace substances
Shell Initialization › Start Value: Mass Flow Rate
SI.MassFlowRatem_flow_start_shellsystem.m_flow_startMass flow rate
Tube Initialization › Start Value: Absolute Pressure
Modelica.Media.Interfaces.Types.AbsolutePressurep_a_start_tubesystem.p_startPressure at port a
Modelica.Media.Interfaces.Types.AbsolutePressurep_b_start_tubetube.p_a_startPressure at port b
Modelica.Media.Interfaces.Types.AbsolutePressure[tube.nV]ps_start_tubeif tube.nV > 1 then linspace(tube.p_a_start, tube.p_b_start, tube.nV) else {(tube.p_a_start + tube.p_b_start)/2}Pressures {port_a,...,port_b}
Tube Initialization › Start Value: Temperature
Booleanuse_Ts_start_tubetrueUse T_start if true, otherwise h_start
Modelica.Media.Interfaces.Types.TemperatureT_a_start_tubesystem.T_startTemperature at port a
Modelica.Media.Interfaces.Types.TemperatureT_b_start_tubetube.T_a_startTemperature at port b
Modelica.Media.Interfaces.Types.Temperature[tube.nV]Ts_start_tubeif tube.use_Ts_start then if tube.nV > 1 then linspace(tube.T_a_start, tube.T_b_start, tube.nV) else {(tube.T_a_start + tube.T_b_start)/2} else {Medium_tube.temperature_phX(tube.ps_start[i], tube.hs_start[i], tube.Xs_start) for i in 1:tube.nV}Temperatures {port_a,...,port_b}
Tube Initialization › Start Value: Specific Enthalpy
Modelica.Media.Interfaces.Types.SpecificEnthalpyh_a_start_tubeMedium_tube.specificEnthalpy_pTX(tube.p_a_start, tube.T_a_start, tube.Xs_start)Specific enthalpy at port a
Modelica.Media.Interfaces.Types.SpecificEnthalpyh_b_start_tubeMedium_tube.specificEnthalpy_pTX(tube.p_b_start, tube.T_b_start, tube.Xs_start)Specific enthalpy at port b
Modelica.Media.Interfaces.Types.SpecificEnthalpy[tube.nV]hs_start_tubeif tube.use_Ts_start then {Medium_tube.specificEnthalpy_pTX(tube.ps_start[i], tube.Ts_start[i], tube.Xs_start) for i in 1:tube.nV} else if tube.nV > 1 then linspace(tube.h_a_start, tube.h_b_start, tube.nV) else {(tube.h_a_start + tube.h_b_start)/2}Specific enthalpies {port_a,...,port_b}
Tube Initialization › Start Value: Mass Fractions
Modelica.Media.Interfaces.Types.MassFraction[Medium_tube.nX]Xs_start_tubeMedium_tube.X_defaultMass fractions m_i/m
Tube Initialization › Start Value: Trace Substances
Modelica.Media.Interfaces.Types.ExtraProperty[Medium_tube.nC]Cs_start_tubefill(0, Medium_tube.nC)Trace substances
Tube Initialization › Start Value: Mass Flow Rate
Modelica.Media.Interfaces.PartialMedium.MassFlowRatem_flow_a_start_tubesystem.m_flow_startMass flow rate at port_a
Modelica.Media.Interfaces.PartialMedium.MassFlowRatem_flow_b_start_tube-tube.m_flow_a_startMass flow rate at port_b
Modelica.Media.Interfaces.PartialMedium.MassFlowRate[tube.nV + 1]m_flows_start_tubelinspace(tube.m_flow_a_start, -tube.m_flow_b_start, tube.nV + 1)Mass flow rates {port_a,...,port_b}
Advanced
IntegernNodes_entryPipe_a1Number of discrete flow volumes in entryPipe_a
IntegernNodes_entryPipe_b1Number of discrete flow volumes in entryPipe_a
IntegernNodes_nozzle1Number of discrete flow volumes in each nozzle
IntegernNodes_endCross1Number of discrete flow volumes in each endCross segment
IntegernNodes_window1Number of discrete flow volumes in each window segment
IntegernNodes_centerCross1Number of discrete flow volumes in each centerCross segment
Modelica.Fluid.Types.ModelStructuremodelStructure_shellModelica.Fluid.Types.ModelStructure.av_bDetermines whether flow or volume models are present at the ports
Modelica.Fluid.Types.ModelStructuremodelStructure_tubeModelica.Fluid.Types.ModelStructure.av_bSet ports as flow or volume models

Connectors

TypeNameDefaultDescription
Modelica.Fluid.Interfaces.FluidPort_aport_a_tube
Modelica.Fluid.Interfaces.FluidPort_bport_b_tube
Modelica.Fluid.Interfaces.FluidPort_aport_a_shell
Modelica.Fluid.Interfaces.FluidPort_bport_b_shell

Components

TypeNameDefaultDescription
Modelica.Fluid.SystemsystemSystem wide properties
Fluid.Pipes.GenericPipe_MultiTransferSurfacetube
TRANSFORM.HeatAndMassTransfer.DiscritizedModels.ClassicalMethod.Cylinder_FDtubewall
TRANSFORM.HeatAndMassTransfer.DiscritizedModels.ClassicalMethod.BoundaryConditions.Adiabatic_FDadiabatic_FD
TRANSFORM.HeatAndMassTransfer.DiscritizedModels.ClassicalMethod.BoundaryConditions.Adiabatic_FDadiabatic_FD1
TRANSFORM.HeatAndMassTransfer.DiscritizedModels.ClassicalMethod.Interfaces.ScalePowerscalePower_WallToTube
TRANSFORM.HeatAndMassTransfer.DiscritizedModels.ClassicalMethod.Interfaces.ScalePowerscalePower_WallToShell
BaseClasses.STHX_ShellSide_BellDelawareshell
SI.TemperatureDifferenceDT1_outputTemperature Difference 1 of LMTD
SI.TemperatureDifferenceDT2_outputTemperature Difference 2 of LMTD
SI.TemperatureDifferenceLMTD_outputLog Mean Temperature Difference
SI.CoefficientOfHeatTransferalphas_tubeAvg_outputAverage tube side heat transfer coefficient
SI.ThermalResistanceR_tube_outputTube side thermal resistivity
SI.ThermalConductanceUA_outputU*Area_heatTransfer
SI.AreasurfaceArea_total_outputTotal heat transfer area scaled by # of STHX. Based on outer tube diameter, d_o.
SI.CoefficientOfHeatTransferUoverall_outputOverall heat transfer coefficientOverall heat transfer coeffient based on the outside surface area
SI.CoefficientOfHeatTransferalphas_tube_outputper Node tube side heat transfer coefficient
SI.TemperatureTs_medium_tube_outputTube side wall temperature

Contents

NameDescription
Medium_tubeTube side medium
Tube_MaterialTube wall material
Medium_shellShell side medium
FlowModel_tube
HeatTransfer_tube