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

Degrees of Freedom

Aside from the feed-side and permeate-side inlet state variables (i.e. temperature, pressure, component flowrates), the OARO model has at least 4 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

  • 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-side spacer porosity

  • feed-side channel height

  • permeate-side space porosity

  • permeate-side channel height

  • feed-side Reynolds number or water mass recovery

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

\(Δ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{ΔP}{Δx})_{avg,f}\)

feed_side.dP_dx

[t]

\(\text{Pa/m}\)

Average pressure drop per unit length of permate channel

\((\frac{ΔP}{Δ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

\((ΔP/Δ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

\((ΔP/Δ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

\(ΔP = (\frac{ΔP}{Δ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{Δ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