Skip to the content.

ISO 5167 orifice-plate metering

NeqSim’s Iso5167OrificeMeteringKernel exposes the existing Reader-Harris/Gallagher orifice equations through the common typed engineering-calculation workflow. The registered calculation basis is the unamended ISO-5167-2:2022 edition, used with the general requirements of ISO-5167-1:2022.

The ISO catalog lists both parts separately. Part 1 is a companion requirements basis and has no standalone calculation. Part 2 has the registered kernel because NeqSim implements concentric orifice-plate flow with corner, flange, and D/D/2 pressure tappings.

What the kernel calculates

For a supplied operating point, the kernel iterates the existing Orifice.calculateDischargeCoefficient(...) implementation and reports:

Fluid service is explicit. LIQUID uses an expansibility factor of exactly one. GAS_OR_VAPOUR applies the existing compressible-flow expansibility equation and therefore requires an isentropic exponent. This removes an ambiguity in the legacy convenience method without changing its public behavior.

Fail-closed applicability

The calculation is blocked unless all of the following are established:

Basis Implemented gate
Edition Unamended ISO 5167-2:2022
Equipment Orifice
Flow Single phase, full circular conduit, non-pulsating, subsonic throughout the meter
Pipe inside diameter 0.05 m to 1.0 m
Beta ratio 0.10 to 0.75 implemented screening envelope
Pipe Reynolds number At least 5,000 after iteration
Pressure Positive absolute pressures with upstream above downstream
Properties Positive upstream density and dynamic viscosity; gas/vapour kappa above one
Installation Caller attests that plate geometry, tappings, straight lengths, and installation were checked externally

The installation flag records an attestation; NeqSim does not inspect an installed meter. Keep the plate inspection, bore at flowing conditions, tapping geometry, upstream/downstream piping, calibration, and data-quality evidence with the engineering record.

Java example

StandardEdition edition = StandardEdition.defaultEdition(StandardType.ISO_5167_2);
Iso5167OrificeMeteringKernel.Input input = Iso5167OrificeMeteringKernel.Input
    .builder(edition, "Orifice")
    .serviceType(Iso5167OrificeMeteringKernel.ServiceType.GAS_OR_VAPOUR)
    .tapType(Iso5167OrificeMeteringKernel.TapType.FLANGE)
    .pipeInternalDiameterM(0.100)
    .orificeBoreDiameterM(0.050)
    .upstreamPressurePaAbsolute(500000.0)
    .downstreamPressurePaAbsolute(480000.0)
    .upstreamDensityKgPerM3(5.5)
    .upstreamDynamicViscosityPaS(1.2e-5)
    .isentropicExponent(1.30)
    .singlePhase(true)
    .conduitRunningFull(true)
    .subsonicThroughoutMeter(true)
    .pulsatingFlow(false)
    .geometryAndInstallationVerified(true)
    .build();

EngineeringCalculationResult<Iso5167OrificeMeteringAssessment> result =
    new Iso5167OrificeMeteringKernel().calculate(input, null);
if (result.getStatus() != EngineeringCalculationResult.Status.CALCULATED_REVIEW_REQUIRED) {
  throw new IllegalStateException(result.getReadiness().toMap().toString());
}
Iso5167OrificeMeteringAssessment assessment = result.getValue();
double massFlowKgPerS = assessment.getMassFlowRateKgPerS();

The executable Python/JPype workflow is in examples/notebooks/iso_5167_orifice_metering_kernel.ipynb.

Relationship to existing NeqSim APIs

Engineering boundary

The result is SCREENING and always requires engineering review. It does not determine or certify plate manufacture and condition, tapping or straight-length conformity, pulsation effects, two-phase behavior, compressible choking, thermal expansion of dimensions, uncertainty, transmitter calibration, sampling, data reconciliation, fiscal allocation, or custody-transfer acceptance. Use the purchased standards and project metering procedure for those decisions.

Publisher lifecycle sources checked on 2026-08-02: