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:
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:
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
- 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.
- 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.
- Eaton, B.A., 1975. The equation for geopressure prediction from well logs. SPE 5544, SPE-AIME Fall Meeting, Dallas, TX.
- 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.