CamPetro

Swirr from Permeability

On this page

Summary

Irreducible water saturation can be read from Permeability with a power law fitted to core: better rock has bigger pore throats, drains more completely and ends at a lower Swirr. Use it when core gives a reliable Swirr-permeability relation and a good permeability curve exists.

Inputs and outputs

Item Units
Input Permeability mD
Input Swirr-permeability coefficient a v/v at 1 mD
Input Swirr-permeability exponent b dimensionless
Output Irreducible water saturation v/v

Equations

Swirr is a power law of permeability with a negative exponent, limited to the interval 0 to 1:

\[ \Swirr = \CpSwKA\,k^{\CpSwKB} \]

The coefficients are fitted by linear regression of \(\log \Swirr\) on \(\log k\) for the core data of one rock type.

Symbol Variable Units Typical range
\(k\) Permeability mD 0.0001 to 10000
\(a_k\) Swirr-permeability coefficient a v/v at 1 mD
\(b_k\) Swirr-permeability exponent b dimensionless -0.4 to -0.1
\(S_{wirr}\) Irreducible water saturation v/v 0.05 to 0.5

Single-value calculator

Behavior

Swirr falls steadily as permeability rises. With a = 0.4 and b = -0.2, Swirr is 0.634 at 0.1 mD, 0.400 at 1 mD, 0.252 at 10 mD, 0.159 at 100 mD and 0.100 at 1000 mD, so each decade of permeability multiplies Swirr by 0.63. A less negative exponent flattens the curve: at 100 mD, exponents of -0.1, -0.2 and -0.3 give 0.252, 0.159 and 0.100.

Parameter guidance

The coefficients come from a log-log cross-plot of core Swirr against core permeability, preferably from capillary pressure at a stated maximum pressure, because the Swirr that is measured depends on how hard the sample was drained. Do the fit for one rock type at a time. The pair 0.4 and -0.2 is illustrative. Use a permeability curve that does not itself depend on Swirr: if permeability comes from a Coates or Timur model, which needs Swirr, the result is circular, and the permeability should be a core-calibrated transform or a measured curve.

Worked example

Permeability from 0.1 to 1000 mD with a = 0.4 and b = -0.2, and the fit of those coefficients from four made-up core points:

import numpy as np
a, b = 0.4, -0.2
for k in (0.1, 1, 10, 100, 1000):
    print(f"k = {k:7.1f} mD  Swirr = {min(1.0, a * k ** b):.3f}")
# fitting a and b from four hypothetical core points (k, Swirr)
k_core = np.array([0.5, 4.0, 30.0, 250.0])
s_core = np.array([0.46, 0.31, 0.21, 0.14])
slope, intercept = np.polyfit(np.log10(k_core), np.log10(s_core), 1)
print()
print(f"fit: b = {slope:.3f}, a = {10 ** intercept:.3f}")

Output

k =     0.1 mD  Swirr = 0.634
k =     1.0 mD  Swirr = 0.400
k =    10.0 mD  Swirr = 0.252
k =   100.0 mD  Swirr = 0.159
k =  1000.0 mD  Swirr = 0.100

fit: b = -0.192, a = 0.403

Assumptions and limitations

  • Swirr is a function of permeability alone within the rock type. It ignores that two rocks of the same permeability but different pore geometry have different Swirr.
  • The permeability curve is accurate. Its log-scale error is passed to Swirr as an error of b times that amount.
  • The core Swirr was measured at a pressure or height consistent with the column in the field.
  • The permeability does not itself use Swirr, or the circularity has been handled.

QC checks

  • The fit on a log-log plot of core Swirr against permeability has a high correlation, and the residuals show no trend with porosity or depth.
  • Swirr from this method and from Buckles are of the same size for the same rock, and both fall in the reservoir interval.
  • Check the sign: the exponent must be negative.
  • Swirr is below the water saturation in hydrocarbon-bearing zones.

Going Deeper

The relation is empirical, but its form is expected from capillary theory: larger throats correspond to higher permeability and lower capillary entry pressure, so the sample drains further at a given pressure. The observed exponent is small, so permeability must change by a decade to change Swirr by about a third. It is for this reason that a Swirr-permeability fit is an effective predictor of Swirr but not a good route back to permeability: the inverse magnifies any Swirr error enormously. The SwH Analysis topic describes the same fit as part of a saturation-height model, on its permeability-based page.

References

References will be added once verified.

Python reference implementation

Python reference implementation

The Python reference implementation is available to registered users with a verified email address. Register or sign in to view it.