Watercalcs
Estimates only — verify before relying on results. Terms of Use
v3.1
About the Setup tab

This is where you describe the water sample, the dose, and the holding conditions you want to model. Everything updates automatically as you type — no button press needed.

Workflow:

  1. Pick a water character preset that best matches your source (you can fine-tune later in Calibration).
  2. Enter the water quality parameters you have. DOC is the most important; UV254 is used as a fallback if DOC is unknown.
  3. Enter the chlorine dose, contact pH and temperature.
  4. Set the simulation duration (how long to model the bulk reaction).
  5. Move to Results for the time-series, KPIs and compliance summary.

One thing to remember: this is a bulk-water simulation. It does not include chlorine consumed at the pipe wall. If you want to estimate the wall contribution for your network, the Wall Effect tab will back-calculate it from a field FAC reading.

Source water character
Character determines the decay rate constants and per-mg-Cl₂ DBP yields. Fine-tune in Calibration.
mg/L
mg/L
m⁻¹
m⁻¹
Pt-Co
L/mg·m

DOC drives the decay-rate constants. If DOC is not measured, the model back-estimates it from filtered UV254 using the preset SUVA.

Inorganic chlorine demand
mg/L
mg/L
mg/L
mg/L

Inorganic demand is subtracted instantly from the dose at breakpoint stoichiometry: 7.6 mg Cl₂/mg NH₃-N · 0.64 mg Cl₂/mg Fe · 1.29 mg Cl₂/mg Mn. Bromide does not consume chlorine but shifts THM speciation toward brominated species.

Dose & contact conditions
mg/L
°C
h
Live preview
About the Results tab

This is what your inputs predict over time. The KPI tiles at the top give you the headline numbers; the chart and table give you the full time-resolved view.

The numbers shown are bulk-water values — they describe how chlorine and DBPs evolve in a closed sample of water. In a real network, the FAC at a tap will be lower than the bulk prediction here because of pipe-wall demand. The MAV compliance flags assume the predicted bulk DBP levels are reached at the sampling point, which is conservative (real DBP at a tap is usually slightly higher than bulk, due to additional contact time).

Time-to-threshold is the hour at which bulk FAC drops to the network minimum set in Settings. Use the Wall Effect tab to estimate how much sooner this happens in your distribution system.

Bulk decay only. Predictions are for chlorine and DBPs reacting in the water itself, not at the pipe wall. Distribution-system FAC will be lower than shown.
Time series — FAC, TTHM, HAA
Time-resolved values
About the Speciation tab

This tab breaks the total THM and HAA values down into the individual species at a chosen time point and compares them to the MAVs.

For THMs, bromide drives the shift from chloroform toward the brominated species (BDCM, DBCM, bromoform). Even small bromide concentrations (>0.05 mg/L) can produce significant BDCM, which has the most stringent MAV (60 µg/L). For HAAs, the di- and tri-chlorinated species dominate in low-bromide waters; brominated HAAs become significant at higher bromide.

Pick a contact time below — the bars and table refresh automatically.

Contact time at sample point
Trihalomethanes (THMs)
Haloacetic acids (HAAs)
Species detail & MAV compliance

Sum-of-ratios is the sum of each species concentration divided by its MAV. A value below 1.0 means combined compliance is satisfied; above 1.0 indicates the combined group exceeds the regulatory threshold.

About the Wall Effect tab

The core model predicts bulk decay only. In a real distribution system, chlorine is also consumed at the pipe wall — by biofilm, corrosion products, tuberculation, and reactions with pipe materials. Total in-pipe decay is usually well-described by combining the bulk reaction with a first-order wall reaction:

Cpipe(t) = Cbulk(t) · exp(−kwall · t)

The wall coefficient kwall depends on pipe material, age, condition, and flow velocity. The reference table below gives literature ranges. You can either:

  1. Estimate from a field observation — give the tool an observed FAC at a known residence time in your network and it will back-calculate the implied kwall. This is the most useful method, because it matches the model to your real system.
  2. Enter a wall coefficient directly from the reference table or your own data.

The "in-pipe" curve below shows what the bulk model would predict if the wall effect were applied to your scenario.

Wall decay is highly site-specific. Coefficients from literature are starting points only — they can vary by an order of magnitude within the same material category depending on age and condition. For meaningful network predictions, back-calculate from a field observation in your own system.
Back-calculate from a field observation

Enter what you observe at a sampling point in your network. The tool compares to the bulk model and infers kwall.

h
mg/L
Direct wall coefficient entry

Apply a literature or measured kwall to your scenario.

