CamPetro

Normal Compaction Trendlines

On this page

Summary

A Normal compaction trendline is the expected trend of sonic slowness or resistivity with depth in shale that is compacting normally. Eaton's and the equivalent depth methods compare the logs against it, so the trendline is the most important input of both and the largest source of error. It is a smooth exponential in depth, fitted to clean shale points in a normally pressured interval.

Inputs and outputs

Item Units
Input True vertical depth ft
Input Mudline slowness µs/ft
Input Deep-compaction slowness µs/ft
Input Sonic compaction rate 1/kft
Input Mudline resistivity ohm·m
Input Resistivity compaction rate 1/kft
Output Normal compaction slowness µs/ft
Output Normal compaction resistivity ohm·m

Equations

Sonic slowness in normally compacted shale falls toward a deep value with depth. An exponential approach to an asymptote is a common form, with depth in thousands of feet:

\[ \ppDtn(\zdepth) = \ppDtInf + \left(\ppDtMl - \ppDtInf\right) e^{-\ppCs\,\zdepth/1000} \]

When the asymptote is taken as zero this reduces to the plain exponential trend \(\ppDtn = \ppDtMl\,e^{-\ppCs \zdepth/1000}\), a straight line on a plot of log slowness against depth. Resistivity increases with depth, and the usual form is exponential:

\[ \ppRn(\zdepth) = \ppRzero\,e^{\ppCr\,\zdepth/1000} \]

Both are linear after a transform, so they are fitted by least squares on the shale points: \(\ln(\dtc - \ppDtInf)\) against depth for the sonic with the asymptote fixed, and \(\ln \Rt\) against depth for the resistivity.

Symbol Variable Units Typical range
\(\Delta t_n\) Normal compaction slowness µs/ft 50 to 190
\(\Delta t_{ml}\) Mudline slowness µs/ft 170 to 220
\(\Delta t_{\infty}\) Deep-compaction slowness µs/ft 45 to 70
\(c_s\) Sonic compaction rate 1/kft 0.05 to 0.4
\(R_n\) Normal compaction resistivity ohm·m 0.5 to 5
\(R_0\) Mudline resistivity ohm·m 0.3 to 2
\(c_r\) Resistivity compaction rate 1/kft 0.03 to 0.2
\(z\) True vertical depth ft 0 to 30000
\(\Delta t\) Compressional slowness µs/ft 40 to 140
\(R_t\) True formation resistivity ohm·m 0.2 to 2000

Single-value calculator

Behavior

Slowness falls with depth, steeply at first and then more slowly as it approaches the deep value. The compaction rate controls how quickly: at 10,000 ft the trendline reads 112.9, 81.2 and 57.0 µs/ft for rates of 0.08, 0.15 and 0.3 per kft, with 190 µs/ft at the mudline and a deep value of 50 µs/ft. The plot has depth on the vertical axis, as on a log display, so the curves can be compared directly with a sonic log. The default resistivity trend doubles about every 7,000 ft: it is 1.32 ohm·m at 5,000 ft, 2.17 at 10,000 ft and 3.59 at 15,000 ft.

Parameter guidance

Where to fit. In an interval that is normally pressured, so that the trend represents hydrostatic pore pressure, and that is long enough to constrain the slope, often several thousand feet. In many basins this is the shallow section, above the top of overpressure; after the top of overpressure the trend is extrapolated downward. Which points. Use only clean shale: the property must come from the same lithology at every depth. A shale filter on volume of shale or gamma ray (for example Shale volume above 0.6 to 0.7, a value to calibrate for the basin) and removal of washouts, cycle skips, casing effects and carbonate or calcareous streaks are essential. Shale points only, then interpolate. Computing the trend only at shale points and drawing a smooth curve through them, rather than using the log value in sand, is the standard approach. Mudline value. The mudline slowness is about 180 to 200 µs/ft for soft sediment near the seafloor. Resistivity. Correct for temperature before fitting: the Arps relation, \(R_2 = R_1\,(T_1 + 6.77)/(T_2 + 6.77)\) with temperatures in °F, brings resistivity to a common reference temperature. One trend per compaction province. A change of lithology, of unconformity or of formation water changes the trend, so segment by formation or by fault block when the data call for it.

Worked example

Fit the sonic trendline to a set of synthetic well points. The points are listed with a shale volume; sand points and the overpressured points below 9,500 ft are excluded from the fit, the deep value is fixed at 50 µs/ft, and the fit is a straight line through ln(DT - 50) against depth in kft.

import math
# (depth ft, DT us/ft, Vsh)
pts = [(2000, 150.0, 0.85), (3000, 134.2, 0.80), (3500, 122.0, 0.25), (4000, 119.5, 0.90),
       (5000, 105.0, 0.75), (6000, 96.3, 0.82), (7000, 88.1, 0.30), (7500, 83.9, 0.88),
       (8500, 78.2, 0.80), (9000, 74.1, 0.92), (10500, 92.0, 0.85), (11500, 98.0, 0.90)]
