Where to Do the Square Root on Orifice Flow, and Why It Jitters at Low Flow
Orifice DP goes as the square of flow, so someone takes the root — transmitter, PLC or SCADA. Do it twice, or skip the low-flow cutoff, and it lies.
A totalizer on a cooling-water line was creeping up overnight with the pump off. Not much — a few m³ by morning — but enough that the water balance never closed. The valve was shut, the line was dead, and the flow tag still showed 2–3% wandering around and getting integrated into the total. The transmitter was healthy. The problem was that nobody had put a low-flow cutoff on a square-root-extracted flow, and near zero, square root turns millivolts of noise into visible flow.
The measurement is a square, so the reading isn't the flow
An orifice plate, a venturi, a flow nozzle — any differential-producer meter — works off Bernoulli. The pressure drop across the restriction rises with the square of the flow rate:
Q = k · √(ΔP)
So a 4–20 mA DP transmitter is not sending you flow. It's sending you differential pressure. Half flow is a quarter of the DP; 10% flow is 1% of the DP. If you scale that current linearly and call it flow, the number is only correct at 0% and 100% and wrong everywhere in between — and the error is worst in the middle of the range, where you actually run.
To recover flow, something has to take the square root of the normalized DP:
Q% = √(ΔP%) · 100
Q = Qmax · √(ΔP / ΔPmax)
where Qmax is the flow at full-scale DP, the number the meter was sized for. That Qmax comes off the flow calculation sheet (ISO 5167 for orifice/nozzle/venturi, AGA Report No. 3 for natural gas custody) — not off the transmitter, which only knows pressure.
Pick one place to do it, and write it down
The square root can live in three places, and the failure mode is always that two of them think they own it, or none do:
- In the transmitter. Every smart DP transmitter (Rosemount 3051, Yokogawa EJA/EJX, and the rest) has an output-mode config: linear or square-root. In square-root mode the 4–20 mA is already linear in flow, and 12 mA is 50% flow, not 50% DP.
- In the PLC. Transmitter stays linear, and the PLC does
SQRTon the scaled 0–1 DP before applyingQmax. This is my default. The PLC is where the cutoff and the compensation belong anyway, so keep the root there too. - In SCADA. Same math, one layer up. Fine if the tag never gets used for control, but now the PLC's own flow logic and the SCADA number disagree unless it's done in both — so I avoid it.
The classic wrong readings both come from confusion about which box owns the root:
- Rooted twice. Transmitter is in square-root mode and the PLC does
SQRTagain. Now you're computing the fourth root. At 50% real flow it reads about 71%; it only agrees at the two endpoints, so a span check passes and the middle is quietly high. - Rooted zero times. Transmitter is linear, nobody added the
SQRT, and the flow tag is really a DP tag wearing a flow label. Reads low everywhere except full scale — 50% flow shows as 25%.
Neither survives a two-point bench check, which is exactly why they slip through: 0% and 100% match. Check a third point at mid-range. Inject 50% of the DP span (that's 12 mA on a linear transmitter) and confirm the flow tag reads √0.5 ≈ 70.7%, not 50%. That one point tells you how many square roots are in the chain.
The one thing you can't recover later is which mode the transmitter shipped in. Read it over HART during loop check and write it on the loop sheet next to Qmax. A transmitter swapped two years from now can come back in the other mode, and the only defence is a document that says which one is right.
Why it goes to hash at low flow
Look at the slope of square root. Its derivative is 1/(2√x), which runs to infinity as the DP approaches zero. Near the bottom of the range, a tiny wobble in DP — sensor noise, a bit of turbulence, a damp impulse line — gets multiplied into a big swing in flow.
Put numbers on it. At 4% of DP span you're at 20% flow. Move the DP by one percentage point of span, to 5%, and flow jumps to 22.4% — a 1% DP change became a 2.4% flow change. Down at 1% DP you're at 10% flow, and the same 1-point wobble now moves flow by about 4%. The closer to zero, the more the noise is amplified, until at true zero flow the DP is sitting in the transmitter's own noise floor and the flow tag is a random-number generator that only produces positive numbers — which is how a shut line totalizes overnight.
This is also why an orifice run has a real turndown limit. Because DP falls with the square of flow, dropping to 1/3 flow leaves only 1/9 of the DP. Practical turndown on a plain orifice is about 3:1 to 4:1 before the low end is buried in noise. Wider range than that, and you're into a different primary element or a second transmitter stacked on the same taps for the low decade — not a scaling trick.
The low-flow cutoff, and where to put it
The fix for the jitter is a low-flow cutoff (dropout): below a threshold, force the flow tag to exactly zero.
- Set it in DP terms, typically 1–4% of DP span, which is roughly 10–20% of flow. I usually land around 2% DP unless the process genuinely runs down there.
- Apply the cutoff to the DP before the square root, not the flow after. Cutting on DP gives you a clean, stable threshold; cutting on the already-noisy flow value chatters right at the edge.
- Add a little hysteresis so it doesn't dither on and off at the boundary — drop out at 2% DP, come back in at 3%. A percent of gap kills the flicker.
- Smart transmitters have their own low-flow cutoff parameter. If you set it and the PLC sets one, put them at the same value or you get a step where one hands off to the other. Pick the layer that owns it — same discipline as the square root.
One caution: the cutoff hides real leakage. If you legitimately need to see a slow bleed past a closed valve, an orifice sized for full flow won't show it under the cutoff no matter where you set the threshold — the meter simply has no resolution down there. That's a metering-range problem, not a cutoff-tuning problem, and the honest answer is a smaller meter on that service.
Don't forget the tag is still a rate
Two things fall out of getting the root and the cutoff right:
Damping is a filter on the DP, but square root is nonlinear, so the effective smoothing of the flow value is heavier at high flow and lighter at low flow — the opposite of what you want, since the low end is where the noise lives. Don't crank transmitter damping to paper over low-flow hash; you'll add lag up top where the loop needs to respond. Fix the low end with the cutoff, and use damping for what it's for.
For gas or steam the square root is only the start. Flow also depends on density, so the reading needs pressure and temperature compensation (Q ∝ √(P·Tref / (Pref·T)) in the simple ideal-gas form), which is a PLC calc against the AGA 3 / ISO 5167 sizing basis — one more reason to keep the flow math in the PLC where the live P and T tags already are, not spread across the transmitter and SCADA.
And when you hand the flow to a historian, remember it's an instantaneous rate feeding a totalizer. A flow that reads a steady 2% from a dead line doesn't just look wrong on the trend — it integrates into a volume that shows up on somebody's mass balance, which is where you started this article. Get the cutoff in before you turn on the totalizer, not after the numbers stop adding up.