- This osmotically assisted reverse osmosis (OARO) unit model
- is 0-dimensional
- supports a single liquid phase only
- supports steady-state only
- is based on the solution-diffusion model and film theory
- assumes isothermal conditions
- assumes the feed-side flows in the forward direction
- assumes the permeate-side flows in the backwards direction
.. index:: pair: watertap.unit_models.osmotically_assisted_reverse_osmosis_0D;osomtically_assisted_reverse_osmosis_0D
.. currentmodule:: watertap.unit_models.osmotically_assisted_reverse_osmosis_0D
Aside from the inlet feed state variables (i.e. temperature, pressure, component flowrates), the OARO model has at least 5 degrees of freedom that should be fixed for the unit to be fully specified. Unlike RO, which only accounts for concentration polarization on the feed side, the OARO model includes a structural parameter variable, which is used to calculate the membrane-interface concentration on the permeate side.
- Typically, the following variables are fixed for the OARO model, in addition to state variables at the inlet:
- membrane water permeability, A
- membrane salt permeability, B
- permeate pressure
- membrane area
- structural parameter
On the other hand, configuring the OARO unit to calculate concentration polarization effects, mass transfer coefficient, and pressure drop would result in 6 additional degrees of freedom. In this case, in addition to the previously fixed variables, we typically fix the following variables to fully specify the unit:
- feed-spacer porosity
- feed-channel height
- feed-velocity
- permeate-space porosity
- permeate-channel height
- membrane length or membrane width or inlet Reynolds number
This OARO model consists of a separate MembraneChannel0DBlock for the feed-side and the permeate-side of the membrane.
- The feed-side includes 2 StateBlocks (properties_in and properties_out) which are used for mass, energy, and momentum balances, and 2 additional StateBlocks for the conditions at the membrane interface (properties_interface_in and properties_interface_out).
- The permeate-side includes 2 StateBlocks (properties_in and properties_out) which are used for mass, energy, and momentum balances, and 2 additional StateBlocks for the conditions at the membrane interface (properties_interface_in and properties_interface_out).
Description | Symbol | Indices |
---|---|---|
Time | t | [0] |
Inlet/outlet | x | ['in', 'out'] |
Phases | p | ['Liq'] |
Components | j | ['H2O', 'NaCl']* |
*Solute depends on the imported property model; example shown here is for the NaCl property model.
Description | Symbol | Variable Name | Index | Units |
---|---|---|---|---|
Solvent permeability coefficient | A | A_comp | [t, j] | \text{m/Pa/s} |
Solute permeability coefficient | B | B_comp | [t, j] | \text{m/s} |
Mass density of solvent | \rho_{solvent} | dens_solvent | [p] | \text{kg/}\text{m}^3 |
Mass flux across membrane | J | flux_mass_phase_comp | [t, x, p, j] | \text{kg/s}\text{/m}^2 |
Membrane area | A_m | area | None | \text{m}^2 |
Component recovery rate | R_j | recovery_mass_phase_comp | [t, p, j] | \text{dimensionless} |
Volumetric recovery rate | R_{vol} | recovery_vol_phase | [t, p] | \text{dimensionless} |
Observed solute rejection | r_j | rejection_phase_comp | [t, p, j] | \text{dimensionless} |
Membrane structural parameter | S | structural_parameter | [None] | \text{m} |
Mass transfer to permeate | M_p | mass_transfer_phase_comp | [t, p, j] | \text{kg/s} |
The following variables are only built when specific configuration key-value pairs are selected.
if has_pressure_change
is set to True
:
Description | Symbol | Variable Name | Index | Units |
---|---|---|---|---|
Pressure drop | \Delta P | deltaP | [t] | \text{Pa} |
if concentration_polarization_type
is set to ConcentrationPolarizationType.fixed
:
Description | Symbol | Variable Name | Index | Units |
---|---|---|---|---|
Concentration polarization modulus in feed channel | CP_{mod,f} | feed_side.cp_modulus | [t, j] | \text{dimensionless} |
Concentration polarization modulus in permeate channel | CP_{mod,p} | permeate_side.cp_modulus | [t, j] | \text{dimensionless} |
if concentration_polarization_type
is set to ConcentrationPolarizationType.calculated
:
Description | Symbol | Variable Name | Index | Units |
---|---|---|---|---|
Mass transfer coefficient in feed channel | k_f | feed_side.K | [t, x, j] | \text{m/s} |
Mass transfer coefficient in permeate channel | k_p | permeate_side.K | [t, x, j] | \text{m/s} |
if mass_transfer_coefficient
is set to MassTransferCoefficient.calculated
or pressure_change_type
is set to PressureChangeType.calculated
:
Description | Symbol | Variable Name | Index | Units |
---|---|---|---|---|
Feed-channel height | h_{ch,f} | feed_side.channel_height | None | \text{m} |
Hydraulic diameter | d_{h,f} | feed_side.dh | None | \text{m} |
Spacer porosity | \epsilon_{sp,f} | feed_side.spacer_porosity | None | \text{dimensionless} |
Reynolds number | Re_{f} | feed_side.N_Re | [t, x] | \text{dimensionless} |
Permeate-channel height | h_{ch,p} | permeate_side.channel_height | None | \text{m} |
Hydraulic diameter | d_{h,p} | permeate_side.dh | None | \text{m} |
Spacer porosity | \epsilon_{sp,p} | permeate_side.spacer_porosity | None | \text{dimensionless} |
Reynolds number | Re_{p} | permeate_side.N_Re | [t, x] | \text{dimensionless} |
if mass_transfer_coefficient
is set to MassTransferCoefficient.calculated
:
Description | Symbol | Variable Name | Index | Units |
---|---|---|---|---|
Schmidt number | Sc_f | feed_side.N_Sc | [t, x] | \text{dimensionless} |
Sherwood number | Sh_f | feed_side.N_Sh | [t, x] | \text{dimensionless} |
Schmidt number | Sc_p | permeate_side.N_Sc | [t, x] | \text{dimensionless} |
Sherwood number | Sh_p | permeate_side.N_Sh | [t, x] | \text{dimensionless} |
if mass_transfer_coefficient
is set to MassTransferCoefficient.calculated
or pressure_change_type
is NOT set to PressureChangeType.fixed_per_stage
:
Description | Symbol | Variable Name | Index | Units |
---|---|---|---|---|
Membrane length | L | length | None | \text{m} |
Membrane width | W | width | None | \text{m} |
if pressure_change_type
is set to PressureChangeType.fixed_per_unit_length
:
Description | Symbol | Variable Name | Index | Units |
---|---|---|---|---|
Average pressure drop per unit length of feed channel | (\frac{\Delta P}{\Delta x})_{avg,f} | feed_side.dP_dx | [t] | \text{Pa/m} |
Average pressure drop per unit length of permate channel | (\frac{\Delta P}{\Delta x})_{avg,p} | permeate_side.dP_dx | [t] | \text{Pa/m} |
if pressure_change_type
is set to PressureChangeType.calculated
:
Description | Symbol | Variable Name | Index | Units |
---|---|---|---|---|
Feed-channel velocity | v_f | feed_side.velocity | [t, x] | \text{m/s} |
Friction factor | f | feed_side.friction_factor_darcy | [t, x] | \text{dimensionless} |
Pressure drop per unit length of feed channel at inlet/outlet | (\Delta P/\Delta x)_f | feed_side.dP_dx | [t, x] | \text{Pa/m} |
Permeate-channel velocity | v_p | permeate_side.velocity | [t, x] | \text{m/s} |
Pressure drop per unit length of permeate channel at inlet/outlet | (\Delta P/\Delta x)_p | permeate_side.dP_dx | [t, x] | \text{Pa/m} |
Description | Equation |
---|---|
Solvent flux across membrane | J_{solvent} = \rho_{solvent} A(P_{f} - P_p - (\pi_{f}-\pi_{p})) |
Solute flux across membrane | J_{solute} = B(C_{f} - C_{p}) |
Average flux across membrane | J_{avg, j} = \frac{1}{2}\sum_{x} J_{x, j} |
Permeate mass flow by component j | M_{p, j} = A_m J_{avg,j} |
Permeate-side solute mass fraction | X_{x, j} = \frac{J_{x, j}}{\sum_{x} J_{x, j}} |
Feed-side membrane-interface solute concentration | C_{interface,f} = CP_{mod,f}C_{bulk,f}=C_{bulk,f}\exp(\frac{J_{solvent}}{k_f})-\frac{J_{solute}}{J_{solvent}}(\exp(\frac{J_{solvent}}{k_f})-1) |
Permeate-side membrane-interface solute concentration | C_{interface,p} = CP_{mod,p}C_{bulk,p}=C_{bulk,p}\exp(-J_{solvent}(\frac{S}{D} + \frac{1}{k_p})) + \frac{J_{solute}}{J{solvent}}(1-\exp(-J_{solvent}(\frac{S}{D} + \frac{1}{k_p}))) |
Concentration polarization modulus | CP_{mod} = C_{interface}/C_{bulk} |
Mass transfer coefficient | k_f = \frac{D Sh}{d_h} |
Sherwood number | Sh = 0.46 (Re Sc)^{0.36} |
Schmidt number | Sc = \frac{\mu}{\rho D} |
Reynolds number | Re = \frac{\rho v_f d_h}{\mu} |
Hydraulic diameter | d_h = \frac{4\epsilon_{sp}}{2/h_{ch} + (1-\epsilon_{sp})8/h_{ch}} |
Cross-sectional area | A_c = h_{ch}W\epsilon_{sp} |
Membrane area | A_m = LW |
Pressure drop | \Delta P = (\frac{\Delta P}{\Delta x})_{avg}L |
Feed-channel velocity | v_f = Q_f/A_c |
Friction factor | f = 0.42+\frac{189.3}{Re} |
Pressure drop per unit length | \frac{\Delta P}{\Delta x} = \frac{1}{2d_h}f\rho v_f^{2} |
Component recovery rate | R_j = \frac{M_{p,j}}{M_{f,in,j}} |
Volumetric recovery rate | R_{vol} = \frac{Q_{p}}{Q_{f,in}} |
Observed solute rejection | r_j = 1 - \frac{C_{p,mix}}{C_{f,in}} |