prommis.nanofiltration.diafiltration#
Diafiltration cascade flowsheet case study example for separating lithium and cobalt. This flowsheet models a specific system from literature (cascade III in Figure 2 [1]) and serves as an example of implementing a custom cost model.
[1] https://pubs.acs.org/doi/full/10.1021/acssuschemeng.2c02862
- prommis.nanofiltration.diafiltration.add_costing(m)[source]#
Method to add costing block to the flowsheet
- Parameters:
m – Pyomo model
- prommis.nanofiltration.diafiltration.add_global_flowsheet_parameters(m)[source]#
Adds global parameters to the Pyomo model. These values are system-dependent.
- Parameters:
m – Pyomo model
- prommis.nanofiltration.diafiltration.add_objective(m)[source]#
Method to add cost objective to flowsheet for performing optimization
- Parameters:
m – Pyomo model
- prommis.nanofiltration.diafiltration.add_product_constraints(m, Li_recovery_bound, Co_recovery_bound, recovery=True, Li_purity_bound=None, Co_purity_bound=None, purity=False)[source]#
Method to add recovery/purity constraints to the flowsheet for performing optimization
- Parameters:
m – Pyomo model
- prommis.nanofiltration.diafiltration.add_stage1_constraints(blk, model)[source]#
Adds the constraints for the sieving coefficient model to stage 1
- Parameters:
blk – the MSContactor block (stage 1)
model – the Pyomo model (m)
- prommis.nanofiltration.diafiltration.add_stage2_constraints(blk, model)[source]#
Adds the constraints for the sieving coefficient model to stage 2
- Parameters:
blk – the MSContactor block (stage 2)
model – the Pyomo model (m)
- prommis.nanofiltration.diafiltration.add_stage3_constraints(blk, model)[source]#
Adds the constraints for the sieving coefficient model to stage 3
- Parameters:
blk – the MSContactor block (stage 3)
model – the Pyomo model (m)
- prommis.nanofiltration.diafiltration.add_streams(m)[source]#
Defines and connects streams in the flowsheet
- Parameters:
m – Pyomo model
- prommis.nanofiltration.diafiltration.add_useful_expressions(m)[source]#
Method to add recovery, purity, and membrane length expressions for convenience
- Parameters:
m – Pyomo model
- prommis.nanofiltration.diafiltration.build_model()[source]#
Builds the diafiltration flowsheet
- Returns:
Pyomo model
- Return type:
m
- prommis.nanofiltration.diafiltration.build_unit_models(m)[source]#
Adds the membrane stages and mixers to the flowsheet to build the cascade of interest
- Parameters:
m – Pyomo model
- Returns:
first membrane stage m.fs.stage2: second membrane stage m.fs.stage3: third membrane stage m.fs.mix1: mixer for stage 1 permeate and recycle into stage 2 m.fs.mix2: mixer for stage 2 permeate and diafiltrate into stage 3
- Return type:
m.fs.stage1
- prommis.nanofiltration.diafiltration.fix_stream_values(m)[source]#
Fixes the volumetric flow and concentration of streams
- Parameters:
m – Pyomo model
- prommis.nanofiltration.diafiltration.initialize_model(m)[source]#
Method to initialize the diafiltration flowsheet
- Parameters:
m – Pyomo model
- prommis.nanofiltration.diafiltration.main()[source]#
Builds and solves the diafiltration flowsheet with cost
- Returns:
Pyomo model
- Return type:
m
- prommis.nanofiltration.diafiltration.print_information(m)[source]#
Prints relevant information after solving the model
- Parameters:
m – Pyomo model
- prommis.nanofiltration.diafiltration.set_scaling(m)[source]#
Apply scaling factors to certain constraints to improve solver performance
- Parameters:
m – Pyomo model