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:
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.
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:
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.
-
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
-