BENCHMARKS

Benchmarks

Converge results set against published reference solutions, the published equations and hand calculations. Each case gives the reference, the tolerance and the result, and says plainly what has not been validated yet. The cases run as named tests in the Converge test suite.

SUMMARY

Where the engines stand

An independent audit on 15 October 2026 recomputed 30 Converge results by hand or with independent code. For the synthetic cases the data were built from known answers, so the truth is exact. 25 passed first time. The five failures were in defaults, reference points and uncertainty bands, not in the core physics. Four of them are fixed and now pass. The fifth is a method fix whose single test case is still marginal, and we say so below.

Validation cases
30
Pass in the test suite
29
Marginal, stated
1
Typical tolerance
0.05–3%

Values are in oilfield units, as the published references give them. Status as of 15 October 2026.

RESERVOIR SIMULATION

SPE1: the first SPE comparative solution project

Odeh, A. S. (1981), "Comparison of Solutions to a Three-Dimensional Black-Oil Reservoir Simulation Problem", Journal of Petroleum Technology 33(1), SPE 9723. A 10 × 10 × 3 grid, one gas injector and one producer over ten years. Converge ships the case built in.

QuantityPublished behaviourConvergeToleranceStatus
Oil-rate plateau20,000 STB/d20,000 STB/d1 STB/dPass
Producer switches from rate to pressure controlNear day 1,000Day 973Day 800 to 1,300Pass
Peak average reservoir pressureNear 6,400 psia6,423 psia6,100 to 6,700 psiaPass
Field oil rate, GOR, well bottom-hole pressures, block pressuresPublished reference run from an industry-standard simulator, 11 report times to day 3,6501% · 2.5% · 2% · 3%Worst difference shownPass
Material-balance closureMass conserved every step9.3 × 10⁻⁸Below 10⁻⁶ of pore volumePass

The run takes 132 time steps and about 1.4 seconds on a single laptop core. A one-dimensional Buckley-Leverett case puts the water front within three cells of the analytical Welge construction.

V1–V30

The 30 audited validation cases

Each case is now a named test. "Fixed" means the case failed in the audit, the cause was corrected and the test now passes.

CaseCalculationReferenceToleranceStatus
V1Standing bubble point, 35 °API, gas gravity 0.75, 650 scf/STB, 200 °F2,748 psia (hand calculation)±1.6 psiPass
V2Standing bubble point, 32 °API, 0.72, 520 scf/STB, 205 °F2,601 psia±1.6 psiPass
V3Standing oil formation volume factor at the bubble point, both fluids1.375 and 1.3037 rb/STB0.0005 rb/STBPass
V4Beggs-Robinson live-oil viscosity at the bubble point, both fluids0.4927 and 0.6185 cp0.1%Pass
V5Oil density at the bubble point695.0 kg/m³0.1%Pass
V6Z-factor, Dranchuk-Abou-Kassem with Sutton, at four pressuresSee the Z-factor table0.05%Pass
V7McCain water-viscosity pressure correction at 5,000 psia+28%±0.5 pointPass
V8Plus-fraction split keeps the C7+ molecular weight218.0 g/mol10⁻⁶ g/molPass
V9Gas formation volume factor at 3,000 psia0.000983 rb/scf10⁻⁶ rb/scfPass
V10Material balance oil in place, volumetric tank built from a known N, no aquifer45.00 MMSTB1%Pass
V11The same tank with an aquifer it does not haveMust not report a wrong NFit blocked, reasons shownFixed
V12Material balance history match on the sample tank150 MMSTB3%Pass
V13History-match P90–P10 band contains the truth150 MMSTB inside the bandCoverage at least 80% over 10 synthetic historiesFixed
V14Flowing material balance oil in placeKnown synthetic truth1%Pass
V15Arps fit to a synthetic well, qi 3,500 STB/d, Di 60%/yr, b 0.70The generating parametersExact data: 3 decimals. 3% noise: 5% on qiPass
V16Arps EUR to a 30-year cap4.78 MMSTB0.005 MMSTBPass
V17Exponential and harmonic EURClosed forms: 1,980 and 9,210 STB0.5 STB and 5 STBPass
V18Decline bootstrap P90–P10 contains the truthCoverage at least 80% over 12 synthetic wellsObserved 10 of 12Marginal
V19Horner slope and permeability, synthetic build-up with k = 180 md26.43 psi/cycle, 180 md3%Pass
V20Horner extrapolated pressure p*3,650 psia2 psiPass
V21Skin from the same build-up, Horner and log-log+4.5±0.3Fixed
V22Log-log radial-flow permeability180 md3%Pass
V23Hydrostatic gradient in the well model18.06 lbm/ft³ gives 0.1254 psi/ft10⁻⁴ psi/ftPass
V24Unit conversion on import, 40 m³/d and 25 barg251.59 bbl/d and 377.29 psiaExact to 2 decimalsPass
V25Royalty and income tax, every year of a 10-year caseIndependent hand calculation10⁻⁶Pass
V26NPV at 10%, mid-period discountingIndependent sum of discounted cash flows10⁻³Pass
V27IRRRoot of the NPV equation10⁻⁹Pass
V28SPE1 (Odeh 1981)Published behaviourSee the SPE1 tablePass
V29Surface network mass balance at every nodeMass in equals mass out10⁻⁹Pass
V30Network gas accounting with gas liftFormation gas plus lift gas equals gas arrived; sales gas equals formation gas10⁻⁶Fixed

