prommis.nanofiltration.nf_brine_plot#
Nanofiltration flowsheet for Donnan steric pore model with dielectric exclusion
- prommis.nanofiltration.nf_brine_plot.add_objective(m)[source]#
Adds objective to the pyomo model
- Parameters:
m – pyomo model
- prommis.nanofiltration.nf_brine_plot.add_pressure_constraint(m, pressure_limit)[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_plot.add_recovery_constraint(m, recovery_limit)[source]#
Adds recovery constraint to the pyomo model
- Parameters:
m – pyomo model
recovery_limit – upper bound on the volume recovery
- prommis.nanofiltration.nf_brine_plot.build()[source]#
Builds the NF flowsheet
- Returns:
pyomo model
- Return type:
m
- prommis.nanofiltration.nf_brine_plot.calculate_scale(value)[source]#
Calculates a default scaling value
- prommis.nanofiltration.nf_brine_plot.collect_plot_data(m, area, li_rejection, mg_rejection, mg_li_ratio, feed_ratio, feed_pressure)[source]#
Stores the relevant information after each flowsheet solve to prepare plots
- Parameters:
m – pyomo model
area – list to store optimal membrane area (m2)
li_rejection – list to store lithium rejection
mg_rejection – list to store magnesium rejection
mg_li_ratio – list to store Mg:Li mass ratio of the permeate
feed_ratio – list to store Mg:Li mass ratio of the feed
feed_pressure – list to store the optimal feed pressure (bar)
- prommis.nanofiltration.nf_brine_plot.define_feed_composition()[source]#
Returns 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_plot.fix_initial_variables(m)[source]#
Fixes the initial variables needed to create 0 DOF
- Parameters:
m – pyomo model
- prommis.nanofiltration.nf_brine_plot.initialize(m, solver)[source]#
Initializes the flowsheet units
- Parameters:
m – pyomo model
solver – optimization solver
- prommis.nanofiltration.nf_brine_plot.initialize_sensitivity()[source]#
Makes plots to perform a sensitivity analysis on the nanofiltration flowsheet
- Returns:
list to store optimal membrane area (m2) li_rejection: list to store lithium rejection mg_rejection: list to store magnesium rejection mg_li_ratio: list to store Mg:Li mass ratio of the permeate feed_ratio: list to store Mg:Li mass ratio of the feed feed_pressure: list to store the optimal feed pressure (bar) recovery_vals: list that holds the volume recovery values to test
- Return type:
area
- prommis.nanofiltration.nf_brine_plot.main()[source]#
Builds and solves the NF flowsheet
- Returns:
pyomo model
- Return type:
m
- prommis.nanofiltration.nf_brine_plot.plot(area, li_rejection, mg_rejection, mg_li_ratio, feed_ratio, feed_pressure, recovery_vals)[source]#
Creates four subplots of the nanofiltration system, reporting ion rejection, Mg:Li ratio, membrane area, and feed pressure as the volume recovery of the membrane changes
- Parameters:
area – list to store optimal membrane area (m2)
li_rejection – list to store lithium rejection
mg_rejection – list to store magnesium rejection
mg_li_ratio – list to store Mg:Li mass ratio of the permeate
feed_ratio – list to store Mg:Li mass ratio of the feed
feed_pressure – list to store the optimal feed pressure (bar)
recovery_vals – list that holds the volume recovery values to test
- prommis.nanofiltration.nf_brine_plot.print_information(m)[source]#
Prints relevant information about the system
- prommis.nanofiltration.nf_brine_plot.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_plot.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_plot.set_nf_feed_scaling(blk)[source]#
Calculates the default scaling for the feed solution