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"); otherwise ElectrocoagulationZO() 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.