CamPetro

Volumetrics

On this page

Purpose

Volumetrics turns the log interpretation into a volume: how much oil or gas is in the pore space under one acre of the interval, and how that volume is expressed at surface conditions. The result is the petrophysical in-place volume per unit area, for example Oil in place per acre or Gas in place per acre, and its totals over an area, Original oil in place and Original gas in place. It is the number that connects the log analysis to a resource estimate and to well planning, and it is where the porosity, water saturation and net pay of the earlier steps are tested in a single figure.

This step is explicitly a petrophysical volumetric per unit area. It does not apply a recovery factor, a drainage geometry, a fluid contact map or an economic limit, so it is not a reserves estimate. It is also not a substitute for a mapped volumetric model: a single well supplies thickness, porosity and saturation at one point, and the area is a separate decision.

Position in the workflow

Upstream. Volumetrics uses nearly everything before it. Effective porosity comes from the porosity step and Water saturation from the water saturation step, and both must be on the same basis, effective with effective or total with total. The net pay flag comes from Cutoffs and Net Pay, and a pore pressure model may supply the reservoir pressure: see Pore Pressure. Fluid properties come from a PVT report or from the correlations in this step.

Downstream. The per-acre volume is compared with analogue wells, mapped to a volumetric model, and combined with a recovery factor elsewhere. In an unconventional play it is summarized per acre or per section and used to rank locations.

Error propagation. Volume is the product of net thickness, porosity and hydrocarbon saturation, divided by a formation volume factor. For small independent errors, the relative errors add: the error in volume is approximately \(\delta h/h + \delta\phi/\phi + \delta S_w/(1-S_w)\). Porosity and thickness errors are proportional, so a 10% error in either gives a 10% error in volume. Water saturation is different. Its error is divided by the hydrocarbon saturation, so the same absolute error in \(S_w\) matters more as the interval gets wetter. The run below applies the same four changes to a case with \(S_w\) = 0.35 and one with \(S_w\) = 0.70:

import numpy as np

def ooip(h, phi, sw, bo):
    return 7758 * h * phi * (1 - sw) / bo

for sw0 in (0.35, 0.70):
    base = dict(h=30.0, phi=0.12, sw=sw0, bo=1.30)
    n0 = ooip(**base)
    print(f"base case: Sw = {sw0:g}, oil in place = {n0:,.0f} stb/acre")
    steps = {"net thickness +10%": dict(h=33.0), "porosity +0.01": dict(phi=0.13),
             "Sw +0.05": dict(sw=sw0 + 0.05), "Bo -0.10": dict(bo=1.20)}
    rel = {}
    for label, change in steps.items():
        rel[label] = ooip(**{**base, **change}) / n0 - 1
        print(f"  {label:20s} {100 * rel[label]:+6.1f}%")
    rss = np.sqrt(sum(rel[k] ** 2 for k in ("net thickness +10%", "porosity +0.01", "Sw +0.05")))
    print(f"  root-sum-square of thickness, porosity and Sw errors: {100 * rss:.1f}%")

Output

base case: Sw = 0.35, oil in place = 13,964 stb/acre
  net thickness +10%    +10.0%
  porosity +0.01         +8.3%
  Sw +0.05               -7.7%
  Bo -0.10               +8.3%
  root-sum-square of thickness, porosity and Sw errors: 15.1%
base case: Sw = 0.7, oil in place = 6,445 stb/acre
  net thickness +10%    +10.0%
  porosity +0.01         +8.3%
  Sw +0.05              -16.7%
  Bo -0.10               +8.3%
  root-sum-square of thickness, porosity and Sw errors: 21.1%

At \(S_w\) = 0.35 an error of 0.05 in water saturation changes the volume by 7.7%, a little less than an error of 0.01 in porosity (8.3%) and less than a 10% error in thickness. At \(S_w\) = 0.70 the same saturation error is the largest single term, 16.7%, because the hydrocarbon saturation it is divided by is only 0.30. Independent errors combine in quadrature, so thickness, porosity and water saturation together give about 15% at \(S_w\) = 0.35 and 21% at 0.70. These are simple first-order numbers for illustration. Errors in net thickness and porosity are correlated through the cutoffs, and an error in \(R_w\) or in the exponents moves the saturation of every sample in the same direction, so the real uncertainty is usually larger.

