MODULE GUIDES

Material balance

Tank material balance for oil, gas and condensate. Diagnostic plots, aquifer regression with P90/P50/P10, prediction and multi-tank.

Last edited

Overview

The Material balance module treats the reservoir as a tank and solves the general material balance equation on your project fluid. You paste pressure and cumulative production history, read the diagnostic plots, regress the aquifer to get the in-place volume with a P90/P50/P10 range, then predict future pressure and rates. Use it to check in-place volume and drive mechanism once you have a few years of average pressure and production.

The page has five tabs: Tank & history, Diagnostic plots, Aquifer & history match, Prediction and Multi-tank.

Inputs

PVT comes from the project fluid set on the PVT page. See Project fluid. The module tabulates it on a pressure grid with the bubble point (or dew point) as a node, so the PVT kink is exact.

Tank

Input Unit (Field / Metric) Notes and defaults
Tank type – Oil, Gas or Condensate.
Initial pressure psia / bara Defaults to the first history pressure. Use first history pressure resets it.
Connate water Swi fraction Typical value, badged until you edit it.
Rock compressibility cf 1/psi / 1/bar Typical 4e-6 1/psi (6e-5 1/bar in Metric).
Water compressibility cw 1/psi / 1/bar Typical 3e-6 1/psi (4.5e-5 1/bar in Metric).
Gas cap ratio m dimensionless Oil tanks only. Gas-cap HC pore volume over oil-zone HC pore volume.
Condensate gravity °API Condensate tanks only.

Any value marked Typical value is a starting number, not a measurement. Replace it with your own.

History

Paste a table with a header row into History (paste from Excel) and press Apply history.

Column Unit read with no header unit Notes
t or date days "t (months)" and "t (years)" are also read.
p psia (Field), bara (Metric) Average reservoir pressure. psig, barg, kPa and MPa are read from the header.
Np STB / Sm³ Cumulative oil. MSTB, MMSTB, kSm³ and MSm³ are read.
Gp Mscf / Sm³ Cumulative gas. scf, MMscf and Bscf are read.
Wp STB / Sm³ Cumulative water.
Wi, Gi as above Optional cumulative water and gas injected.
qo, qg, qw STB/d, Mscf/d / Sm³/d Optional rates instead of cumulatives. The module integrates them.

The first row is the initial state and should have zero cumulatives. After you apply, the page shows how it read each column.

Aquifer

Input Unit Applies to
Model – None, Pot, Schilthuis, Fetkovich, vE-Hurst, Carter-Tracy
Geometry – Radial or Linear (Fetkovich, vE-Hurst)
Aquifer pore volume, Aquifer ct MMbbl (10⁶ m³), 1/psi Pot
Influx constant C bbl/d/psi (m³/d/bar) Schilthuis
Reservoir radius ro or Aquifer length L, reD = ra/ro, Aquifer width ft / m, dimensionless Fetkovich, vE-Hurst, Carter-Tracy
Thickness h, Porosity, Permeability, Water viscosity, Aquifer ct ft, fraction, md, cp, 1/psi Fetkovich, vE-Hurst, Carter-Tracy
Encroachment angle ° Radial and Carter-Tracy

