Validation report
Orifice flow calculator: validation against ISO 5167-2
How we check that the orifice flow calculator applies ISO 5167-2 correctly: 11 reference cases covering liquids, gases and steam with corner, flange and D and D/2 tappings, the standard's limits of use, and steam density against IAPWS-IF97. Every input and result is published below so you can check them yourself.
Largest difference from the reference: 1.3 × 10⁻⁸ (relative), which is iteration round-off.
Inputs outside ISO 5167-2 §5.3.1 produce a warning. None of the valid cases does.
Superheated steam from 1 to 160 bar a. Largest difference: 4.1 × 10⁻¹⁶.
What this check shows
It shows that the calculator evaluates ISO 5167-2 correctly: the Reader-Harris/Gallagher discharge coefficient, the expansibility factor, the iteration on Reynolds number, the permanent pressure loss, and the standard's limits of use.
It does not make the ISO equation more accurate than the standard says it is. ISO 5167-2 gives the uncertainty of the discharge coefficient as 0.5 % for 0.2 ≤ β ≤ 0.6, larger outside that range and in pipes smaller than 71.12 mm.
A real installation adds the uncertainty of the differential-pressure and density measurements, the condition of the plate edge, pipe roughness and upstream straight lengths.
Method
Each case was run through the calculator's server code, the same code that serves the calculator page. The results were compared with two references written independently of it:
- fluids, an open-source Python library for fluid mechanics (version 1.3.1). Its orifice functions implement ISO 5167-2 and ASME MFC-3M.
- A separate implementation written directly from the equations in ISO 5167-2:2003 §5.3.2, which the 2022 edition did not change.
The two references agree with each other to machine precision on every case. Mass flow is solved by iterating between the flow equation and the Reynolds-number-dependent C until C stops changing. Each reference uses the same density and viscosity as the calculator, so the comparison isolates the flow equations. Steam density is checked separately, below.
One detail: fluids adds two low-Reynolds-number terms from later work by Reader-Harris that are not in ISO 5167-2. Both are zero above ReD ≈ 3 700. Every case here is above the ISO minimum of 5 000, so the comparison is against the ISO equation alone.
Equations checked
C = 0.5961 + 0.0261β² − 0.216β⁸ + 0.000521(10⁶β/ReD)0.7 + (0.0188 + 0.0063A)β3.5(10⁶/ReD)0.3
+ (0.043 + 0.080e−10L₁ − 0.123e−7L₁)(1 − 0.11A) β⁴/(1 − β⁴) − 0.031(M₂′ − 0.8M₂′1.1)β1.3
+ 0.011(0.75 − β)(2.8 − D/25.4) when D < 71.12 mm
A = (19000β/ReD)0.8, M₂′ = 2L₂′/(1 − β). Corner taps: L₁ = L₂′ = 0. D and D/2 taps: L₁ = 1, L₂′ = 0.47. Flange taps: L₁ = L₂′ = 25.4/D (D in mm).
ε = 1 − (0.351 + 0.256β⁴ + 0.93β⁸)·[1 − (p₂/p₁)1/κ]
Δϖ = [√(1 − β⁴(1 − C²)) − Cβ²] / [√(1 − β⁴(1 − C²)) + Cβ²] · Δp (permanent pressure loss)
Results
“Calc” is the calculator; “Ref” is fluids 1.3.1, and the independent implementation gives the same values. Mass flow is in kg/s.
| Case | Fluid | D / d, mm | ReD | C calc | C ref | ε | qm calc | qm ref | Largest diff.* |
|---|---|---|---|---|---|---|---|---|---|
| L1 | WaterCorner taps | 50 / 25β = 0.500 | 55 699 | 0.610763 | 0.610763 | 1.000000 | 2.187293 | 2.187293 | 1.1 × 10⁻⁹ |
| L2 | WaterFlange taps | 100 / 50β = 0.500 | 110 525 | 0.605979 | 0.605979 | 1.000000 | 8.680648 | 8.680648 | 2.1 × 10⁻¹⁰ |
| L3 | WaterD and D/2 taps | 150 / 112.5β = 0.750 | 279 607 | 0.613273 | 0.613273 | 1.000000 | 32.94047 | 32.94047 | 1.7 × 10⁻⁹ |
| L4 | WaterFlange taps | 200 / 40β = 0.200 | 47 863 | 0.598411 | 0.598411 | 1.000000 | 7.518350 | 7.518350 | 7.0 × 10⁻⁹ |
| L5 | Light oilCorner taps | 300 / 180β = 0.600 | 10 587 | 0.627350 | 0.627350 | 1.000000 | 49.88782 | 49.88782 | 1.1 × 10⁻⁸ |
| L6 | Cooling waterFlange taps | 1000 / 600β = 0.600 | 1 838 988 | 0.604344 | 0.604344 | 1.000000 | 1155.470 | 1155.470 | 2.8 × 10⁻⁹ |
| L7 | Viscous oilCorner taps | 50 / 30β = 0.600 | 7 735 | 0.633902 | 0.633902 | 1.000000 | 4.556341 | 4.556341 | 9.5 × 10⁻¹⁰ |
| G1 | Natural gasFlange taps | 154.1 / 92.46β = 0.600 | 3 992 296 | 0.604172 | 0.604172 | 0.998077 | 5.315058 | 5.315058 | 3.1 × 10⁻⁹ |
| G2 | AirCorner taps | 102.3 / 51.15β = 0.500 | 259 427 | 0.605156 | 0.605156 | 0.973131 | 0.3856138 | 0.3856138 | 1.2 × 10⁻⁸ |
| S1 | Superheated steamD and D/2 taps | 202.7 / 141.89β = 0.700 | 3 075 018 | 0.607718 | 0.607718 | 0.983616 | 7.950127 | 7.950127 | 1.3 × 10⁻⁸ |
| G3 | AirFlange taps | 77.9 / 31.16β = 0.400 | 140 267 | 0.601528 | 0.601528 | 0.936244 | 0.1561901 | 0.1561901 | 9.8 × 10⁻⁹ |
* Largest relative difference across C, ε, mass flow, ReD and permanent pressure loss. Across all cases: C 2.5 × 10⁻¹⁰, mass flow 1.3 × 10⁻⁸.
Inputs for every case
| Case | Description | Taps | D, mm | d, mm | Δp, kPa | Fluid properties | Gas data |
|---|---|---|---|---|---|---|---|
| L1 | Water, small pipe (small-bore term active) | Corner | 50 | 25 | 25 | ρ = 998 kg/m³, μ = 1 mPa·s | — |
| L2 | Water, 4 in line | Flange | 100 | 50 | 25 | ρ = 998 kg/m³, μ = 1 mPa·s | — |
| L3 | Water, beta at upper limit | D and D/2 | 150 | 112.5 | 10 | ρ = 998 kg/m³, μ = 1 mPa·s | — |
| L4 | Water, low beta | Flange | 200 | 40 | 50 | ρ = 998 kg/m³, μ = 1 mPa·s | — |
| L5 | Light oil, moderate Reynolds number | Corner | 300 | 180 | 5 | ρ = 850 kg/m³, μ = 20 mPa·s | — |
| L6 | Cooling water, 1000 mm main | Flange | 1000 | 600 | 20 | ρ = 995 kg/m³, μ = 0.8 mPa·s | — |
| L7 | Viscous oil, near the Reynolds limit | Corner | 50 | 30 | 50 | ρ = 900 kg/m³, μ = 15 mPa·s | — |
| G1 | Natural gas, 6 in Sch 40 | Flange | 154.1 | 92.46 | 25 | ρ = 30 kg/m³, μ = 0.011 mPa·s | p₁ = 40 bar a, κ = 1.3 |
| G2 | Air, 4 in Sch 40, low pressure | Corner | 102.3 | 51.15 | 20 | ρ = 2.38 kg/m³, μ = 0.0185 mPa·s | p₁ = 2 bar a, κ = 1.4 |
| S1 | Saturated steam, 8 in Sch 40 | D and D/2 | 202.7 | 141.89 | 50 | 11 bar a, 200 °C → ρ = 5.3760 kg/m³ (IAPWS-IF97), μ = 0.01624 mPa·s | p₁ = 11 bar a, κ = 1.3 |
| G3 | Air, pressure ratio near the 0.75 limit | Flange | 77.9 | 31.16 | 36 | ρ = 1.79 kg/m³, μ = 0.0182 mPa·s | p₁ = 1.5 bar a, κ = 1.4 |
Limits of use
ISO 5167-2 §5.3.1 sets the conditions under which the equations apply. Each limit was tested with an input just outside it. Every one produces a warning, and none of the 11 valid cases above produces a limit warning.
| ISO 5167-2 limit | Test input | Calculator response |
|---|---|---|
| Diameter ratio 0.10 ≤ β ≤ 0.75 | β = 0.80 | Flagged β=0.8000 outside ISO 5167 range 0.10–0.75 |
| Pipe bore 50 ≤ D ≤ 1000 mm | D = 40 mm | Flagged Pipe ID = 40.0 mm < ISO 5167 minimum 50 mm — Cd correlation outside validated range |
| Orifice bore d ≥ 12.5 mm | d = 10 mm | Flagged Bore d = 10.00 mm below ISO 5167-2 minimum 12.5 mm |
| ReD ≥ 5000 | β = 0.60, ReD = 907 | Flagged Re=907 below ISO 5167 minimum (5760 for β=0.600) |
| Pressure ratio p₂/p₁ ≥ 0.75 (expansibility) | p₁ = 1.2, p₂ = 0.8 bar a | Flagged ΔP/P > 0.25 (p₂/p₁ < 0.75): Exceeds ISO 5167-2 expansibility factor validity limit |
| Corner and D–D/2 taps, β > 0.56: ReD ≥ 16000β² | β = 0.75, ReD = 7 006 (needs ≥ 9 000) | Flagged Re=7006 below ISO 5167 minimum (9000 for β=0.750) |
| Flange taps: ReD ≥ 170β²D (D in mm) | β = 0.75, ReD = 56 245 (needs ≥ 95 625) | Flagged Re=56245 below ISO 5167 minimum (95625 for β=0.750) |
Steam density
For steam, the calculator works out density from pressure and temperature using IAPWS-IF97. At 45 superheated points from 1 to 160 bar a and 150 to 600 °C, it was compared with the iapws reference implementation. The largest difference is 4.1 × 10⁻¹⁶. The last column shows the error before the October 2026 correction described in the change log.
The isentropic exponent κ, which enters the expansibility factor, is also taken from IAPWS-IF97 for superheated steam as κ = ρw²/p, the definition used in ISO 5167. It matches the reference implementation to machine precision. Within 2 °C of saturation the calculator uses 1.135, the customary value for dry saturated steam.
| p, bar a | T, °C | IAPWS-IF97 ρ, kg/m³ | Calculator ρ, kg/m³ | Before correction |
|---|---|---|---|---|
| 1 | 200 | 0.4603 | 0.4603 | +0.00 % |
| 5 | 200 | 2.3528 | 2.3528 | +0.04 % |
| 11 | 200 | 5.3760 | 5.3760 | +0.40 % |
| 20 | 300 | 7.9681 | 7.9681 | +0.26 % |
| 40 | 300 | 16.9872 | 16.9872 | +2.23 % |
| 60 | 300 | 27.6311 | 27.6311 | +8.65 % |
| 100 | 400 | 37.8225 | 37.8225 | +3.70 % |
| 160 | 400 | 70.0230 | 70.0230 | +20.35 % |
Check it yourself
Case L2 (water, flange taps) with the same reference library. Enter the same values in the calculator and compare.
# pip install fluids==1.3.1 from fluids.flow_meter import differential_pressure_meter_solver, differential_pressure_meter_C_epsilon # D = 100 mm, d = 50 mm, Δp = 25 kPa, water ρ = 998 kg/m³, μ = 1.0 mPa·s # (k = 1e20 makes ε = 1, as for a liquid) args = dict(D=0.100, D2=0.050, P1=200000, P2=175000, rho=998, mu=1.0e-3, k=1e20, meter_type='ISO 5167 orifice', taps='flange') m = differential_pressure_meter_solver(**args) C, eps = differential_pressure_meter_C_epsilon(m=m, **args) print(f"m = {m:.6f} kg/s C = {C:.6f}") # m = 8.680648 kg/s C = 0.605979
Change log
- 22 Oct 2026Isentropic exponent for steam now from IAPWS-IF97. κ was a fixed 1.135, the value for dry saturated steam. For superheated steam it is now calculated as κ = ρw²/p, which is about 1.24–1.32. Within 2 °C of saturation 1.135 is still used. κ affects only the expansibility factor: at 11 bar a and 200 °C, with β = 0.7 and Δp = 50 kPa, κ = 1.297 raises ε from 0.9813 to 0.9836, so the flow is 0.23 % higher.
- 22 Oct 2026Steam density corrected. Four IAPWS-IF97 Region 2 coefficients in the steam-density routine had the wrong power of ten. The error was negligible at low pressure but grew with pressure: +0.4 % at 11 bar a and 200 °C, +2.2 % at 40 bar a and 300 °C, and +8.7 % at 60 bar a and 300 °C. The largest error in the test grid was 20 %, at 160 bar a and 400 °C. Mass flow varies with √ρ, so superheated-steam flows were high by roughly half these figures. Liquid and gas results were not affected.
- 22 Oct 2026Limits of use aligned with ISO 5167-2:2022 §5.3.1. β now starts at 0.10 (was 0.20), the 12.5 mm minimum bore is checked, and the Reynolds-number limit depends on the tapping type and β. The previous fixed table was stricter than the standard and warned on some valid inputs. Calculated values did not change.
- 22 Oct 2026Formula reference corrected. The calculator page now shows the 2003/2022 expansibility equation, which the calculation was already using.