Usage¶
Installation¶
WaterOptim runs under Python 3.6+. To install it with pip, run the following:
pip install WaterOptim
Upgrade¶
To upgrade it with pip, run the following:
pip install --upgrade WaterOptim
Quickstart¶
WaterOptim proposes water networks with optimized water recovery schemes to preserve freshwater and minimize wastewater production. The tool supports water networks with one or more pollutants.
The optimization strategy includes 3 steps:
Inventory
Minimization of Freshwater and Wastewater
Design of Water-network
The inventory can be carried out on:
Water-using processSourcesSinks
Water-using process involves pollution transfer. The pollution comes from the product or the process.
The inventory includes:
Parameter |
Unit |
|
|---|---|---|
|
Mass flowrate of contaminant |
|
|
Maximum inlet concentration |
|
|
Maximum outlet concentration |
|
Example of Water-using process inventory:
posts = [
{"name":"process 1","cin_max":0,"cout_max":100,"mc":2},
{"name":"process 2","cin_max":50,"cout_max":100,"mc":5},
{"name":"process 3","cin_max":50,"cout_max":800,"mc":30},
{"name":"process 4","cin_max":400,"cout_max":800,"mc":4}
]
Source water flow, available for the REUSE.
The inventory includes:
Parameter |
Unit |
|
|---|---|---|
|
Water flowrate |
|
|
Outlet concentration |
|
Example of Sources inventory:
sources = [
{'name':'Distillation bottoms','c':0,'m':.8*3600/1000},
{'name':'Off-gas condensate','c':14,'m':5*3600/1000},
{'name':'Aqueous layer','c':25,'m':5.9*3600/1000},
{'name':'Ejector condensate','c':34,'m':1.4*3600/1000}]
Sink water requirement.
The inventory includes:
Parameter |
Unit |
|
|---|---|---|
|
Water flowrate |
|
|
Maximum inlet concentration |
|
Example of Sinks inventory:
demands = [
{'name':'BFW0','cin_max':0,'m':1.2*3600/1000},
{'name':'BFW','cin_max':10,'m':5.8*3600/1000},
{'name':'BFW1','cin_max':1,'m':19.8*3600/1000}]
Basic compilation
Import this module with the following command:
import WaterOptim.wpinch as wp
Compilation of water-using processes
r= wp.__pinch__(posts=posts,verbose=True,design=True)
Using the cascade attribute you can access the optimization details:
>> r.cascade
+---------+------------+-------------------+----------+----------+-----------+--------+--------+
| C ppm | Purity | Purity Difference | NWSD | CWSD | PWF | CPWF | FFW |
+---------+------------+-------------------+----------+----------+-----------+--------+--------+
| - | - | - | - | fw=90.00 | | | |
| 0 | 1.000000 | | -20.00 | | | | |
| | | 0.000050 | | 70.00 | 0.003500 | | |
| 50 | 0.999950 | | -140.00 | | | 0.00 | 70.00 |
| | | 0.000050 | | -70.00 | -0.003500 | | |
| {100} | {0.999900} | {} | {120.00} | {} | {} | {0.00} | {0.00} |
| | | 0.000300 | | 50.00 | 0.015000 | | |
| 400 | 0.999600 | | -10.00 | | | 0.01 | 37.50 |
| | | 0.000400 | | 40.00 | 0.016000 | | |
| 800 | 0.999200 | | 50.00 | | | 0.03 | 38.75 |
| | | 0.999200 | | 90.00 | 89.928000 | | |
| 1000000 | 0.000000 | | 0.00 | | | 89.96 | 89.96 |
| - | - | - | - | ww=90.00 | | | |
+---------+------------+-------------------+----------+----------+-----------+--------+--------+
To display the water network:
>> r.design.draw()