Pressure Changer¶
The IDAES Pressure Changer model represents a unit operation with a single stream of material which undergoes a change in pressure due to the application of a work. The Pressure Changer model contains support for a number of different thermodynamic assumptions regarding the working fluid.
Degrees of Freedom¶
Pressure Changer units generally have one or more degrees of freedom, depending on the thermodynamic assumption used.
Typical fixed variables are:
- outlet pressure, \(P_{ratio}\) or \(\Delta P\),
- unit efficiency (isentropic or pump assumption).
Model Structure¶
The core Pressure Changer unit model consists of a single Holdup0D (named holdup) with one Inlet Port (named inlet) and one Outlet Port (named outlet).
Construction Arguments¶
Pressure Changers have the following construction arguments:
compressor - argument indicates whether the unit should be considered a compressor (True, default) or an expander/turbine (False). This determines how unit efficiency is calculated.
thermodynamic_assumption - indicates which thermodynamic assumption should be used when constructing the model. Options are:
- ‘isothermal’ - (default) assumes no temperature change occurs between the inlet and outlet of the unit.
- ‘isentropic’ - assumes isentropic behavior. This requires an additional set of property calculations for the isentropic outlet conditions.
- ‘pump’ - assumes that the fluid work is proportional to the pressure difference and flow rate of fluid. This is suitable for incompressible fluids.
property_package - property package to use when constructing 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.
property_package_args - set of arguments to be passed to the Property Blocks when they are created.
inlet_list - list of names to be passed to the build_inlets method (default = None).
num_inlets - number of inlets argument to be passed to the build_inlets method (default = None).
outlet_list - list of names to be passed to the build_outlets method (default = None).
num_outlets - number of outlets argument to be passed to the build_outlets method (default = None).
Additionally, Pressure Changers 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 | ‘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 | False |
has_work_transfer | True |
has_pressure_change | True |
Additional Constraints¶
In addition to the Constraints written by the Holdup Block, Pressure Changer writes additional Constraints which depend on the thermodynamic assumption chosen. All Pressure Changers add the following Constraint to calculate the pressure ratio:
Isothermal Assumption¶
The isothermal assumption writes one additional Constraint:
Isentropic Assumption¶
The isentropic assumption creates an additional set of Property Blocks (indexed by time) for the isentropic fluid calculations (named properties_isentropic). This requires a set of balance equations relating the inlet state to the isentropic conditions, which are shown below:
where \(F_{t,p,j}\) is the flow of component \(j\) in phase \(p\) at time \(t\) and \(s\) is the specific entropy of the fluid at time \(t\).
Next, the isentropic work is calculated as follows:
where \(H_{t,p}\) is the total energy flow of phase \(p\) at time \(t\). Finally, a constraint which relates the fluid work to the actual mechanical work via an efficiency term \(\eta\).
If compressor is True, \(W_{isentropic,t} = W_{mechanical,t} \times \eta_t\)
If compressor is False, \(W_{isentropic,t} \times \eta_t = W_{mechanical,t}\)
Pump (Incompressible Fluid) Assumption¶
The incompressible fluid assumption writes two additional constraints. Firstly, a Constraint is written which relates fluid work to the pressure change of the fluid.
where \(F_{vol,t}\) is the total volumetric flowrate of material at time \(t\) (from the outlet Property Block). Secondly, a constraint which relates the fluid work to the actual mechanical work via an efficiency term \(\eta\).
If compressor is True, \(W_{fluid,t} = W_{mechanical,t} \times \eta_t\)
If compressor is False, \(W_{fluid,t} \times \eta_t = W_{mechanical,t}\)
Variables¶
Pressure Changers contain the following Variables (not including those contained within the Holdup Block):
Variable | Name | Notes |
---|---|---|
\(P_{ratio}\) | ratioP | |
\(V_t\) | volume | Only if has_rate_reactions = True, reference to holdup.rate_reaction_extent |
\(W_{mechanical,t}\) | work_mechanical | Reference to holdup.work |
\(W_{fluid,t}\) | work_fluid | Pump assumption only |
\(\eta_{pump,t}\) | efficiency_pump | Pump assumption only |
\(W_{isentropic,t}\) | work_isentropic | Isentropic assumption only |
\(\eta_{isentropic,t}\) | efficiency_isentropic | Isentropic assumption only |
Isentropic Pressure Changers also have an additional Property Block named properties_isentropic (attached to the Unit Model, not the Holdup Block).
PressureChangerData Class¶
-
class
idaes.models.pressure_changer.
PressureChangerData
(component)[source]¶ Compressor/Expander Unit Class
-
init_isentropic
(state_args, outlvl, solver, optarg)[source]¶ Initialisation routine for 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
-
initialize
(state_args={}, routine=None, outlvl=0, solver='ipopt', optarg={'tol': 1e-06})[source]¶ General wrapper for pressure changer initialisation routines
Keyword Arguments: - routine – str stating which initialization routine to execute * None - use routine matching thermodynamic_assumption * ‘isentropic’ - use isentropic initialization routine * ‘isothermal’ - use isothermal initialization routine
- 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
-