Unit Model Utilities
This section contains documentation for utility functions that can be used to help build and/or initialize unit models.
Calculate Operating Pressure
from watertap.core.util import calculate_operating_pressure
This function will estimate the operating pressure of a unit model based on the osmotic pressure of the inlet stream. It can accept the following arguments:
state_block: The state block of the RO feed that has the non-pressure state variables set to desired values. Can accept state blocks from NaCl or seawater property models.
over_pressure_factor: The amount of operating pressure above the brine osmotic pressure represented as a fraction (default=1.15)
water_recovery_mass: The mass-based fraction of inlet H2O that becomes permeate (default=0.5)
salt_passage: The mass-based fraction of inlet salt that becomes permeate (default=0)
solver: Solver object to be used (default=None)
A separate model of the provided state_block is created and the operating pressure is calculated based on the provided water_recovery_mass and salt_passage values.
The calculated operating pressure is returned in Pascals.
An example usage is provided below.
from pyomo.environ import ConcreteModel
from idaes.core import FlowsheetBlock
from watertap.property_models.seawater_prop_pack import SeawaterParameterBlock
from watertap.unit_models import ReverseOsmosis0D
from watertap.core.solvers import get_solver
from watertap.core.util import calculate_operating_pressure
# Create a state block with the desired inlet conditions
m = ConcreteModel()
m.fs = FlowsheetBlock(dynamic=False)
m.fs.properties = SeawaterParameterBlock()
m.fs.RO = ReverseOsmosis0D(
property_package=m.fs.properties,
concentration_polarization_type="none",
mass_transfer_coefficient="none",
has_pressure_change=False,
)
m.fs.RO.inlet.flow_mass_phase_comp[0, "Liq", "H2O"].fix(0.965)
m.fs.RO.inlet.flow_mass_phase_comp[0, "Liq", "TDS"].fix(0.035)
m.fs.RO.inlet.temperature.fix(273 + 25)
solver = get_solver()
operating_pressure = calculate_operating_pressure(
state_block=m.fs.RO.inlet,
over_pressure_factor=1.15,
water_recovery_mass=0.5,
salt_passage=0,
solver=solver,
)
m.fs.RO.inlet.pressure.fix(operating_pressure)