Overview
The SPE-9 comparative solution problem (Killough, 1995) is a significantly more challenging validation case than SPE-1. It features a highly heterogeneous permeability field with values spanning several orders of magnitude, 25 producers and 1 water injector, and complex three-phase flow with strong bubble-point nonlinearity.
SPE-9 is a critical test of a simulator’s ability to handle heterogeneous reservoirs without numerical artifacts. BirSim reproduces the reference solution on cumulative production with byte-level mass conservation preserved, and its per-Newton-iteration cost matches OPM Flow.
Problem Description
| Parameter | Value |
|---|---|
| Grid | 24 × 25 × 15 (Cartesian) |
| Active cells | 9,000 |
| Permeability range | 0.1–7,000 mD (x-direction) |
| Porosity | 0.10 – 0.28 |
| Initial pressure | 3,600 psia at datum |
| Simulation period | 900 days |
| Wells | 1 injector, 25 producers |
| Producer control | Min BHP 1,000 psia |
The permeability field is highly heterogeneous, with layer permeabilities ranging from nearly impermeable (0.1 mD) to highly conductive (7,000 mD), creating complex multi-layer crossflow and fingering behavior.
Accuracy
BirSim matches the SPE reference solution and OPM Flow on cumulative production. Water production deviations are slightly higher than oil, consistent with the 1–3% spread across simulators reported in the original SPE-9 paper.
Field Oil Production Total (FOPT)
| Time (days) | Reference (MMSTB) | BirSim (MMSTB) | Deviation |
|---|---|---|---|
| 90 | 1.82 | 1.83 | +0.5% |
| 365 | 6.14 | 6.17 | +0.5% |
| 600 | 9.28 | 9.35 | +0.8% |
| 900 | 12.4 | 12.5 | +0.8% |
Field Water Production Total (FWPT)
| Time (days) | Reference (MMSTB) | BirSim (MMSTB) | Deviation |
|---|---|---|---|
| 90 | 0.21 | 0.21 | 0.0% |
| 365 | 2.18 | 2.21 | +1.1% |
| 900 | 9.87 | 9.99 | +1.2% |
Performance
The instinct on a slow simulator (“the linear solver must be slow”) is usually wrong. Profiling SPE-9 showed 84% of runtime in Jacobian assembly — an O(n²) connection scan hiding in the kernel. Precomputing per-block transmissibility (O(1) lookup), block-ILU, a lazy-GMRES path, and a dt-target policy cut single-node runtime dramatically, with mass conservation preserved to the byte.
Single-node CPU (2 cores, same host)
| Build | Runtime | vs OPM |
|---|---|---|
| BirSim — first build | 612 s | 42× slower |
| BirSim — default config | 66.9 s | — |
| BirSim — fully optimized | 44.6 s | ~3× |
| OPM Flow | 14.6 s | reference |
That is a 9.2× speedup on the default config and up to 13.7× fully optimized over the first running build. After the work, BirSim’s per-Newton cost matches OPM Flow across assembly, factorization, and linear solve.
Newton-count campaign
The one thing per-iteration parity leaves on the table is the number of iterations. Timestep-solution extrapolation and a predictive dt controller cut total Newton by 62%, bringing accepted-Newton to parity with OPM (226 vs 212) and projecting the best config to ~1.2× OPM.
Multi-CPU / GPU. SPE-9 (9,000 cells) is small enough that MPI adds little; it is reported as a single-node CPU case. Field-scale multi-CPU and GPU comparisons live on the Norne and SPE-10 pages. The GPU backend is in active development.
Heterogeneity Challenge
The SPE-9 permeability field is a stringent test of upwind weighting, transmissibility calculation, and gravity segregation. BirSim uses full-tensor transmissibility (harmonic averaging at interfaces), phase-potential upwinding for stable front tracking, and Stone II three-phase relative permeability — matching the recommendations from the original SPE-9 paper.
Reference
Killough, J.E.: “Ninth SPE Comparative Solution Project: A Reexamination of Black-Oil Simulation,” paper SPE-29110, 13th SPE Reservoir Simulation Symposium, San Antonio, TX, February 1995.