h⁻¹
Default 0.005 h⁻¹ is typical of moderately aged lined ductile iron.
Bulk-only vs in-pipe (bulk + wall) chlorine decay
Wall decay coefficient — literature reference table
Pipe material / conditionTypical kwall range (h⁻¹)Notes
PVC, HDPE (smooth plastics, clean)0.0005 – 0.002Inert, minimal demand
PE-lined ductile iron (new / good condition)0.002 – 0.010Lining intact
Cement-lined cast iron (intact lining)0.005 – 0.015Mortar lining provides protection
Bitumen-lined ductile iron0.005 – 0.025Lining degrades with age
Unlined cast iron (mature biofilm)0.020 – 0.080Significant demand
Tuberculated cast iron / poor condition0.05 – 0.20Highly variable; site-specific
Galvanised steel (service lines)0.01 – 0.05Corrosion products consume Cl₂

Sources: Vasconcelos et al. (1997), Hallam et al. (2002), and field observations summarised in Brown et al. (2011). Values are order-of-magnitude indicators — measure or back-calculate for your network where possible.

About the Calibration tab

The defaults that ship with the tool will be roughly right for most NZ surface waters, but every catchment is different. This tab lets you:

  • Learn how to run a chlorine decay test and a DBP formation potential (DBPFP) series for your water.
  • Fit your data — paste time/FAC measurements and the tool will fit the capacity-limited decay parameters (fast and slow demand capacities and their rate constants) automatically.
  • Adjust coefficients manually in the table below, with help-text explaining what each one does.

The expandable sections below walk through the test protocols and the math, so it's a fairly self-contained workflow. Once you've fitted your data, hit "Apply to current preset" and the rest of the tool will use your calibrated coefficients.

How to run a chlorine decay test

A chlorine decay test characterises how chlorine reacts with the constituents in your water. It can be done in any well-equipped operations lab.

What you need:

  • A clean sample of your water, at the temperature and pH it experiences in service
  • A stock sodium hypochlorite solution of known strength
  • A DPD colorimeter or amperometric titrator for FAC measurement
  • Headspace-free glass bottles in a temperature-controlled bath or incubator
  • A clock and a notepad

Protocol:

  1. Collect your sample. Filter it through 0.45 µm if you want to characterise dissolved-only reactions. Use it within a few hours.
  2. Adjust pH to the value you want to model (target pH ±0.1). Bring the sample to the test temperature.
  3. Dose with a chlorine concentration similar to what you use operationally. For DBP formation potential, dose at 5 × DOC so chlorine isn't limiting.
  4. Mix briefly, then dispense into 10–12 amber bottles, filling each completely (no headspace). Cap and incubate at the test temperature.
  5. Sample one bottle at each timepoint: 0.25, 0.5, 1, 2, 4, 8, 24, 48, 96, 168 h. Measure FAC immediately.
  6. If you want DBPs as well, fix the chlorine residual at each timepoint with a quench reagent (e.g. sodium thiosulfate or sodium sulfite) and send to a lab for THM/HAA analysis.

Tips:

  • The fast phase happens in the first 1–4 hours — don't skip the early timepoints.
  • If chlorine drops below 0.2 mg/L before the end of the test, your dose was too low — repeat with a higher dose.
  • Run a blank (sample with no chlorine) to check for background interferences.
How to run a DBP formation potential (DBPFP) series

A DBPFP test tells you how much THM and HAA your water will form per unit of chlorine consumed. It is the basis for the kTHM and kHAA coefficients in the model.

Standard conditions (ICR / Standard Methods 5710):

  • Temperature: 20 °C (or your site temperature if you want a site-specific fit)
  • pH: buffered to 7.0 ± 0.2 (phosphate buffer)
  • Chlorine dose: enough to give a residual of 3–5 mg/L at the test endpoint (typically 4–6 × DOC)
  • Contact time: 7 days (168 h) for "ultimate" formation
  • Headspace-free, dark, sealed

Outputs:

  • FAC measured at start and endpoint (and ideally a kinetic curve in between)
  • Individual THM and HAA species measured at the endpoint

Calculating yields:

  • kTHM = total THMs (µg/L) ÷ chlorine consumed (mg/L)
  • kHAA = total HAAs (µg/L) ÷ chlorine consumed (mg/L)

For most NZ humic / fulvic waters these come out around 22–30 µg THM and 25–40 µg HAA per mg Cl₂ consumed. If you fit values well outside that range, double-check the test conditions.

Fit your chlorine decay data

Paste time-FAC pairs from your decay test (one pair per line, comma or tab separated). Include the dose at t=0 if you have it. The fitter uses the capacity-limited model to find the fast and slow demand capacities and their rate constants.