V18: the bootstrap method was corrected and meets its 80% coverage target across 12 synthetic wells. On the one sample well the audit used, the true EUR still sits just above the P10, which an 80% band will do about one time in ten. We did not tune the seed or widen the band to force it in. V25–V27: the auditor's own case data were not published, so an equivalent hand-built 10-year case is checked instead.

FLUIDS

PVT correlations against the published equations

Each correlation is coded from the original paper and checked against a hand calculation from the same equation. Results for the V1 fluid: 35 °API, gas gravity 0.75, 650 scf/STB, 200 °F.

PropertyPublished sourceHand calculationConvergeStatus
Bubble pointStanding (1947)2,748 psia2,747.8 psiaPass
Oil FVF at the bubble pointStanding (1947)1.375 rb/STB1.3749 rb/STBPass
Live-oil viscosityBeggs and Robinson (1975)0.4927 cp0.4924 cpPass
Bubble point and FVFVasquez and Beggs (1980), Glasø (1980), Petrosky and Farshad (1993), Al-Marhoun (1988)Hand calculation per setMatches; the bubble point inverts back to the input GORPass
Water viscosity pressure correctionMcCain (1990)+28%+28%Pass
Sour-gas correctionWichert and Aziz (1972)Hand calculation of εMatchesPass

The equation-of-state engine is checked separately. Bubble and dew points for the SPE5 oil and a gas condensate, in Peng-Robinson and SRK, match an independent open-source implementation within 0.01%, and two-phase flash compositions within 1 × 10⁻⁵. Pure-component vapour pressures sit within 3% of NIST data.

GAS

Z-factor: Dranchuk and Abou-Kassem

Dranchuk, P. M. and Abou-Kassem, J. H. (1975), Journal of Canadian Petroleum Technology 14(3), with Sutton (1985) pseudo-critical properties. Gas gravity 0.7, 200 °F.

PressureHand calculationConvergeDifferenceStatus
1,000 psia0.92150.92130.02%Pass
3,000 psia0.88830.88800.03%Pass
5,000 psia0.99990.99970.02%Pass
10,000 psia1.43081.43100.01%Pass

Tolerance 0.05%. The gas FVF at 3,000 psia is 0.000983 rb/scf, as in V9.

WELL TEST

Horner and log-log on a synthetic build-up

A drawdown of 48 hours at 800 STB/d, then 72 hours shut in, generated from the line-source solution with superposition. Known answer: k = 180 md, skin +4.5, initial pressure 3,650 psia. Net pay 32.8 ft, porosity 0.20, total compressibility 1 × 10⁻⁵ 1/psi, viscosity 1 cp, FVF 1.2 rb/STB.

ResultKnown answerConvergeToleranceStatus
Horner slope26.43 psi/cycle26.46 psi/cycle3%Pass
Horner permeability180 md179.8 md3%Pass
Extrapolated pressure p*3,650 psia3,650.0 psia2 psiPass
Skin, Horner+4.5+4.47±0.3Pass
Permeability and skin, log-log derivative180 md, +4.5Within tolerance3%, ±0.3Pass
Deconvolution of a multi-rate test, von Schroeter, Hollaender and Gringarten (2004)Known unit-rate responseRecovered5%, or 10% with 0.05 psi gauge noisePass

The slope reference is m = 162.6 qBμ / kh. The model library is also checked against the published analytical limits: Theis (1935), van Everdingen and Hurst (1949), Gringarten, Ramey and Raghavan (1974), Cinco-Ley and Samaniego (1981) and Warren and Root (1963). Earlougher (1977) Example 5.1 gives k = 12.8 md and skin 8.6; Converge matches both within 5%.

DECLINE

Arps decline

Arps, J. J. (1945), "Analysis of Decline Curves", Transactions of the AIME 160. A 36-month synthetic history from qi = 3,500 STB/d, Di = 60%/yr, b = 0.70.

ResultKnown answerConvergeToleranceStatus
Fitted qi, exact data3,500 STB/d3,500 STB/d1 STB/dPass
Fitted Di and b, exact data60%/yr, 0.7060.0%/yr, 0.7003 decimalsPass
Fitted qi, Di and b with 3% noiseThe generating valuesRecovered5%, 8 points, 0.15Pass
EUR to a 30-year cap4.78 MMSTB4.78 MMSTB0.005 MMSTBPass
Rate and cumulative, Arps b 0 to 1.5, modified hyperbolic, Duong, stretched exponentialIndependent open-source decline libraryMatches10⁻⁶ relativePass

