watertap.examples.flowsheets.full_treatment_train.flowsheet_components.chemistry package
Submodules
watertap.examples.flowsheets.full_treatment_train.flowsheet_components.chemistry.PostTreatment_SimpleNaOCl_Chlorination module
Simple NaOCl Chlorination process
watertap.examples.flowsheets.full_treatment_train.flowsheet_components.chemistry.PreTreatment_Simple_Softening module
Simple Softening process with addition of Lime
watertap.examples.flowsheets.full_treatment_train.flowsheet_components.chemistry.SepRO_plus_Chlorination module
Simple example of a flowsheet containing an RO separator unit model and a simple NaOCl chlorination post-treatment unit model:
inlet ---> [RO Separator] ---> permeate ---> (Translator) ---> [Chlorination] ---> outlet
|
|
v
retentate (i.e., waste)
NOTE: The 2 unit models use a different set of state_vars. Thus, this will need to be resolved with some clever constraint formulation.
Both inlet and outlet streams use K for temperature and Pa for pressure (no change needed)
The flow from RO Separator uses kg/s for individual “species” (H2O and TDS)
The inlet for Chlorination uses a total molar flow rate in mol/s and mole fractions of individual species. To make the appropriate conversions, we will have to start by making some assumptions about the molecular weight of TDS.
- MW H2O = 18e-3 kg/mol MW TDS = 58.4e-3 kg/mol
(just assume all as NaCl? : MW Na = 23 g/mol MW Cl = 35.4 g/mol)
- Total Molar Flow = [ m.fs.RO.permeate.flow_mass_phase_comp[0, ‘Liq’, ‘H2O’]/(MW H2O) +
m.fs.RO.permeate.flow_mass_phase_comp[0, ‘Liq’, ‘TDS’]/(MW TDS) ]
- Molefraction of Na –> Based on TDS
= [m.fs.RO.permeate.flow_mass_phase_comp[0, ‘Liq’, ‘TDS’]/(MW TDS)] / (Total Molar Flow)
Molefraction of Cl = Molefraction of Na (1:1 ratio in the salt)
Molefraction of H2O –> Whatever is remaining
———- NOTE: This is only an example ———
watertap.examples.flowsheets.full_treatment_train.flowsheet_components.chemistry.ZeroDRO_plus_Chlorination module
Simple example of a flowsheet containing an RO separator unit model and a simple NaOCl chlorination post-treatment unit model:
inlet ---> [ 0D RO ] ---> permeate ---> (Translator) ---> [Chlorination] ---> outlet
|
|
v
retentate (i.e., waste)
NOTE: The 2 unit models use a different set of state_vars. Thus, this will need to be resolved with some clever constraint formulation.
Both inlet and outlet streams use K for temperature and Pa for pressure (no change needed)
The flow from RO Separator uses kg/s for individual “species” [H2O and TDS]
The inlet for Chlorination uses a total molar flow rate in mol/s and mole fractions of individual species. To make the appropriate conversions, we will have to start by making some assumptions about the molecular weight of TDS.
- MW H2O = 18e-3 kg/mol MW TDS = 58.4e-3 kg/mol
(just assume all as NaCl? : MW Na = 23 g/mol MW Cl = 35.4 g/mol)
- Total Molar Flow = [ m.fs.RO.permeate.flow_mass_phase_comp[0, ‘Liq’, ‘H2O’]/(MW H2O) +
m.fs.RO.permeate.flow_mass_phase_comp[0, ‘Liq’, ‘TDS’]/(MW TDS) ]
- Molefraction of Na –> Based on TDS
= [m.fs.RO.permeate.flow_mass_phase_comp[0, ‘Liq’, ‘TDS’]/(MW TDS)] / (Total Molar Flow)
Molefraction of Cl = Molefraction of Na (1:1 ratio in the salt)
Molefraction of H2O –> Whatever is remaining
———- NOTE: This is only an example ———
watertap.examples.flowsheets.full_treatment_train.flowsheet_components.chemistry.posttreatment_ideal_naocl_chlorination_block module
Ideal NaOCl Chlorination posttreatment process
This will build an ideal NaOCl pretreatment block as a combination of a Mixer (where NaOCl is added) and an EquilibriumReactor (where pH and free chlorine is calculated):
NaOCl stream
|
V
inlet stream ---> [Mixer] --- outlet stream ---> [EquilibriumReactor] ---> exit stream (to distribution)
watertap.examples.flowsheets.full_treatment_train.flowsheet_components.chemistry.pretreatment_stoich_softening_block module
Stoichiometric Softening pretreatment process
This will build a stoichiometric pretreatment process unit by unit. The overall process is diagrammed below:
Lime stream
|
V
inlet stream ---> [Mixer] --- outlet stream ---> [StoichiometricReactor] ---> mixed flow ... (see below)
...mixed flow ---> [Separator] ---> exit stream (to RO)
|
V
waste stream
Stoich Reactions:
Ca(HCO3)2 + Ca(OH)2 --> 2 CaCO3 + 2 H2O
Mg(HCO3)2 + 2 Ca(OH)2 --> 2 CaCO3 + Mg(OH)2 + 2 H2O
watertap.examples.flowsheets.full_treatment_train.flowsheet_components.chemistry.test_chlorination_example module
Simple unit tests for example flowsheet of SepRO with Chlorination.
NOTE: That flowsheet is not meant to be viewed as a final product, but a sample of how to incorporate more complex chemistry into a simple flowsheet.
watertap.examples.flowsheets.full_treatment_train.flowsheet_components.chemistry.test_posttreatment module
Simple unit tests for example flowsheet of SepRO with Chlorination.
NOTE: That flowsheet is not meant to be viewed as a final product, but a sample of how to incorporate more complex chemistry into a simple flowsheet.
watertap.examples.flowsheets.full_treatment_train.flowsheet_components.chemistry.test_pretreatment module
Simple unit tests for example flowsheet of SepRO with Chlorination.
NOTE: That flowsheet is not meant to be viewed as a final product, but a sample of how to incorporate more complex chemistry into a simple flowsheet.