Electrocoagulation (ZO)
Model Type
This unit model is formulated as a single-input, double-output model form. See documentation for single-input, double-output Helper Methods.
Electricity Consumption
The constraint used to calculate energy consumption is described in the Additional Constraints section below. More details can be found in the unit model class.
Costing Method
Costing is calculated using the cost_electrocoagulation()
method.
For full details on costing, see documentation for the zero-order costing package.
Additional Variables
Description |
Variable Name |
Units |
---|---|---|
Cathode area |
cathode_area |
\(m^2\) |
Anode area |
anode_area |
\(m^2\) |
Electrode thickness |
electrode_thick |
\(m\) |
Electrode mass |
electrode_mass |
\(kg\) |
Electrode volume |
electrode_volume |
\(m^3\) |
Electrode gap |
electrode_gap |
\(m\) |
Conductivity |
conductivity |
\(S/m\) |
Applied current |
applied_current |
\(A\) |
Current efficiency |
current_efficiency |
\(dimensionless\) |
Cell voltage |
cell_voltage |
\(V\) |
Overpotential |
overpotential |
\(V\) |
Reactor volume |
reactor_volume |
\(m^3\) |
Metal dose |
metal_dose |
\(kg/L\) |
Ohmic resistance of solution |
ohmic_resistance |
\(Ω\) |
Charge loading rate |
charge_loading_rate |
\(C/l\) |
Current density |
current_density |
\(A/m^2\) |
Power required |
power_required |
\(W\) |
Floc basin volume |
floc_basin_vol |
\(m^3\) |
Floc retention time |
floc_retention_time |
\(min\) |
Overpotential calculation |
eq_overpotential |
Additional Constraints
Description |
Constraint Name |
---|---|
Charge loading rate equation |
eq_charge_loading_rate |
Total current required |
eq_applied_current |
Total electrode area required |
eq_electrode_area_total |
Cell voltage |
eq_cell_voltage |
Electrode volume |
eq_electrode_volume |
Cathode/Anode area |
eq_cathode_anode |
Total reactor volume |
eq_reactor_volume |
Total flocculation tank volume |
eq_floc_reactor_volume |
Ohmic resistance |
eq_ohmic_resistance |
Electrode mass |
eq_electrode_mass |
Power required |
eq_power_required |
Class Documentation
This module contains a zero-order representation of an electrocoagulation unit.
- class watertap.unit_models.zero_order.electrocoagulation_zo.ElectrocoagulationZO(*args, **kwds)
- Parameters:
rule (function) – A rule function or None. Default rule calls build().
concrete (bool) – If True, make this a toplevel model. Default - False.
ctype (class) –
Pyomo ctype of the block. Default - pyomo.environ.Block
Config args
- dynamic
All zero-order models are steady-state only
- has_holdup
Zero order models do not include holdup
- property_package
Property parameter object used to define property calculations, default - useDefault. Valid values: { useDefault - use default package from parent model or flowsheet, PhysicalParameterObject - a PhysicalParameterBlock object.}
- property_package_args
A ConfigBlock with arguments to be passed to a property block(s) and used when constructing these, default - None. Valid values: {see property package for documentation.}
- database
An instance of a WaterTAP Database to use for parameters.
- process_subtype
Process subtype to use when looking up parameters from database.
- isothermal
Isothermal assumption, or ignore temperature variables in unit. Default=True
- isobaric
Isobaric assumption, or ignore pressure variables in unit. Default=True
- electrode_material
Electrode material
- reactor_material
Reactor material
- overpotential_calculation
Determination of overpotential
initialize (dict) – ProcessBlockData config for individual elements. Keys are BlockData indexes and values are dictionaries with config arguments as keys.
idx_map (function) – Function to take the index of a BlockData element and return the index in the initialize dict from which to read arguments. This can be provided to override the default behavior of matching the BlockData index exactly to the index in initialize.
- Returns:
(ElectrocoagulationZO) New instance
- class watertap.unit_models.zero_order.electrocoagulation_zo.ElectrocoagulationZOData(component)[source]
Zero-order model for an electrocoagulation unit operation.
- build()[source]
General build method for UnitModelBlockData. This method calls a number of sub-methods which automate the construction of expected attributes of unit models.
Inheriting models should call super().build.
- Parameters:
None –
- Returns:
None
- calculate_scaling_factors()[source]
Placeholder scaling routine, should be overloaded by derived classes
- static cost_electrocoagulation(blk)[source]
General method for costing electrocoagulation.
- class watertap.unit_models.zero_order.electrocoagulation_zo.ElectrodeMaterial(value)[source]
Electrode material can be aluminum or iron. Default is aluminum. To run the model with iron electrodes, use
ElectrocoagulationZO(electrode_material="iron")
; otherwiseElectrocoagulationZO()
will default to aluminum electrodes.
- class watertap.unit_models.zero_order.electrocoagulation_zo.OverpotentialCalculation(value)[source]
An enumeration.
- class watertap.unit_models.zero_order.electrocoagulation_zo.ReactorMaterial(value)[source]
Reactor material can be PVC or stainless steel. Default is PVC. To run the model with stainless steel, use
ElectrocoagulationZO(reactor_material="stainless_steel")
; otherwise,ElectrocoagulationZO()
will default to PVC.