Activated sludge in a completely mixed tank, on the ASM2d model: nitrification, denitrification, biological phosphorus removal and chemical P precipitation. Set the volume and pick anaerobic, anoxic or aerobic. The kinetic and stoichiometric parameters come with reviewed defaults and every one of them is exposed for calibration.
Chain three — anaerobic, anoxic, aerobic — with a clarifier and a return line and you have an A2O plant.
In a steady-state run it reports where the tank settles. In a transient run it holds an inventory: a load peak is diluted over a residence time, and the population grows or washes out on its own timescale. The run starts from the tank's own steady state, so a disturbance study measures the disturbance and not the startup.
Two calculation methods, and they ask opposite questions about oxygen. DO setpoint — you say what dissolved oxygen you are holding, and it reports the oxygen demand that implies. Aeration — you give it the air flow, the diffuser SOTE and the submergence, and it works out the dissolved oxygen you actually get, along with the kLa and the transfer rate. The alpha, beta and fouling factors are all there to be argued with.
The reactions are much faster than the tank they sit in, so a transient run needs a shorter time step than the retention time suggests. The block works out its own limit and tells you the number.