CamPetro

Sonic Porosity (Wyllie Time-Average)

On this page

Summary

The Wyllie time-average equation gives Sonic porosity as the fraction of the travel time that is spent in fluid. In poorly compacted rock it overestimates, and a compaction factor derived from the adjacent shale slowness reduces it. Use it in consolidated, liquid-filled rock, as a check on the other porosity logs or where no density or neutron log exists.

Inputs and outputs

Item Units
Input Compressional slowness µs/ft
Input Matrix slowness µs/ft
Input Fluid slowness µs/ft
Input Shale slowness (compaction) µs/ft
Input Compaction constant
Output Sonic porosity v/v
Output Compaction factor
Output Sonic porosity with compaction factor v/v

Equations

The time-average relation treats the transit time as the sum of the times through matrix and fluid:

\[ \dtc = \left(1 - \phit\right)\dtMa + \phit\,\dtW \]

so the sonic porosity is:

\[ \phiS = \frac{\dtc - \dtMa}{\dtW - \dtMa} \]

In formations that are not well compacted the result is too high. The compaction factor, which uses the slowness of the adjacent shale, divides it down:

\[ \Cp = \max\!\left(1,\; \Ccomp\,\frac{\dtShC}{100}\right) \qquad \phiSc = \frac{\phiS}{\Cp} \]

Both porosities are limited to the interval 0 to 1. With a compaction constant of 1, the factor is 1 for shale slowness up to 100 µs/ft.

Symbol Variable Units Typical range
\(\Delta t\) Compressional slowness µs/ft 40 to 140
\(\Delta t_{ma}\) Matrix slowness µs/ft 47 to 60
\(\Delta t_w\) Fluid slowness µs/ft 180 to 200
\(\phi_t\) Total porosity v/v 0 to 0.40
\(\Delta t_{sh}\) Shale slowness (compaction) µs/ft 80 to 140
\(C\) Compaction constant 0.8 to 1.3
\(\phi_s\) Sonic porosity v/v 0 to 0.4
\(C_p\) Compaction factor 1 to 1.5
\(\phi_{S,c}\) Sonic porosity with compaction factor v/v 0 to 0.4

Single-value calculator

Behavior

Sonic porosity rises in a straight line with slowness, by \(1/(\Delta t_w - \Delta t_{ma})\) = 0.0075 per µs/ft with the default endmembers, so a 10 µs/ft error in the matrix slowness is a 0.075 error in porosity. The three curves show the compaction factor. At 90 µs/ft the uncorrected value is 0.258. A shale slowness of 100 µs/ft leaves it unchanged (factor 1.00), 120 gives 0.215 (factor 1.20) and 140 gives 0.185 (factor 1.40). The correction therefore matters most for young, shallow, shale-rich sections.

Parameter guidance

Matrix slowness. About 55.5 µs/ft for sandstone, 47.5 for limestone and 43.5 for dolomite are the commonly used values. Use the one that fits the lithology, or a volume-weighted value for a mix.

Fluid slowness. About 189 µs/ft for fresh water. It is lower for salty water and higher for oil or gas. The tool reads the flushed zone, so use the filtrate.

Shale slowness and constant. Read the slowness of a thick adjacent shale. If it is under about 100 µs/ft the formation is treated as compacted and no correction is applied. The constant is usually kept at 1 and adjusted only to fit core. Values of 0.8 to 1.3 are quoted.

Shared picks and the relation to the other methods are on the Porosity page.

Worked example

A slowness of 90 µs/ft with the default matrix and fluid, and four shale slownesses:

dt, dt_ma, dt_w = 90.0, 55.5, 189.0
raw = (dt - dt_ma) / (dt_w - dt_ma)
print(f"Wyllie: ({dt:g} - {dt_ma:g}) / ({dt_w:g} - {dt_ma:g}) = {raw:.4f}")
print()
print(f"{'shale dt':>9s} {'Cp':>5s} {'phi_S':>7s} {'compacted':>10s}")
for dt_sh in (90.0, 100.0, 120.0, 140.0):
    cp = max(1.0, 1.0 * dt_sh / 100.0)
    print(f"{dt_sh:9.0f} {cp:5.2f} {raw:7.4f} {raw / cp:10.4f}")
print()
print(f"Slope of the simple relation: {1 / (dt_w - dt_ma):.5f} porosity per us/ft")
print(f"A 10 us/ft error in the matrix slowness moves porosity by {10 / (dt_w - dt_ma):.3f}")

Output

Wyllie: (90 - 55.5) / (189 - 55.5) = 0.2584

 shale dt    Cp   phi_S  compacted
       90  1.00  0.2584     0.2584
      100  1.00  0.2584     0.2584
      120  1.20  0.2584     0.2154
      140  1.40  0.2584     0.1846

Slope of the simple relation: 0.00749 porosity per us/ft
A 10 us/ft error in the matrix slowness moves porosity by 0.075

Assumptions and limitations

  • The rock is consolidated and the matrix and fluid transit times add in series. In unconsolidated sand the sonic reads high and the compaction factor is an empirical patch.
  • The pores are intergranular. The sonic does not read isolated vugs or fractures well, so in carbonates it is usually lower than the true total porosity.
  • The fluid slowness is that of the flushed zone, and gas in the flushed zone makes the porosity read high.
  • The shale next to the interval is representative of the compaction state of the interval itself.
  • The log is free of cycle skips, which read as spurious high porosity.

QC checks

  • Compare with neutron-density porosity in a clean liquid-filled zone. The sonic should be close in consolidated sandstone, or lower in vuggy carbonate.
  • Sonic porosity that is much higher than the others in a shaly, shallow section points to a missing compaction correction.
  • Check for cycle skips: isolated spikes to high slowness over a few samples.
  • A compaction factor that varies in a thick uniform interval means the shale slowness curve is noisy. Smooth it or pick one value per zone.

Going Deeper

The time-average equation was proposed by Wyllie and co-workers from laboratory measurements on consolidated, water-saturated rock and is an empirical average and not a derived wave equation. Its weaknesses are well known: it is too high in loose or low-pressure rock and too high in gas. The compaction factor was introduced to handle the first, and Raymer-Hunt-Gardner's relation, described on the next page, has a different shape that fits field data better at high porosity.

References

  1. Wyllie, M.R.J., Gregory, A.R. and Gardner, L.W., 1956. Elastic wave velocities in heterogeneous and porous media. Geophysics, 21(1), 41–70.
  2. Asquith, G. and Krygowski, D., 2004. Basic Well Log Analysis, 2nd edition. AAPG Methods in Exploration Series 16, American Association of Petroleum Geologists, Tulsa, OK.
  3. Schlumberger, Log Interpretation Charts. Schlumberger, Houston, Texas (updated periodically).

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.