What the calculation was checked against

Every design equation, constant and quoted range in KinetiRO Sim was read against Wastewater Engineering: Treatment and Resource Recovery, Metcalf & Eddy, 5th edition, and against IWA Scientific and Technical Report No. 9 for the activated sludge model.

Twelve equations and twelve tables reproduce the references exactly, along with the stoichiometric constants and the whole reagent list.

Twelve things were wrong. Three of them moved real answers. Three were values a user could type that the calculation then ignored — which is worse than a wrong answer, because the interface implies the input matters. The rest were citations that pointed at the wrong table while the values were right, five times over, which is the reason a plausible-looking reference is not evidence of anything either.

A second pass, made by running the shipped example train and chasing every check it raised, found more. All of it is below.

Why publish this

Because a verification that finds nothing is not evidence of anything. It is evidence that nobody looked hard.

There is a version of this page that lists the twelve equations we got right and stops. It would be true, it would be shorter, and it would be worth nothing to the only reader who matters — an engineer deciding whether to trust the number the tool just gave them. What that reader wants to know is not whether we are careful. It is what happens here when we are not.

So the failures are on the page, with what changed. So is the list of work we know is worth doing and have not done.

How it was checked

The reference text was extracted and searched directly. Every equation and every table was read in place rather than recalled. That distinction is not pedantry: the citations were wrong five times while the values were right, and only reading the page catches that.

The fixes are covered by regression suites that run the application under a headless browser. One suite checks, among other things, that the dissolved-oxygen saturation at 20 °C matches 9.092 × (1 + 0.40 × D_f / 10.33), that blower power matches Eq. 5-77a to 0.01 kW, that total nitrogen equals TKN plus nitrate with nitrogen gas excluded, and that the calculation core and the stream decoration agree on total nitrogen to 0.05 mg/L. Another solves the shipped example train and asserts that it raises no errors and no warnings — so the next change to a check or a correlation has to keep that example clean, or say why not.

What was found, and what changed

A — Dissolved-oxygen saturation did not match the reference table

The tool used the pre-1990 APHA cubic, which reads low everywhere and worst at the top of the range: −0.8% at 20 °C, −1.1% at 25 °C, −1.6% at 30 °C and −5.6% at 40 °C. Replaced with the Benson–Krause relation the reference appendix is tabulated from, which reproduces it to ±0.001 mg/L across 0–40 °C. It feeds both the saturation at 20 °C and the temperature ratio in the oxygen transfer equation, so it moved the aeration answer directly.

B — The mid-depth correction in the oxygen transfer equation was outside the book's range

It used a factor of 0.5 where the equation defines 0.25 to 0.45, typically 0.40, and a standard pressure of 10.33 m of water. Now 0.40 and 10.33 m.

C — The blower ignored its own inputs

It took a discharge pressure and an efficiency, used neither, and reported only air flow — while the correct equation was already implemented a hundred lines away for a different block. It now computes shaft power, pressure ratio, air mass flow and specific power, and it compares its duty against the process air the reactors downstream actually call for.

D — Total nitrogen was wrong in both directions

It counted the dissolved nitrogen gas that denitrification releases, which is not a permit constituent, and it omitted the organic nitrogen bound in the COD fractions, which on a nitrifying effluent is the larger of the two terms.

E — The influent's TKN was read and thrown away

The field existed, a user could type in it, and nothing downstream used the value.

F — Sludge age was never computed

A block's reference sheet discussed it, a design check warned that it was too short, and nothing calculated it. It is now derived over the converged flowsheet, counting only solids that actually cross a system boundary — solids going round the return loop have not left.

G — Five citations pointed at the wrong table while the values were right

Bar rack spacing, velocity and inclination were cited to Table 5-2, which is coarse screenings quantities; they are Table 5-4. Primary TSS removal was cited to Table 5-18, which is vortex grit chambers. Primary side water depth was cited to Table 5-19 rather than 5-20. Aeration hydraulic retention time was cited to Table 8-17, which is the sequencing batch reactor design procedure, rather than 8-19. Equalization mixing was cited to a chapter rather than a section.

All five corrected — and the bar rack rows now distinguish manually cleaned racks from mechanically cleaned ones, which the correct table gives as separate columns and the wrong one did not.

H — Filter media depths were misquoted

Anthracite was given as 12–24 in against the book's 360–900 mm, and sand as 6–16 in against 180–360 mm — inconsistent with the application's own bed designs, which were right. Corrected, with the typical value alongside.

I — A municipal strength range was quoted that does not appear in the table cited

"Medium-strength municipal COD 430–800 mg/L" is nowhere in that table, which gives 339, 508 and 1016 mg/L for low, medium and high strength. The guide now lists the book's three columns for COD, BOD₅, TSS, total nitrogen and total phosphorus.

J — A promised export did not exist

