Skip to content

Latest commit

 

History

History
176 lines (128 loc) · 8.25 KB

reverse_osmosis_0D.rst

File metadata and controls

176 lines (128 loc) · 8.25 KB

Reverse Osmosis (0D)

This reverse osmosis (RO) 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

pair: watertap.unit_models.reverse_osmosis_0D;reverse_osmosis_0D

watertap.unit_models.reverse_osmosis_0D

Degrees of Freedom

Aside from the inlet feed state variables (i.e. temperature, pressure, component flowrates), the RO model has at least 4 degrees of freedom that should be fixed for the unit to be fully specified.

Typically, the following variables are fixed, in addition to state variables at the inlet:
  • membrane water permeability, A
  • membrane salt permeability, B
  • permeate pressure
  • membrane area

On the other hand, configuring the RO unit to calculate concentration polarization effects, mass transfer coefficient, and pressure drop would result in 3 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
  • membrane length or membrane width or inlet Reynolds number

Model Structure

This RO model consists of 2 ControlVolume0DBlocks: one for the feed-side and one for the permeate-side.

  • 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 3 StateBlocks (properties_in, properties_out, and properties_mixed). The inlet and outlet StateBlocks are used to only determine the permeate solute concentration for solvent and solute flux at the feed-side inlet and outlet, while the mixed StateBlock is used for mass balance based on the average flux.

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] m/Pa/s
Solute permeability coefficient B B_comp [t, j] m/s
Mass density of solvent ρsolvent dens_solvent [p] kg/m3
Mass flux across membrane J flux_mass_phase_comp [t, x, p, j] kg/s/m2
Membrane area Am area None m2
Component recovery rate Rj recovery_mass_phase_comp [t, p, j] dimensionless
Volumetric recovery rate Rvol recovery_vol_phase [t, p] dimensionless
Observed solute rejection rj rejection_phase_comp [t, p, j] dimensionless
Over-pressure ratio Pf, out/Δπout over_pressure_ratio [t] dimensionless
Mass transfer to permeate Mp mass_transfer_phase_comp [t, p, j] 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 ΔP deltaP [t] Pa

if concentration_polarization_type is set to ConcentrationPolarizationType.fixed:

Description Symbol Variable Name Index Units
Concentration polarization modulus CPmod cp_modulus [t, j] dimensionless

if concentration_polarization_type is set to ConcentrationPolarizationType.calculated:

Description Symbol Variable Name Index Units
Mass transfer coefficient in feed channel kf Kf [t, x, j] 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 hch channel_height None m
Hydraulic diameter dh dh None m
Spacer porosity ϵsp spacer_porosity None dimensionless
Reynolds number Re N_Re [t, x] dimensionless

if mass_transfer_coefficient is set to MassTransferCoefficient.calculated:

Description Symbol Variable Name Index Units
Schmidt number Sc N_Sc [t, x] dimensionless
Sherwood number Sh N_Sh [t, x] 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 m
Membrane width W width None 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{ΔP}{Δx})_{avg}$ dP_dx [t] Pa/m

if pressure_change_type is set to PressureChangeType.calculated:

Description Symbol Variable Name Index Units
Feed-channel velocity vf velocity [t, x] m/s
Friction factor f friction_factor_darcy [t, x] dimensionless
Pressure drop per unit length of feed channel at inlet/outlet ΔP/Δx dP_dx [t, x] Pa/m

Equations

Description Equation
Solvent flux across membrane Jsolvent = ρsolventA(Pf − Pp − (πf − πp))
Solute flux across membrane Jsolute = B(Cf − Cp)
Average flux across membrane $J_{avg, j} = \frac{1}{2}\sum_{x} J_{x, j}$
Permeate mass flow by component j Mp, j = AmJavg, 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} = CP_{mod}C_{bulk}=C_{bulk}\exp(\frac{J_{solvent}}{k_f})-\frac{J_{solute}}{J_{solvent}}(\exp(\frac{J_{solvent}}{k_f})-1)$
Concentration polarization modulus CPmod = Cinterface/Cbulk
Mass transfer coefficient $k_f = \frac{D Sh}{d_h}$
Sherwood number Sh = 0.46(ReSc)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 Ac = hchWϵsp
Membrane area Am = LW
Pressure drop $ΔP = (\frac{ΔP}{Δx})_{avg}L$
Feed-channel velocity vf = Qf/Ac
Friction factor $f = 0.42+\frac{189.3}{Re}$
Pressure drop per unit length $\frac{ΔP}{Δ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

watertap.unit_models.reverse_osmosis_0D