Key concepts

Per unit area, in place. The basic quantity is hydrocarbon pore thickness, the sum of thickness times porosity times hydrocarbon saturation over the net pay, in feet. Multiplying by 7758 barrels per acre-foot gives reservoir barrels per acre, and dividing by the oil formation volume factor gives stock-tank barrels. For gas the constant is 43560 cubic feet per acre-foot and the divisor is the gas formation volume factor. See OOIP and OGIP and Pore Volume, HCPV, PHIH and KH.

Formation volume factors. The reservoir fluid shrinks, or its gas expands, on the way to the surface. Oil formation volume factor is greater than 1 and depends on the dissolved gas. Gas formation volume factor is a small fraction, because gas is compressed in the reservoir, and depends on pressure, temperature and the Gas compressibility factor. A laboratory PVT report is the best source; the correlations on the oil and gas pages are the screening alternative.

Pressure and temperature. Both factors depend on them, and so does the solution gas of an oil. They come from Reservoir Pressure and Temperature.

Which flag to sum over. Gross reservoir, net reservoir and net pay give different volumes. Hydrocarbon in place belongs to net pay. Storage and flow capacity, Porosity-thickness and Permeability-thickness, are also reported over net reservoir.

Weighted averages. Porosity is averaged over thickness, saturation over pore volume and permeability over thickness. A plain average of interval values is wrong whenever the intervals differ in thickness or porosity.

Method selection guide

Method Inputs Use when Strengths Weaknesses
OOIP and OGIP Net thickness, porosity, Sw, formation volume factor, area Any in-place volume per acre or over an area Simple, transparent, scales linearly in each input Only in-place at one point; not recoverable; no contacts or lateral variation
Oil FVF and Bubble Point API, gas gravity, temperature, solution GOR, pressure An oil reservoir with no PVT report, or to extend a report to other pressures Gives Rs, bubble point and Bo; saturated and undersaturated branches Black oil only; correlation scatter of several percent; needs a consistent GOR and gravity
Gas FVF and Z-Factor Gas gravity, temperature, pressure A dry or lean gas reservoir with no lab Z Explicit solver, no chart reading Hydrocarbon gas only; no correction for H2S, CO2 or N2; not for condensate or near-critical fluid
Reservoir Pressure and Temperature Depth, gradient, excess pressure, temperature gradient No measured pressure or temperature for the interval Fast and transparent; links to the pore pressure model Hydrostatic assumption; one linear temperature gradient
Pore Volume, HCPV, PHIH and KH Net pay flag, porosity, Sw, permeability by sample Summarizing a zone, comparing wells, feeding a map Correct weighting; reports storage and flow capacity Depends on cutoffs; averages hide thin high-permeability layers

Decision guidance

  • If a PVT report exists, use its formation volume factors and gas-oil ratio. Use the correlations only to fill gaps, and check them against the report where both exist.
  • If the fluid is a black oil and the gas gravity, API gravity and solution gas-oil ratio are known, use the oil correlations. For a volatile oil or a condensate, the liquid and gas yields come from the PVT report or a compositional model.
  • If the gas is dry or lean and mostly hydrocarbon, use the Z-factor solver. If it contains more than a few percent H2S, CO2 or N2, correct the pseudo-critical properties or use a laboratory Z.
  • If there is a pressure measurement, use it. If the basin is normally pressured, use the hydrostatic gradient. If overpressured, take the excess from the pore pressure analysis, and do not extrapolate a hydrostatic gradient.
  • If you compare wells, use PHIH, HCPV and kh over the same cutoffs. Compare thickness-weighted values and not plain averages.

Shared parameter picking

