multicalci.com Orifice Flow Calculator All calculators

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.

Last checked 22 October 2026 Standard: ISO 5167-2:2022 (Reader-Harris/Gallagher equation, unchanged since 2003)
11 / 11
reference cases agree

Largest difference from the reference: 1.3 × 10⁻⁸ (relative), which is iteration round-off.

7 / 7
out-of-range inputs flagged

Inputs outside ISO 5167-2 §5.3.1 produce a warning. None of the valid cases does.

45 / 45
steam densities match IAPWS-IF97

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:

  1. fluids, an open-source Python library for fluid mechanics (version 1.3.1). Its orifice functions implement ISO 5167-2 and ASME MFC-3M.
  2. 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

qm = C / √(1 − β⁴) · ε · (π/4) d² · √(2 Δp ρ₁)
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.

CaseFluidD / d, mmReD C calcC refε qm calcqm refLargest diff.*
L1WaterCorner taps 50 / 25β = 0.500 55 699 0.6107630.610763 1.000000 2.1872932.187293 1.1 × 10⁻⁹
L2WaterFlange taps 100 / 50β = 0.500 110 525 0.6059790.605979 1.000000 8.6806488.680648 2.1 × 10⁻¹⁰
L3WaterD and D/2 taps 150 / 112.5β = 0.750 279 607 0.6132730.613273 1.000000 32.9404732.94047 1.7 × 10⁻⁹
L4WaterFlange taps 200 / 40β = 0.200 47 863 0.5984110.598411 1.000000 7.5183507.518350 7.0 × 10⁻⁹
L5Light oilCorner taps 300 / 180β = 0.600 10 587 0.6273500.627350 1.000000 49.8878249.88782 1.1 × 10⁻⁸
L6Cooling waterFlange taps 1000 / 600β = 0.600 1 838 988 0.6043440.604344 1.000000 1155.4701155.470 2.8 × 10⁻⁹
L7Viscous oilCorner taps 50 / 30β = 0.600 7 735 0.6339020.633902 1.000000 4.5563414.556341 9.5 × 10⁻¹⁰
G1Natural gasFlange taps 154.1 / 92.46β = 0.600 3 992 296 0.6041720.604172 0.998077 5.3150585.315058 3.1 × 10⁻⁹
G2AirCorner taps 102.3 / 51.15β = 0.500 259 427 0.6051560.605156 0.973131 0.38561380.3856138 1.2 × 10⁻⁸
S1Superheated steamD and D/2 taps 202.7 / 141.89β = 0.700 3 075 018 0.6077180.607718 0.983616 7.9501277.950127 1.3 × 10⁻⁸
G3AirFlange taps 77.9 / 31.16β = 0.400 140 267 0.6015280.601528 0.936244 0.15619010.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
CaseDescriptionTapsD, mmd, mmΔp, kPaFluid propertiesGas data
L1Water, small pipe (small-bore term active)Corner502525ρ = 998 kg/m³, μ = 1 mPa·s—
L2Water, 4 in lineFlange1005025ρ = 998 kg/m³, μ = 1 mPa·s—
L3Water, beta at upper limitD and D/2150112.510ρ = 998 kg/m³, μ = 1 mPa·s—
L4Water, low betaFlange2004050ρ = 998 kg/m³, μ = 1 mPa·s—
L5Light oil, moderate Reynolds numberCorner3001805ρ = 850 kg/m³, μ = 20 mPa·s—
L6Cooling water, 1000 mm mainFlange100060020ρ = 995 kg/m³, μ = 0.8 mPa·s—
L7Viscous oil, near the Reynolds limitCorner503050ρ = 900 kg/m³, μ = 15 mPa·s—
G1Natural gas, 6 in Sch 40Flange154.192.4625ρ = 30 kg/m³, μ = 0.011 mPa·sp₁ = 40 bar a, κ = 1.3
G2Air, 4 in Sch 40, low pressureCorner102.351.1520ρ = 2.38 kg/m³, μ = 0.0185 mPa·sp₁ = 2 bar a, κ = 1.4
S1Saturated steam, 8 in Sch 40D and D/2202.7141.895011 bar a, 200 °C → ρ = 5.3760 kg/m³ (IAPWS-IF97), μ = 0.01624 mPa·sp₁ = 11 bar a, κ = 1.3
G3Air, pressure ratio near the 0.75 limitFlange77.931.1636ρ = 1.79 kg/m³, μ = 0.0182 mPa·sp₁ = 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 limitTest inputCalculator response
Diameter ratio 0.10 ≤ β ≤ 0.75β = 0.80Flagged β=0.8000 outside ISO 5167 range 0.10–0.75
Pipe bore 50 ≤ D ≤ 1000 mmD = 40 mmFlagged Pipe ID = 40.0 mm < ISO 5167 minimum 50 mm — Cd correlation outside validated range
Orifice bore d ≥ 12.5 mmd = 10 mmFlagged Bore d = 10.00 mm below ISO 5167-2 minimum 12.5 mm
ReD ≥ 5000β = 0.60, ReD = 907Flagged Re=907 below ISO 5167 minimum (5760 for β=0.600)
Pressure ratio p₂/p₁ ≥ 0.75 (expansibility)p₁ = 1.2, p₂ = 0.8 bar aFlagged Δ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 aT, °CIAPWS-IF97 ρ, kg/m³Calculator ρ, kg/m³Before correction
12000.46030.4603+0.00 %
52002.35282.3528+0.04 %
112005.37605.3760+0.40 %
203007.96817.9681+0.26 %
4030016.987216.9872+2.23 %
6030027.631127.6311+8.65 %
10040037.822537.8225+3.70 %
16040070.023070.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

Open the orifice flow calculator