CamPetro

Sonic-Derived Secondary Porosity

On this page

Summary

The sonic log in carbonates responds mainly to the interparticle pore space, while density and neutron respond to all the porosity. The difference between the total porosity and the Sonic porosity is therefore an estimate of the Separate-vug porosity, the secondary vuggy porosity, and what is left is the Interparticle porosity. Use it where the three porosity logs are available and the rock is a clean carbonate.

Inputs and outputs

Item Units
Input Bulk density g/cm³
Input Neutron porosity v/v
Input Matrix density g/cm³
Input Pore fluid density g/cm³
Input Compressional slowness µs/ft
Input Matrix slowness µs/ft
Input Fluid slowness µs/ft
Output Total porosity v/v
Output Sonic porosity v/v
Output Separate-vug porosity v/v
Output Interparticle porosity v/v

Equations

Total porosity is the average of the density and neutron porosities, on a limestone scale:

\[ \phiDen = \frac{\rhoMa - \rhob}{\rhoMa - \rhoFl} \qquad \phit = \phiNDa = \frac{\phiDen + \phiN}{2} \]

Sonic porosity from the time-average relation:

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

Separate-vug porosity is the part of the total porosity that the sonic does not see, limited to the range 0 to \(\phit\), and the interparticle porosity is the remainder:

\[ \phiSV = \phit - \phiS \qquad\qquad \phiIP = \phit - \phiSV \]

Where the sonic porosity is above the total porosity, the vug porosity is zero and the interparticle porosity is the total porosity.

Symbol Variable Units Typical range
\(\rho_b\) Bulk density g/cm³ 1.8 to 3.0
\(\phi_N\) Neutron porosity v/v -0.02 to 0.60
\(\rho_{ma}\) Matrix density g/cm³ 2.65 to 2.87
\(\rho_f\) Pore fluid density g/cm³ 0.2 to 1.2
\(\phi_D\) Density porosity v/v 0 to 0.40
\(\phi_t\) Total porosity v/v 0 to 0.40
\(\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_s\) Sonic porosity v/v 0 to 0.4
\(\phi_{sv}\) Separate-vug porosity v/v 0 to 0.15
\(\phi_{ip}\) Interparticle porosity v/v 0.02 to 0.35
\(\phi_{ND}\) Neutron-density porosity (average) v/v 0 to 0.40

Single-value calculator

Behavior

The vug porosity falls as the slowness rises, because a slower rock has more interparticle porosity in the sonic's view. For a density of 2.55 g/cm³ and a neutron porosity of 0.12 (total porosity 0.107), vug porosity is 0.089 at 50 µs/ft, 0.054 at 55 and 0.018 at 60, and zero from about 62.7 µs/ft, where the sonic porosity reaches the total. A higher neutron porosity raises the total porosity and the vug porosity at the same slowness: at 55 µs/ft the vug porosity is 0.034, 0.054 and 0.074 for neutron porosities of 0.08, 0.12 and 0.16. A change of 1 µs/ft is 0.007 of porosity, so an error of 3 µs/ft in the matrix slowness is 0.02 of vug porosity, which is as large as many vug porosities of interest.

Parameter guidance

Matrix slowness is about 47.5 µs/ft for limestone and about 43.5 µs/ft for dolomite. Use the value for the actual mineralogy, from Mineral Inversion where available. Fluid slowness is about 189 µs/ft for fresh water. Matrix density is 2.71 g/cm³ for limestone and 2.87 for dolomite, and the neutron porosity must be on the same lithology scale. Total porosity is covered on the Porosity page, and the time-average relation is the one on Sonic Porosity (Wyllie Time-Average). An alternative sonic transform changes the result, so use the same one for the whole project. The vug porosity feeds Lucia m and the interparticle porosity feeds Lucia rock fabric number.

Worked example

A limestone with a bulk density of 2.55 g/cm³, a neutron porosity of 0.12 and a slowness of 55 µs/ft, and the same rock at a slowness of 65 µs/ft where the sonic sees all of the porosity:

rhob, nphi, rma, rf, dtma, dtw = 2.55, 0.12, 2.71, 1.0, 47.5, 189.0
phid = (rma - rhob) / (rma - rf)
phit = (phid + nphi) / 2
print(f"density porosity {phid:.4f}, neutron {nphi:.4f}, total {phit:.4f}")
for dt in (55.0, 65.0):
    phis = (dt - dtma) / (dtw - dtma)
    sv = min(max(phit - phis, 0.0), phit)
    print(f"dt = {dt:.0f}: sonic {phis:.4f}, vug {sv:.4f}, interparticle {phit - sv:.4f}, vug fraction {sv / phit:.3f}")
print(f"1 us/ft of slowness = {1 / (dtw - dtma):.4f} of porosity")

Output

density porosity 0.0936, neutron 0.1200, total 0.1068
dt = 55: sonic 0.0530, vug 0.0538, interparticle 0.0530, vug fraction 0.504
dt = 65: sonic 0.1237, vug 0.0000, interparticle 0.1068, vug fraction 0.000
1 us/ft of slowness = 0.0071 of porosity

Assumptions and limitations

  • The sonic porosity reads the interparticle (matrix) pore space only, because the wave takes the stiffest path around separate vugs and moulds.
  • The time-average relation, with correct matrix and fluid slowness, describes the sonic response of the interparticle porosity. Compaction and pore shape change the match.
  • Density and neutron porosity are right and on the same scale. Gas, bad hole, shale and unknown mineralogy change them and the difference.
  • Anything that makes the sonic slower than expected (fractures, cycle skips, gas, shale) lowers the vug estimate or makes it negative, which is limited to zero. Anything that makes it faster raises it.
  • Touching vugs and fractures are partly seen by the sonic and are not counted as separate vugs.

QC checks

  • The vug porosity is zero in clean, non-vuggy intervals and not a constant positive offset (an offset means a wrong matrix slowness).
  • It is never above the total porosity, and the interparticle porosity is never negative.
  • The vug porosity is high at moulds and vugs seen in core or image logs.
  • Check cycle skips and washouts: they produce spikes in the difference.
  • The interparticle porosity compares with core plug porosity better than the total porosity does in vuggy intervals.

Going Deeper

The idea that sonic velocity in carbonate depends on pore type, and not only on porosity, was shown by laboratory and log studies, which found velocity for a given porosity to be higher for rocks with moulds and separate vugs and lower for those with microporosity and cracks. Lucia used this to get separate-vug porosity from the difference between total and sonic porosity. A refinement is to replace the time-average with a transform that includes a pore-shape factor, or a velocity-deviation approach, which expresses vug porosity as a function of how much faster the measured sonic is than the time-average prediction. Some software uses an empirical function of this kind with constants fitted to core. I cannot give a published source for it and the simple difference is used here. In every case the vug porosity is the difference of two uncertain logs, which is why it is best used as an indicator and calibrated against core and image logs.

References

  1. Anselmetti, F.S. and Eberli, G.P., 1993. Controls on sonic velocity in carbonates. Pure and Applied Geophysics, 141(2), 287–323.
  2. 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.
  3. Lucia, F.J., 2007. Carbonate Reservoir Characterization: An Integrated Approach, 2nd edition. Springer-Verlag, Berlin Heidelberg.

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.