# Pressure Exchanger

- This pressure exchanger unit model:
is 0-dimensional

is isothermal

supports a single liquid phase only

supports steady-state only

supports leakage and mixing effect

## Degrees of Freedom

Generally, pressure exchangers are not used in isolation and are part of an energy recovery system that includes a mixer, splitter, and a booster pump, as shown in Figure 1. This energy recovery system only adds one degree of freedom to the overall model.

- Typically, the following variables are fixed to fully specify the energy recovery system:
the pressure exchanger efficiency (efficiency_pressure_exchanger located on the pressure exchanger unit model)

the booster pump efficiency (efficiency_pump located on the pump unit model)

- Where the system is also subject to following constraints:
volumetric flowrate is equal on both sides of the pressure exchanger (constraint is included in pressure exchanger unit model)

booster pump matches the high pressure pump outlet pressure (constraint must be added by the user or at the mixer with the equality momentum mixing type option)

When setting the `has_mixing`

configuration option to `True`

, there is 1 additional variable `mixing_vol`

that must be fixed.

When setting the `has_leakage`

configuration option to `True`

, there is 1 additional variable `leakage_vol`

that must be fixed.

When setting the `pressure_exchange_calculation`

configuration option to `PressureExchangeType.high_pressure_difference`

,
there are 2 additional variables `high_pressure_difference`

and `low_pressure_difference`

that must be fixed. Instead, `efficiency_pressure_exchanger`

is unfixed.

## Model Structure

The pressure exchanger model consists of 2 ControlVolume0DBlocks: one for the feed side and brine side.

## Sets

Description |
Symbol |
Indices |
---|---|---|

Time |
\(t\) |
[0] |

Phases |
\(p\) |
[‘Liq’] |

Components |
\(j\) |
[‘H2O’, ‘NaCl’]* |

*Solute depends on the imported property package; example shown here is for the NaCl property model.

## Variables

The pressure exchanger unit model includes the following variables:

Description |
Symbol |
Variable Name |
Index |
Units |
Pyomo Type |
---|---|---|---|---|---|

Efficiency |
\(\eta\) |
efficiency_pressure_exchanger |
[t] |
\(\text{dimensionless}\) |
Var |

Volumetric leakage fraction |
\(\delta\) |
leakage_vol |
[t] |
\(\text{dimensionless}\) |
Var |

Volumetric mixing fraction |
\(\chi\) |
mixing_vol |
[t] |
\(\text{dimensionless}\) |
Var |

High pressure difference* |
\(HPD\) |
high_pressure_difference |
[t] |
\(\text{Pa}\) |
Var |

Low pressure difference* |
\(LPD\) |
low_pressure_difference |
[t] |
\(\text{Pa}\) |
Var |

*High pressure difference and low pressure difference are non-negative values

Each control volume (i.e. feed_side, and brine_side) has the following variables of interest:

Description |
Symbol |
Variable Name |
Index |
Units |
Pyomo Type |
---|---|---|---|---|---|

Pressure change |
\(ΔP\) |
deltaP |
[t] |
* |
Var |

Work |
\(W\) |
work |
[t] |
* |
Expression |

*Units depends on the imported property package

Each property block on both control volumes (i.e. properties_in and properties_out) has the following variables of interest:

Description |
Symbol |
Variable Name |
Index |
Units |
Pyomo Type |
---|---|---|---|---|---|

Mass flowrate |
\(M\) |
flow_mass_phase_comp |
[p, j] |
* |
Var |

Volumetric flowrate |
\(Q\) |
flow_vol |
None |
* |
Var |

Concentration |
\(C\) |
conc_mass_phase_comp |
[p, j] |
* |
Var |

Temperature |
\(T\) |
temperature |
[t] |
* |
Var |

Pressure |
\(P\) |
pressure |
[t] |
* |
Var |

*Units depends on the imported property package

## Equations

if `has_leakage`

and `has_mixing`

are set to default (`False`

):

Description |
Equation |
---|---|

Mass balance for each side |
\(M_{out, j} = M_{in, j}\) |

Momentum balance for each side |
\(P_{out} = P_{in} + ΔP\) |

Isothermal assumption for each side |
\(T_{out} = T_{in}\) |

Equal volumetric flowrate* |
\(Q_{out, F} = Q_{in, F}\) |

Equal pressure* |
\(P_{out, B} = P_{in, F}\) |

Pressure transfer* |
\(ΔP_{F} = - \eta ΔP_{B}\) |

* F stands for feed side, B stands for brine side

if `has_leakage`

is set to `True`

, then the equal volumetric flowrate equation is replaced by:

Description |
Equation |
---|---|

Equal volumetric flowrate |
\(Q_{out, F} = (1 - \delta) Q_{in, B}\) |

if `has_mixing`

is set to `True`

, the mass balance equations for each side become:

Description |
Equation |
---|---|

Mass balance for each side* |
\(M_{out, j} = M_{in, j} + MTT_{j}\) |

* MTT is mass transfer term into the control volume

and there are 3 additional constraints:

Description |
Equation |
---|---|

Mixing effect of solute* |
\(C_{out, F} = C_{in, F} (1-\chi) + C_{in, B} \chi\) |

Linking mass transfer terms |
\(MTT_{j, F} = -MTT_{j, B}\) |

Equal feed side volumetric flowrate |
\(Q_{out, F} = Q_{in, F}\) |

* C represents solute concentration

if `pressure_change_calculation`

is set to `PressureExchangeType.high_pressure_difference`

,
then there is 1 additional constraint and the equal pressure equation is replaced:

Description |
Equation |
---|---|

Pressure drop across B,in and F, out |
\(P_{out, F} + HPD = P_{in, B}\) |

Pressure drop across B, out and F, in |
\(P_{out, B} = P_{in, F} + LPD\) |