The project menu advertised a sealed .eaqua file, a PDF drawing or plain JSON, and offered the first two. JSON export is now there — the same format the import already read back.

The second pass — running the example train

The shipped example is a 1,000 m³/d food-and-beverage reuse scheme. Running it raised ten design checks. Five were faults in the example itself and were designed out of it. Two were faults in the model. One was a check calibrated against the wrong thing. The example now solves with no errors and no warnings; two reported figures remain, which is what reported figures are for.

K — The measured TKN did not reach the model

The most consequential item on this page. Model defaults are calibrated on municipal sewage. Point them at a strong, nitrogen-poor industrial feed and they invent nitrogen the water does not contain. On the worked example the default composition factors delivered 114.6 mg/L of TKN against the 60 mg/L that had been entered — a 91% overstatement — and the sludge stream carried 512 mg/L. The measured TKN now sets the total and the composition factors distribute it. That example's residuals stream now reads 240 mg/L.

A design check was added at the same time: when the scaling has had to move a long way from the municipal default, the tool says so, because at that point the nitrogen analysis and the COD fractionation are describing different water and one of them is wrong.

L — Element pressure drop was a flat allowance

Every membrane element was charged the same 0.35 bar regardless of the flow through it, which takes driving pressure out of exactly the elements that have least of it. On the example train the tail was reading 1.6 LMH against 29.7 at the lead. With the flow-dependent correlation in place the same array reads 2.9 LMH at the tail, and the train pressure drop falls from a modelled 4.2 bar to 2.0.

M — Two design checks were calibrated against the wrong thing

A screenings-volume range measured on municipal sewage fired on every industrial design; it is now scaled to the feed's own solids. A flux-spread check fired on essentially every standard membrane layout, because flux always tapers — that is what a taper is for. It now fires when the tail falls below a quarter of the array average, which is the useful question: has the back of the train stopped contributing?

N — Five faults in the example itself

Worth publishing because they are the kind of thing the checks exist to catch, and they were caught in our own shipped example.

  • The screen's half-blinded headloss was 622 mm, from 6 mm openings behind 10 mm bars at 37% open; it is now 189 mm.
  • The anaerobic reactor's energy balance was −218 kW, from 7 °C of lift on a 28 °C feed; it is now +83 kW, held at 30 °C.
  • The blower was specified at 500 Nm³/h against 670 demanded, and now delivers 750.
  • Its discharge pressure of 60 kPa reached 2.5 m against diffusers at 4.5 m, and is now 85 kPa reaching 5.1 m.
  • The RO array was 5 × 6 elements with a tail concentrate flow of 3.11 m³/h per vessel against a 3.2 m³/h floor; it is now 5 × 5, at 3.85 m³/h, with the lead element at 25.3 LMH against its 30 LMH rating.

O — The issue count included things that were not problems

The badge counted every note, so a finished design showed "10". It now counts errors and warnings; reported figures are listed under "For information" beneath the all-clear.

What is not verified against the book, and says so

The element-by-element membrane march goes beyond the reference

Metcalf & Eddy gives the solution–diffusion pair, Eqs. 11-38 and 11-39, and stops. The march itself, the concentration-polarisation factor, the temperature correction and the per-element manufacturer limits are standard membrane projection practice rather than textbook material. That is better engineering than the book's lumped treatment, and it is a different provenance, so we name it rather than letting a reader who has seen "M&E" on other blocks assume it here.

The Fenton block has no textbook design method

Its reference sheet says so. It is not an oversight.

Worth doing, not done

Four items are on our own list as worth doing and not yet done. They are published here in full, because a list of open work that is only kept internally is not a list, it is a private opinion.

  1. The clarifier could derive its settling curve from the sludge volume index, and does not

    The block takes an SVI and uses it only for the thickening ceiling, while the maximum settling velocity and the exponent for the flux curve have to be re-entered by hand. The reference gives a relation for exactly this, and a DSVI form beside it. Offering "derive from SVI" would make an input that is already on the form do the work it looks as though it does. A pointer to the equation has been added to the guide in the meantime.

  2. The RO array model goes beyond the book, and the block should say so more loudly than it does

    See the section above. A user reading "M&E" on other blocks may carry the assumption across.

  3. Influent TSS and the ASM3 particulate COD are not reconciled

    The influent sets suspended solids directly from the TSS you enter, while the reactions change it through the solids-to-COD factors. On the default preset those factors imply 394 mg/L against the 300 entered. Both are defensible — the TSS is measured, the factors are typical — but the gap propagates through the design. The treatment nitrogen just received, item K, would close it: let the measured value set the total and the factors set the distribution.

  4. Fenton has no book method

    The guide already says so. No change wanted; it is listed here so it is not mistaken for an oversight.

If you think it is still wrong

Tell us. Send the project file and what you expected. We would rather add to this page than not know.

contact@kinetiro.com, or through the contact page.

An account is required. During the beta every account gets full access, and no card is asked for.