Methods

  • General material balance equation: Schilthuis (1936), in the Havlena-Odeh (1963) straight-line form, F = N (Eo + m Eg + (1+m) Efw) + We for oil and F = G (Eg + Efw) + We for gas.
  • Condensate: a gas tank on the wet-gas equivalent Gp + GE Np (Craft & Hawkins; Cragoe). Below the dew point, a two-phase Z is used only with an equation-of-state project fluid.
  • Aquifers: Pot (Craft & Hawkins), Schilthuis steady state, Fetkovich (1971) pseudo-steady state, van Everdingen-Hurst (1949) radial and linear, and Carter-Tracy (1960). The van Everdingen-Hurst influx functions come from numerical Laplace inversion of the exact solutions, not from tables.
  • Diagnostic plots: Havlena-Odeh, Campbell, F/Et vs We/Et and (F - We)/Et vs Np for oil; p/Z vs Gp, Cole, F vs Et and F/Et vs We/Et for gas. Drive indices for oil tanks.
  • Quality check on the Havlena-Odeh line, after Dake (1994) and Pletcher (2002). The in-place headline is blocked if N is not positive, R² is negative, the relative misfit exceeds 10 %, the slope from the second half of the history differs from the first half by more than 20 % of N, or the median drive-index closure exceeds 10 %. Misfit above 3 % or trend above 10 % gives a warning.
  • History match: a bounded global search (differential evolution) over the aquifer parameters, with N (and m, if you tick it) solved linearly at every trial. The objective is the weighted sum of squares of F - We - N Et.
  • Uncertainty: randomised maximum likelihood (Kitanidis 1995; Oliver, Reynolds & Liu 2008). The module refits 300 perturbed copies of the data, perturbing average pressures, initial pressure, PVT expansivity, gas FVF and rock compressibility.
  • Prediction: Tarner/Muskat-style time stepping. At each step the module solves average pressure from the material balance and takes GOR and WOR from Corey relative permeabilities, or from pasted SWOF/SGOF tables with Baker three-phase oil. When the target rate cannot hold the minimum pressure, the step switches to pressure control.
  • Multi-tank: up to six oil tanks joined by transmissibility links, q = T (pa - pb), solved implicitly each step.

Workflow

  1. Set the project fluid on the PVT page.
  2. Open Material balance and use Paste production history, or paste on the Tank & history tab and press Apply history. Pick the Tank type and check the tank inputs.
  3. Open Diagnostic plots. Read the Havlena-Odeh line and the Campbell (oil) or Cole (gas) plot. Click a point to exclude that row; click it again to bring it back.
  4. Open Aquifer & history match. Choose an aquifer Model, tick the parameters to fit in Regression and set their bounds. Set Input uncertainty (one sigma): PVT expansivity (default 3 %), Rock compressibility (default 30 %), Pressure error and Initial-pressure error (leave blank to take them from the pressure-match misfit).
  5. Press Run history match. Check the pressure match, residuals and the in-place versus aquifer trade-off plot.
  6. Press Accept: write the aquifer and N to the model (G for gas tanks). Accepting saves a version first.
  7. Open Prediction. Set Oil rate target (or Gas rate target), Minimum pressure, Economic limit, Water injection, Duration and Time step. Choose the Relative permeability source: Corey or Tables (SWOF/SGOF). Tick Continue from end of history to start from the last history row.
  8. For compartmentalised fields, open Multi-tank, use Add tank, add links and press Run multi-tank.

Interpreting results

  • N, Havlena-Odeh (or G) on the Diagnostic plots tab is a least-squares slope through the origin with the aquifer as set. If the quality check fails, the tile reads Not reliable and lists the reasons. The slope is still drawn, labelled as not an in-place volume.
  • Campbell plot: flat means no influx; rising means influx you have not accounted for; falling means the aquifer is too large. Cole plot: flat for a volumetric gas tank, a hump for water drive.
  • Drive-index closure should be near 0 %. A large value means the balance does not close.
  • P90 – P10 on the history match tab carries data noise, PVT and initial-pressure uncertainty and aquifer non-uniqueness together. The footer lists the sigmas used.
  • Non-uniqueness: in-place vs aquifer size shows how N trades off against cumulative influx. A long, flat cloud means the history cannot separate the two.
  • On Prediction, Max balance error is |F - N Et - We| / F per step. N used states where the in-place volume came from.

Common pitfalls

Exports

  • Send to Economics on the Prediction tab uses the predicted oil, gas and water rates as the Economics production profile.
  • Accepting a history match writes the aquifer and in-place volume to the model and saves a version you can return to in Version history.