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

prommis.nanofiltration.diafiltration.solve_model(m, tee=True)[source]#

Method to solve the diafiltration flowsheet

Parameters:

m – Pyomo model

prommis.nanofiltration.diafiltration.unfix_opt_variables(m)[source]#

Method to unfix variables for performing optimization with DOF>0

Parameters:

m – Pyomo model