0-D Heat Exchanger (HeatExchanger)

Heat Exchanger models represents a unit operation with two material streams which exchange heat. HeatExchanger (0-D) is used for modeling heat exchangers using an average heat transfer coefficient and driving force. For more complex models involving spatial domains, see HeatExchanger1D.

Degrees of Freedom

0-D Heat Exchangers generally have 2 degrees of freedom.

Typical fixed variables are:

  • heat transfer area,
  • heat transfer coefficient.

Alternatives include:

  • outlet temeprature of one stream,
  • heat duty.

Model Structure

The 0-D Heat Exchanger unit model consists of two Holdup0D Blocks (named side_1 and side_2), each with one Inlet Port (named side_1_inlet and side_2_inlet) and one Outlet Port (named side_1_outlet and side_2_outlet).

Construction Arguments

The 0-D Heat Exchanger model has the following construction arguments:

  • flow_type - argument indicating the flow arrangement within the Heat Exchanger. Currently only supports one option:

    • ‘counter-current’ - (default) counter current flow arrangement.
  • side_1_property_package - property package to use when constructing Property Blocks for side_1 of the Heat Exchanger (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.

  • side_1_property_package_args - set of arguments to be passed to the Property Blocks for side_1 when they are created.

  • side_1_inlet_list - list of names to be passed to the build_inlets method for side_1 (default = None).

  • side_1_num_inlets - number of inlets argument to be passed to the build_inlets method for side_1 (default = None).

  • side_1_outlet_list - list of names to be passed to the build_outlets method for side_1 (default = None).

  • side_1_num_outlets - number of outlets argument to be passed to the build_outlets method for side_1 (default = None).

  • side_2_property_package - property package to use when constructing Property Blocks for side_2 of the Heat Exchanger (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.

  • side_2_property_package_args - set of arguments to be passed to the Property Blocks for side_2 when they are created.

  • side_2_inlet_list - list of names to be passed to the build_inlets method for side_2 (default = None).

  • side_2_num_inlets - number of inlets argument to be passed to the build_inlets method for side_2 (default = None).

  • side_2_outlet_list - list of names to be passed to the build_outlets method for side_2 (default = None).

  • side_2_num_outlets - number of outlets argument to be passed to the build_outlets method for side_2 (default = None).

Additionally, 0-D Heat Exchangers have the following construction arguments which are passed to the Holdup Blocks for determining which terms to construct in the balance equations.

Argument Default Value
material_balance_type ‘component_phase’
energy_balance_type ‘enthalpy_total’
momentum_balance_type ‘pressure’
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

In addition to the Constraints written by the Holdup Blocks, 0-D Heat Exchanger models write the following Constraints:

\[Q_{1,t} = -Q_{2,t}\]

where \(Q_{1,t}\) and \(Q_{2,t}\) are the heat transfer in the side_1 and side_2 Holdup Blocks respectively.

\[Q_{1,t} = U \times A \times \Delta T_{m,t}\]

where \(U\) is the average heat transfer coefficient (assumed constant for now), \(A\) is the heat transfer area (also assumed constant) and \(\Delta T_{m,t}\) is the mean temperature driving force at time \(t\). The mean temperature driving force is represented using the log-mean temperature difference:

\[(\Delta T_{1,t} - \Delta T_{2,t})= \Delta T_{m,t} \times log(\frac{\Delta T_{1,t}}{\Delta T_{2,t}})\]

where \(\Delta T_{1,t}\) and \(\Delta T_{2,t}\) are the temperature difference at the side_1 inlet and outlet respectively. The Constraints defining these depend on the flow configuration of the unit.

Counter-Current Flow

If flow_type is set to ‘counter-current’, the following Constraints are used to define \(\Delta T_{1,t}\) and \(\Delta T_{2,t}\):

\[\Delta T_{1,t} = T_{side_1 in, t} - T_{side_2 out,t}\]
\[\Delta T_{2,t} = T_{side_1 out, t} - T_{side_2 in,t}\]

Variables

0-D Heat Exchangers contain the following Variables (not including those contained within the Holdup Blocks):

Variable Name Notes
\(V_{1,t}\) side_1_volume Only if include_holdup = True, reference to side_1.volume
\(V_{2,t}\) side_2_volume Only if include_holdup = True, reference to side_2.volume
\(Q_t\) heat Reference to side_1.heat
\(A\) heat_transfer_area  
\(U\) heat_transfer_coefficient  
\(\Delta T_{m,t}\) temperature_driving_force  
\(\Delta T_{1,t}\) side_1_inlet_dT  
\(\Delta T_{2,t}\) side_1_outlet_dT  

HeatExchangerData Class

class idaes.models.heat_exchanger.HeatExchangerData(component)[source]

Standard Heat Exchanger Unit Model Class

build()[source]

Begin building model (pre-DAE transformation)

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

General Heat Exchanger initialisation routine.

Keyword Arguments:
 
  • state_args_1 – a dict of arguments to be passed to the property package(s) for side 1 of the heat exchanger to provide an initial state for initialization (see documentation of the specific property package) (default = {}).
  • state_args_2 – a dict of arguments to be passed to the property package(s) for side 2 of the heat exchanger 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 - calls model checks for both Holdup Blocks.

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

Continue model construction after DAE transformation

Parameters:None
Returns:None