prommis.nanofiltration.nf_brine#

Nanofiltration flowsheet for Donnan steric pore model with dielectric exclusion

prommis.nanofiltration.nf_brine.add_objective(m)[source]#

Adds objectives to the pyomo model

Parameters:

m – pyomo model

prommis.nanofiltration.nf_brine.add_pressure_constraint(m, pressure_limit=7000000.0)[source]#

Adds feed pressure constraint to the pyomo model

Parameters:
  • m – pyomo model

  • pressure_limit – upper bound on the outlet pump pressure

prommis.nanofiltration.nf_brine.build()[source]#

Builds the NF flowsheet

Returns:

pyomo model

Return type:

m

prommis.nanofiltration.nf_brine.calculate_scale(value)[source]#

Calculates a default scaling value

prommis.nanofiltration.nf_brine.define_feed_composition()[source]#

Defines the ion properties needed for the DSPM-DE property package

Ions include lithium, magnesium, and chloride, assuming LiCl and MgCl2 salts

diffusivity: - https://www.aqion.de/site/diffusion-coefficients - very confident

molecular weights: - very confident

Stokes radius: - average values from https://www.sciencedirect.com/science/article/pii/S138358661100637X - medium confident (averaged values from multiple studies) - reasonable orders of magnitude

ion charge: - very confident

The activity coefficient options are ideal or davies

prommis.nanofiltration.nf_brine.fix_initial_variables(m)[source]#

Fixes the initial variables needed to create 0 DOF

Parameters:

m – pyomo model

prommis.nanofiltration.nf_brine.initialize(m, solver)[source]#

Initializes the flowsheet units

Parameters:
  • m – pyomo model

  • solver – optimization solver

prommis.nanofiltration.nf_brine.main()[source]#

Builds and solves the NF flowsheet

Returns:

pyomo model

Return type:

m

prommis.nanofiltration.nf_brine.set_default_feed(m, solver)[source]#

Fixes the concentrations used to initialize the feed using the concentration of the Salar de Atacama (kg/m3 = g/L) Note: Cl- concentration will get overridden to enforce electroneutrality

Parameters:
  • m – pyomo model

  • solver – optimization solver

prommis.nanofiltration.nf_brine.set_nf_feed(blk, solver, flow_mass_h2o, conc_mass_phase_comp)[source]#

Calculates the concentration of the feed solution in molar flow rate

Parameters:
  • blk – flowsheet block

  • solver – optimization solver

  • flow_mass_h2o – inlet water flow rate (feed)

  • conc_mass_phase_conc – mass concentration (feed)

prommis.nanofiltration.nf_brine.set_nf_feed_scaling(blk)[source]#

Calculates the default scaling for the feed solution

prommis.nanofiltration.nf_brine.solve_model(m, solver)[source]#

Optimizes the flowsheet

Parameters:
  • m – pyomo model

  • solver – optimization solver

prommis.nanofiltration.nf_brine.unfix_optimization_variables(m)[source]#

Unfixes select variables to enable optimization with DOF>0

Parameters:

m – pyomo model