Format: time_in_hours, FAC_mg_per_L per line. Header row is optional and will be skipped.

No fit yet. Paste your data and click Fit my data.
Chlorine decay coefficients (capacity-limited model)

Free chlorine decays by reacting with a fast pool and a slow pool of organic sites, each with a finite demand capacity. The dose fills the fast pool first, then the slow pool; any genuine excess persists. Capacities scale with water character (fast pool with filtered UV254, slow pool with DOC), so reducing the dose correctly reduces — or eliminates — the surviving residual. Rate constants are linear functions of filtered UV254.

Fast pool demand capacity (mg Cl₂/L per unit fUV254)
Slow pool demand capacity (mg Cl₂/L per mg/L DOC)
kR — fast rate intercept (h⁻¹)
kR — slope vs fUV254
kS — slow rate intercept (h⁻¹)
kS — slope vs fUV254
Background persistence kBg (h⁻¹, excess chlorine)
Assumed SUVA (fUV254/DOC) for missing-input fallback
Activation energy Ea for decay (kJ/mol)
pH sensitivity for decay (× per pH unit, around 7.5)
Character multiplier on demand capacities
DBP formation coefficients

DBP formation is bounded by two limits and takes the smaller at each time: the ultimate formation potential (set by DOC and NOM character, scaled by reaction-time progress) and what the chlorine actually consumed can support. At normal doses the ultimate-FP limit binds; when the dose is low the chlorine limit binds, so formation is correctly suppressed without leaving a false residual. Per-DOC yields rise with SUVA and are floored to stay physical for low-aromaticity waters.

TTHM yield — intercept (µg per mg DOC)
TTHM yield — slope vs SUVA
TTHM yield — floor (µg per mg DOC)
HAA yield — intercept (µg per mg DOC)
HAA yield — slope vs SUVA
HAA yield — floor (µg per mg DOC)
TTHM yield per mg Cl₂ consumed (chlorine-limited path)
HAA yield per mg Cl₂ consumed (chlorine-limited path)
TTHM time-progress constant τ (h)
HAA time-progress constant τ (h)
Site-specific yield multiplier (default 1.0)
Activation energy Ea for formation (kJ/mol)
pH sensitivity for THM formation (× per pH unit, around 7.5)
pH sensitivity for HAA formation (× per pH unit, around 7.5)
Bromide enhancement of total THM (per mg/L Br⁻)
Bromide incorporation factor (η, dimensionless)
Low-SUVA reactivity correction

The decay and DBP relationships are calibrated on moderate-to-aromatic waters (SUVA roughly 1.9 – 3.7). In waters with very low SUVA — high DOC but low aromaticity — filtered UV254 over-states reactivity, so the model would otherwise decay too fast and over-predict HAA. This correction bends the rate constants and yields down. It is identically inactive (severity = 0) at or above the SUVA threshold, so it never changes moderate or aromatic predictions; it only engages for low-SUVA inputs. Severity = max(0, (threshold − SUVA) / threshold).

SUVA threshold (correction inactive at or above this)
Fast-pool capacity reduction per unit severity
Fast-rate increase per unit severity
Slow-rate increase per unit severity
TTHM yield reduction per unit severity
HAA per-DOC yield slope below threshold
THM speciation (low-bromide baseline)
Chloroform fraction
BDCM fraction
DBCM fraction
Bromoform fraction
HAA speciation (low-bromide baseline)
MCAA fraction
DCAA fraction
TCAA fraction
MBAA fraction
DBAA fraction
BCAA fraction
BDCAA fraction
About the Report & Save tab

This is the only place where data leaves the tool. Three options:

  • PDF report — formatted document with the tabs you select, ready to attach to an email or store with a project record. Uses your browser's print-to-PDF.
  • CSV download — the time-resolved data and key results, ready to open in a spreadsheet for further analysis.
  • JSON save — a single file containing every input, every coefficient and all results. Re-load it later to pick up exactly where you left off.

The PDF and CSV always reflect the current model state; if you change an input after generating one, just regenerate.

PDF report

Choose which tabs to include. The browser print dialogue will open — pick "Save as PDF" as the destination.

Tip: in the print dialogue, set "Margins" to default and "Headers and footers" off for a clean output.

CSV download

Includes time-resolved FAC, TTHM, HAA values plus the species breakdown at each timestep.

File name: cld_results_YYYYMMDD.csv

JSON save

Saves all inputs, coefficients, settings, and the time-series results to a single file.

File name: cld_scenario_YYYYMMDD_HHmm.json

JSON load

Restore a previously saved scenario.

All current values will be replaced.

Snapshot — what's in the current scenario