Net pay selection. One flag decides what is summed. Use the cutoffs of Cutoffs and Net Pay and state them with the result. All the per-acre numbers move with the cutoffs.

Porosity and saturation basis. Effective porosity with effective water saturation, or total with total. Do not mix them.

Fluid type and properties. One fluid per interval, oil or gas. The properties (Oil gravity, Gas gravity, Solution gas-oil ratio at bubble point, and for gas the gravity) are the same ones in both the oil and the gas pages, and one set should be used across a project.

Pressure and temperature. Reservoir pressure and Formation temperature are shared by both fluid pages. Set them once per interval, preferably from measurements.

Area. Drainage area is a mapping parameter. It scales the totals linearly and has no petrophysical basis. Quote volume per acre.

Reference depth. Pressure, temperature and the gradients refer to true vertical depth. In a deviated well, use the vertical depth and the vertical thickness.

Absent other information, a careful generalist would:

  1. Fix the net pay flag from the cutoffs, and check that porosity and saturation are on the same basis.
  2. Compute pore volume, hydrocarbon pore volume, PHIH and kh as thickness-weighted sums, for the whole zone and for each flow unit.
  3. Take the reservoir pressure from a measurement, or the hydrostatic gradient plus any excess from the pore pressure model, and the temperature from a corrected bottom-hole temperature or a gradient.
  4. Take the formation volume factors from a PVT report. Without one, use Vasquez-Beggs for the oil and the Hall-Yarborough Z-factor for the gas, at the interval pressure and temperature.
  5. Report volume per acre for oil and gas separately, with the cutoffs, the fluid properties and the sensitivities of step 1. Apply an area only for a total.
  6. Compare with an analogue or a mapped estimate and treat a disagreement of more than a few tens of percent as a prompt to review the net pay and saturation.

Combining methods

The five methods are links of one chain. Net pay and the weighted sums give the hydrocarbon pore thickness, the pressure and temperature feed the fluid correlations, and the formation volume factor converts reservoir to surface volume. The run below does the whole chain for three net pay intervals with a hydrostatic pressure and a linear temperature, a 38 °API oil and a drainage area of 320 acres:

import math

def vb_oil(p, api, g, T, rsb):
    """Vasquez-Beggs bubble point and oil FVF (API > 30 coefficients only, for this example)."""
    c1, c2, c3 = 0.0178, 1.1870, 23.931
    c4, c5, c6 = 4.670e-4, 1.100e-5, 1.337e-9
    k = g * math.exp(c3 * api / (T + 459.67))
    pb = (rsb / (c1 * k)) ** (1 / c2)
    rs = c1 * k * p ** c2 if p <= pb else rsb
    bob = 1 + c4 * rs + (T - 60) * (api / g) * (c5 + c6 * rs)
    if p <= pb:
        return pb, bob
    co = (-1433 + 5 * rsb + 17.2 * T - 1180 * g + 12.61 * api) / (1e5 * p)
    return pb, bob * math.exp(co * (pb - p))

# net pay intervals from the log analysis: (net thickness ft, porosity, water saturation)
zones = [(8.0, 0.12, 0.30), (15.0, 0.09, 0.40), (5.0, 0.15, 0.25)]
tvd, area = 9800.0, 320.0                      # mid-depth of the pay (ft) and drainage area (acres)
p = 14.7 + 0.465 * tvd                         # hydrostatic pressure, psia
T = 70.0 + 1.5 * tvd / 100                     # temperature, F
pb, bo = vb_oil(p, api=38.0, g=0.78, T=T, rsb=700.0)
print(f"p = {p:.0f} psia, T = {T:.0f} F, bubble point = {pb:.0f} psia, Bo = {bo:.4f} rb/stb")

