1-D Heat Exchanger (HeatExchanger1D)

Heat Exchanger models represents a unit operation with two material streams which exchange heat. The IDAES 1-D Heat Exchanger model is used for detailed modeling of heat exchanger units with variations in one spatial dimension. For a simpler representation of a heat exchanger unit see Heat Exchanger (0-D).

Degrees of Freedom

1-D Heat Exchangers generally have 7 degrees of freedom.

Typical fixed variables are:

  • shell length and diameter,
  • tube length and diameter,
  • number of tube,
  • heat transfer coefficients (at all spatial points) for both shell and tube sides.

Model Structure

The core 1-D Heat Exchanger Model unit model consists of two Holdup1D Blocks (named shell and tube), each with one Inlet Port (named shell_inlet and tube_inlet) and one Outlet Port (named shell_outlet and tube_outlet).

Construction Arguments

1-D Heat Exchanger units have the following construction arguments:

  • flow_type - indicates the flow arrangement within the unit to be modeled. Options are:

    • ‘co-current’ - (default) shell and tube both flow in the same direction (from x=0 to x=1)
    • ‘counter-current’ - shell and tube flow in opposite directions (shell from x=0 to x=1 and tube from x=1 to x=0).
  • shell_property_package - property package to use when constructing shell side Property Blocks (default = ‘use_parent_value’). This is provided as a Property Parameter Block by the Flowsheet when creating the model. If a value is not provided, the Holdup Block will try to use the default property package if one is defined.

  • shell_property_package_args - set of arguments to be passed to the shell side Property Blocks when they are created.

  • shell_inlet_list - list of names to be passed to the shell side build_inlets method (default = None).

  • shell_num_inlets - number of inlets argument to be passed to the shell side build_inlets method (default = None).

  • shell_outlet_list - list of names to be passed to the shell side build_outlets method (default = None).

  • shell_num_outlets - number of outlets argument to be shell side passed to the build_outlets method (default = None).

  • tube_property_package - property package to use when constructing tube side Property Blocks (default = ‘use_parent_value’). This is provided as a Property Parameter Block by the Flowsheet when creating the model. If a value is not provided, the Holdup Block will try to use the default property package if one is defined.

  • tube_property_package_args - set of arguments to be passed to the tube side Property Blocks when they are created.

  • tube_inlet_list - list of names to be passed to the tube side build_inlets method (default = None).

  • tube_num_inlets - number of inlets argument to be passed to the tube side build_inlets method (default = None).

  • tube_outlet_list - list of names to be passed to the tube side build_outlets method (default = None).

  • tube_num_outlets - number of outlets argument to be passed to the tube side build_outlets method (default = None).

  • discretization_method_shell - indicates which method to use when discretizing shell side length domain. Note that this should be compatible with the tube side method. Options are:

    • ‘OCLR’ - orthogonal collocation on finite elements (Radau roots)
    • ‘OCLL’ - orthogonal collocation on finite elements (Legendre roots)
    • ‘BFD’ - backwards finite difference (1st order)
    • ‘FFD’ - forwards finite difference (1st order)
  • discretization_method_tube - indicates which method to use when discretizing tube side length domain. Note that this should be compatible with the shell side method. Options are:

    • ‘OCLR’ - orthogonal collocation on finite elements (Radau roots)
    • ‘OCLL’ - orthogonal collocation on finite elements (Legendre roots)
    • ‘BFD’ - backwards finite difference (1st order)
    • ‘FFD’ - forwards finite difference (1st order)
  • finite_elements - sets the number of finite elements to use when discretizing the spatial domains (default = 20). This is used for both shell and tube side domains.

  • collocation_points - sets the number of collocation points to use when discretizing the spatial domains (default = 3, collocation methods only). This is used for both shell and tube side domains.

  • has_mass_diffusion - indicates whether mass diffusion terms should be included in the material balance equations (default = False)

  • has_energy_diffusion - indicates whether energy conduction terms should be included in the energy balance equations (default = False)