dt_inf, vsh_cut, z_max = 50.0, 0.6, 9500
fit = [(z / 1000.0, math.log(dt - dt_inf)) for z, dt, vsh in pts if vsh > vsh_cut and z < z_max]
n = len(fit)
sx = sum(x for x, y in fit); sy = sum(y for x, y in fit)
sxx = sum(x * x for x, y in fit); sxy = sum(x * y for x, y in fit)
slope = (n * sxy - sx * sy) / (n * sxx - sx * sx)
icpt = (sy - slope * sx) / n
c, dt_ml = -slope, dt_inf + math.exp(icpt)
print(f'{n} shale points used out of {len(pts)}')
print(f'compaction rate c = {c:.3f} per kft, mudline slowness = {dt_ml:.1f} us/ft')
for z, dt, vsh in pts:
    dtn = dt_inf + (dt_ml - dt_inf) * math.exp(-c * z / 1000.0)
    note = 'sand' if vsh <= vsh_cut else ('below fit range' if z >= z_max else '')
    print(f'{z:6d} ft  observed {dt:6.1f}  trend {dtn:6.1f}  difference {dt - dtn:6.1f}  {note}')

Output

8 shale points used out of 12
compaction rate c = 0.201 per kft, mudline slowness = 202.8 us/ft
  2000 ft  observed  150.0  trend  152.1  difference   -2.1  
  3000 ft  observed  134.2  trend  133.5  difference    0.7  
  3500 ft  observed  122.0  trend  125.5  difference   -3.5  sand
  4000 ft  observed  119.5  trend  118.3  difference    1.2  
  5000 ft  observed  105.0  trend  105.8  difference   -0.8  
  6000 ft  observed   96.3  trend   95.6  difference    0.7  
  7000 ft  observed   88.1  trend   87.3  difference    0.8  sand
  7500 ft  observed   83.9  trend   83.7  difference    0.2  
  8500 ft  observed   78.2  trend   77.6  difference    0.6  
  9000 ft  observed   74.1  trend   74.9  difference   -0.8  
 10500 ft  observed   92.0  trend   68.4  difference   23.6  below fit range
 11500 ft  observed   98.0  trend   65.1  difference   32.9  below fit range

Assumptions and limitations

  • The trend represents the normal compaction of one lithology, so every point used is clean shale of the same type.
  • Hydrostatic pore pressure in the fitted interval. If the fitted interval is already overpressured the trendline is too slow and overpressure is underestimated everywhere.
  • A single exponential describes the compaction over the whole well; thick sections with different thermal or lithological histories need separate trends.
  • The asymptote (the deep value) is known or assumed; the fit is not very sensitive to it in shallow data but the extrapolation to depth is.
  • Log values are good: no washouts, no tool effect, no hydrocarbon effect in the shale points.

QC checks

  • Fit residuals are small in the fitted interval and do not trend with depth.
  • Sandstone, carbonate and washed-out points are clearly excluded: plot all points and the retained shale points together.
  • The trend overlays the shale baseline on the log display in the normal interval, and the log separates from it only where overpressure is expected.
  • The trendline passes through all tops of normal pressure supported by direct measurements, and its extrapolation does not cross the asymptote.
  • Trends from offset wells in the same basin have similar slopes. A very different slope should have a lithological or thermal explanation.

Going Deeper

Mudline-anchored exponential forms were popular because a single trend is easily fitted to a normally pressured shallow section, and Hottmann and Johnson, Foster and Whalen and Eaton all started from a trendline in log-linear form. The weakness is that overpressure often begins shallower than the point where the fit is known to be normal, and then the trend is wrong at its origin. Alternatives avoid the trendline by working directly in effective stress, as Bowers' method does, or fit it in porosity rather than slowness. Basin modeling and seismic velocity trends are used where well data are sparse. Nothing replaces direct pressure measurements in normally pressured sands as the check on the trend.

References

  1. Hottmann, C.E. and Johnson, R.K., 1965. Estimation of formation pressures from log-derived shale properties. Journal of Petroleum Technology, 17(6), 717–722.
  2. Foster, J.B. and Whalen, H.E., 1966. Estimation of formation pressures from electrical surveys, offshore Louisiana. Journal of Petroleum Technology, 18(2), 165–171.
  3. Eaton, B.A., 1975. The equation for geopressure prediction from well logs. SPE 5544, SPE-AIME Fall Meeting, Dallas, TX.
  4. Zhang, J., 2011. Pore pressure prediction from well logs: methods, modifications, and new approaches. Earth-Science Reviews, 108(1–2), 50–63.

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.