Skip to content

Latest commit

 

History

History
197 lines (146 loc) · 10.4 KB

osmotically_assisted_reverse_osmosis_0D.rst

File metadata and controls

197 lines (146 loc) · 10.4 KB

Osmotically Assisted Reverse Osmosis (0D)

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

Degrees of Freedom

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

Model Structure

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

Sets

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.

Variables

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}

Equations

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}}

Class Documentation