Additionally, 1-D Heat Exchanger units have the following construction arguments which are passed to the Holdup Block for determining which terms to construct in the balance equations.

Argument Default Value
material_balance_type ‘component_phase’
energy_balance_type ‘total’
momentum_balance_type ‘total’
dynamic False
include_holdup False
has_rate_reactions False
has_equilibrium_reactions False
has_phase_equilibrium True
has_mass_transfer False
has_heat_transfer True
has_work_transfer False
has_pressure_change False

Additional Constraints

1-D Heat Exchanger models write the following additional Constraints to describe the heat transfer between the two sides of the heat exchanger. Firstly, the shell- and tube-side heat transfer is calculated as:

\[Q_{shell,t,x} = - N_{tubes} \times L_{shell} \times (\pi \times U_{shell,t,x} \times D_tube \times (T_{shell,t,x}-T_{wall,t,x}))\]

where \(Q_{shell,t,x}\) is the shell-side heat duty at point \(x\) and time \(t\), \(N_{tubes}\) \(D_{tube}\) are the number of and diameter of the tubes in the heat exchanger, \(U_{shell,t,x}\) is the shell-side heat transfer coefficient, and \(T_{shell,t,x}\) and \(T_{wall,t,x}\) are the shell-side and tube wall temperatures respectively.

\[Q_{tube,t,x} = - N_{tubes} \times L_{shell} \times (\pi \times U_{tube,t,x} \times D_tube \times (T_{wall,t,x}-T_{tube,t,x}))\]

where \(Q_{tube,t,x}\) is the tube-side heat duty at point \(x\) and time \(t\), \(U_{tube,t,x}\) is the tube-side heat transfer coefficient and \(T_{tube,t,x}\) is the tube-side temperature.

Finally, the following Constraints are written to describe the unit geometry:

\[4 \times A_{tube} = \pi \times D_{tube}^2\]
\[4 \times A_{shell} = \pi \times (D_shell^2 - N_{tubes} \times D_{tube}^2)\]

where \(A_{shell}\) and \(A_{tube}\) are the shell and tube areas respectively and \(D_{shell}\) and \(D_{tube}\) are the shell and tube diameters.

Variables

1-D Heat Exchanger units add the following additional Variables beyond those created by the Holdup Block.

Variable Name Notes  
\(L_{shell}\) length_shell Reference to shell.length
\(A_{shell}\) area_shell Reference to shell.area
\(D_{shell}\) d_shell  
\(L_{tube}\) length_tube Reference to tube.length
\(A_{tube}\) area_tube Reference to tube.area
\(D_{tube}\) d_tube  
\(N_{tubes}\) N_tubes  
\(T_{wall,t,x}\) temperature_wall  
\(U_{shell,t,x}\) heat_transfer_coefficient_shell  
\(U_{tube,t,x}\) heat_transfer_coefficient_tube  

HeatExchanger1dData Class

class idaes.models.heat_exchanger_1D.HeatExchanger1dData(component)[source]

Standard Heat Exchanger 1D Unit Model Class.

build()[source]

Begin building model (pre-DAE transformation).

Parameters:None
Returns:None
initialize(shell_state_args={}, tube_state_args={}, outlvl=0, solver='ipopt', optarg={'tol': 1e-06})[source]

Initialisation routine for isothermal unit (default solver ipopt).

Keyword Arguments:
 
  • state_args – a dict of arguments to be passed to the property package(s) to provide an initial state for initialization (see documentation of the specific property package) (default = {}).
  • outlvl

    sets output level of initialisation routine

    • 0 = no output (default)
    • 1 = return solver state for each step in routine
    • 2 = return solver state for each step in subroutines
    • 3 = include solver output infomation (tee=True)
  • optarg – solver options dictionary object (default={‘tol’: 1e-6})
  • solver – str indicating whcih solver to use during initialization (default = ‘ipopt’)
Returns:

None

model_check()[source]

Model checks for unit (call model check on holdups)

Parameters:None
Returns:None
post_transform_build()[source]

Continue model construction after DAE transformation.

Parameters:None
Returns:None