Zero Order Unit Model Base Class

The zero-order unit model base class is intended to form the basis for a library of generic zero-order type (fixed performance) unit models. It defines a standard API for these types of unit operations and a set of common helper methods for building and working with these.


The ZeroOrderBaseData class contains no variables or constraints of its own - rather it is intended to be used as the starting point for construction of zero-order type models for specific unit operations.

The code below shows an outline of how the ZeroOrderBaseData class is intended to be used to develop custom zero-order type models.

from idaes.core import declare_process_block_class
from watertap.core import ZeroOrderBaseData

class MyZOUnitData(ZeroOrderBaseData):

  CONFIG = ZeroOrderBaseData.CONFIG()

  def build(self):

      self._tech_type = "my_technology"

      # Add necessary StateBlocks, Ports, Variables and Constraints
      # A library of methods for common model form is available,
      # or users can custom code their own components

Property Package Requirements

The ZeroOrderBase class makes a number of assumptions about the structure of the associated property package, and contains a number of checks to ensure the property package meets these requirements. The requirements for the property package are:

  1. A single phase named Liq.

  2. A single Solvent species named H2O (package must define a solvent_set with length one that contains “H2O”).

  3. All other species are defined as Solutes (package must define a solute_set and the component_list must be the union of solvent_set and solute_set).

  4. The property package must define flow_vol, conc_mass_comp, pressure and temperature as properties.

Class Documentation