h = sum(z[0] for z in zones)
phih = sum(z[0] * z[1] for z in zones)
hcpv = sum(z[0] * z[1] * (1 - z[2]) for z in zones)
print(f"net = {h:g} ft, PHIH = {phih:.3f} ft, HCPV = {hcpv:.3f} ft")
n_acre = 7758 * hcpv / bo
print(f"oil in place = 7758 x {hcpv:.3f} / {bo:.4f} = {n_acre:,.0f} stb/acre")
print(f"over {area:g} acres: {area * n_acre / 1e6:.2f} MMstb; solution gas {area * n_acre * 700 / 1e9:.2f} Bcf")

Output

p = 4572 psia, T = 217 F, bubble point = 2951 psia, Bo = 1.3915 rb/stb
net = 28 ft, PHIH = 3.060 ft, HCPV = 2.044 ft
oil in place = 7758 x 2.044 / 1.3915 = 11,399 stb/acre
over 320 acres: 3.65 MMstb; solution gas 2.55 Bcf

In this example the pressure is above the bubble point, so the oil is undersaturated and the formation volume factor is slightly below its value at the bubble point. The solution gas is the oil volume times the solution gas-oil ratio; it is a by-product of the oil and is added to any free gas separately. When several wells are combined, average porosity by thickness and saturation by pore volume, and keep the area and the contacts as separate uncertainties. The usual way to carry the uncertainties is a Monte Carlo draw over thickness, porosity, saturation, formation volume factor and area, which turns the single number into a distribution.

QC of results

A good result:

  • uses 7758 barrels per acre-foot for oil and 43560 cubic feet per acre-foot for gas, and the divisors of 10^6 for totals,
  • is zero where net pay is zero and falls as water saturation rises,
  • has a formation volume factor above 1 for oil and well below 1 for gas, at the correct pressure,
  • has HCPV not larger than PHIH, and PHIH not larger than net thickness,
  • compares with an analogue, a mapped volumetric estimate or the cumulative production to date, within the stated uncertainty, and
  • changes smoothly, and in the correct direction, when the cutoffs, the pressure or the saturation are changed.

Signs of a bad result: a volume that is out by a factor of 5.6 (barrels against cubic feet), a Z-factor far from 1 at low pressure, a gas formation volume factor above 0.05, a saturation that is not clipped to the 0 to 1 interval, and a volume that increases when the water saturation increases.

Common pitfalls

  • Treating a per-unit-area petrophysical volume as reserves or as a recoverable volume.
  • Summing over gross thickness instead of net pay, or over non-pay samples that were not flagged.
  • Using total porosity with effective saturation, or the reverse.
  • Averaging porosity, saturation or permeability with a plain mean over intervals of different thickness.
  • Taking the oil formation volume factor at the bubble point for a reservoir far above or below it, or applying the saturated equation at all pressures.
  • Using gauge pressure (psig) or a temperature in °F in the Z-factor or the formation volume factor equations.
  • Using a hydrostatic pressure in an overpressured zone, or a pressure at the wrong depth.
  • Using measured depth and measured thickness in a deviated well.
  • Mixing barrels and cubic feet, or MMstb and Bcf, in the constants.
  • Using one saturation error budget for dry and wet rock: the sensitivity to \(S_w\) grows as the hydrocarbon saturation falls.

Going Deeper

Volumetric estimation is the oldest method of estimating hydrocarbons in place, older than material balance and decline analysis. The petrophysical part is the part that depends on the logs, and in a mature workflow it is the porosity, saturation and net pay that carry most of the uncertainty, with the fluid properties and the area close behind. Probabilistic volumetrics treats each input as a distribution, and the most useful result of the exercise is usually the tornado ranking of the inputs, which tells the team where the next piece of data should be bought. For a gas reservoir with a significant water leg, a free water level and a transition zone make the water saturation a function of height and the volume must be integrated over the column. For unconventional reservoirs, the volume per acre of a thick organic-rich shale is a screening quantity, and the adsorbed gas, the retained liquids and the kerogen porosity add terms that are not in the free-fluid equations here. This step is the point where all of the earlier work is checked against a production or analogue number, and a mismatch often points back to the net pay definition, the saturation model or the pressure, in that order of likelihood.

Methods in this step