MATERIAL BALANCE

Material balance on a known-N tank

Havlena, D. and Odeh, A. S. (1963), "The Material Balance as an Equation of a Straight Line", Journal of Petroleum Technology 15(8). A volumetric oil tank whose production and pressure history were built from N = 45 MMSTB.

CaseReferenceConvergeToleranceStatus
Volumetric tank, no aquiferN = 45.00 MMSTB45.03 MMSTB1%Pass
Same tank, wrong aquifer switched onNo wrong answer shownFit blocked as not reliable—Fixed
Infinite radial aquifer influxAhmed (2006), Example 10-4Constant and influx at 6 and 12 months0.5%Pass
Underground withdrawal F, every rowAhmed (2006), Example 11-1Reproduced0.01 MbblPass
Oil flowing material balanceAnalytical closed-circle solutionN and b_pss2%Pass
Gas flowing material balancePseudo-steady gas tank, known G0.04%1%Pass

ECONOMICS

NPV and IRR

Discounted cash flow is checked against hand sums and an independent open-source finance library. The simplest case to check yourself: −100 then 30 a year for five years, end-of-period discounting at 10%.

ResultHand calculationConvergeToleranceStatus
NPV at 10%12.47612.47610⁻³Pass
IRR15.24%15.24%10⁻⁹Pass
Royalty and tax rows, 10-year caseIndependent loop, every yearMatches10⁻⁶Pass
Production-sharing arithmeticHand sheet: cost-oil cap, R-factor tier, tax, government takeMatches10⁻⁹Pass

The Nigeria PIA 2021 fiscal templates are screening values coded from the Act's schedules. They are not tax advice and are not part of this benchmark.

WELLS

Vertical lift and inflow

The multiphase-flow correlations are checked against three independent open-source implementations. No textbook worked example with a stated answer was found for these correlations, so the agreement is with independent code.

ItemReferenceAgreement
Beggs and Brill (1973)Two independent implementations, 14 flow states0.1%
Gray (1974)Two independent implementations, 14 flow states0.2%
Duns and Ros (1963)Independent implementation, bubble, slug and mist flow1%
Whole gas-well traverse, 10,000 ft, dry and wetIndependent implementation0.02–0.18%
Single-phase liquid traverse, deviated wellExact hydrostatic plus Colebrook friction10⁻⁹

LIMITS

What is not yet validated

These are open. None of them is claimed as validated anywhere in the product.

  • The full EOS phase envelope against an independent commercial PVT package. Saturation points and flashes are checked; the whole envelope is not.
  • The surface network against independent network-modelling tools. Mass balance and gas accounting close, but no external comparison has been made.
  • The integrated forecast against independent integrated-asset tools. It agrees with Converge's own material balance engine within 0.1 psi.
  • SPE9 is only a partial match: oil rate tracks the reference, but water production does not. SPE3 has not been attempted. Neither is claimed.
  • Gas rate-transient type curves, wax and asphaltene models, and several printed textbook well-test examples.

REPRODUCE

Run the cases yourself

Every case above can be rerun in your own account. Open Integrations and use the scripting editor, or call the same functions over the REST API or MCP. The Sample field's fluid is the V1 fluid, so its PVT page shows the 2,748 psia bubble point straight away.

SPE1

const r = converge.sim.run({ preset: 'spe1' });
table(r.field, 'SPE1 field results');

PVT and Z-factor

converge.pvt.blackOilTable({
  fluid: { kind: 'black-oil', api: 35, gasSG: 0.75,
           gor: 650, reservoirT: 200 } });
converge.pvt.gasProperties({
  psia: 3000, TF: 200, gasSG: 0.7 });

Well test

const s = converge.welltest.synthetic({
  reservoir: { k: 180, h: 32.808, phi: 0.2, ct: 1e-5, mu: 1,
               B: 1.2, rw: 0.3, skin: 4.5, C: 0.001 },
  pi: 3650, q: 800, tpHr: 48, shutInHr: 72,
  pointsPerPeriod: 70, boundary: { kind: 'infinite' } });
const b = s.buildup;
converge.welltest.horner({ dtHr: b.dtHr, pws: b.pws,
  tpHr: b.tpHr, pwf: b.pwf, window: [5, 70],
  fluid: { q: 800, B: 1.2, mu: 1, h: 32.808,
           phi: 0.2, ct: 1e-5, rw: 0.3 } });

Decline, material balance, NPV

// points: [{ t: days, q: STB/d }, ...]
converge.dca.fit({ kind: 'arps', points });
converge.mbal.analyse(converge.example('mbal.analyse'));
converge.econ.metrics({
  cashFlows: [-100, 30, 30, 30, 30, 30],
  discountRates: [0.1], discounting: 'end-period' });

Inputs are in oilfield units by default. Call converge.setUnits('metric') to work in bara, °C and Sm³.

Check the numbers on your own fluid.