Horizontal Stress Methods
On this page
Summary
The horizontal stresses are the least certain part of a one-dimensional geomechanical model. The Minimum horizontal stress is estimated from the vertical stress, pore pressure and Poisson's ratio by uniaxial-strain relations, with tectonic strain added where it is needed, and the Maximum horizontal stress is bounded by frictional equilibrium or estimated with the same strain model. Every one of these needs calibration to pressure tests.
Inputs and outputs
| Item | Units | |
|---|---|---|
| Input | Vertical stress | psi |
| Input | Pore pressure (stress analysis) | psi |
| Input | Poisson's ratio (static) | dimensionless |
| Input | Biot coefficient | dimensionless |
| Input | Static Young's modulus | GPa |
| Input | Tectonic strain, minimum horizontal | µε |
| Input | Tectonic strain, maximum horizontal | µε |
| Input | Coefficient of internal friction | dimensionless |
| Output | Shmin, Hubbert-Willis | psi |
| Output | Shmin, Eaton uniaxial strain | psi |
| Output | Shmin, poroelastic (Eaton-Biot) | psi |
| Output | Shmin, stress-strain model | psi |
| Output | SHmax, stress-strain model | psi |
| Output | Friction factor | dimensionless |
| Output | Shmin, normal-faulting frictional limit | psi |
| Output | SHmax, strike-slip frictional limit | psi |
| Output | Stress regime index | 1, 2 or 3 |
Equations
All stresses are total stresses in psi. Pore pressure is \(\gmPp\) and Poisson's ratio is the static value \(\gmNu\).
Hubbert-Willis. The minimum horizontal stress is a fixed fraction of the effective vertical stress added to pore pressure. The original bounds are one third (lower) and one half (upper):
Eaton (uniaxial strain). Zero lateral strain in an elastic rock gives:
Eaton-Biot (poroelastic). Pore pressure enters the effective stress through the Biot coefficient \(\gmAlpha\):
Stress-strain (tectonic strain). Imposed strains \(\gmEpsMin\) in the minimum and \(\gmEpsMax\) in the maximum horizontal direction add to the poroelastic result, with \(\gmEs\) the static Young's modulus (in psi: 1 GPa is 145 038 psi, and a microstrain is \(10^{-6}\)):
Frictional limits. The effective stresses cannot exceed the strength of pre-existing faults. For a coefficient of friction \(\gmMu\) the limiting ratio of largest to smallest effective stress is:
In a normal-faulting state the vertical stress is the largest, which sets a lower bound on the minimum horizontal stress. In a strike-slip state the maximum horizontal stress is the largest, which sets an upper bound on it:
In the calculator \(\gmSh\) in the second limit is the stress-strain result. Regime. The ordering of the three stresses gives the Anderson regime \(\gmRegime\): 1 (normal) when \(\gmSv\) is the largest, 2 (strike-slip) when \(\gmSv\) lies between \(\gmSh\) and \(\gmSHm\), and 3 (reverse) when \(\gmSv\) is the smallest.
| Symbol | Variable | Units | Typical range |
|---|---|---|---|
| \(S_{v}\) | Vertical stress | psi | 1000 to 25000 |
| \(P_{p}\) | Pore pressure (stress analysis) | psi | 1000 to 20000 |
| \(\nu\) | Poisson's ratio (static) | dimensionless | 0.10 to 0.40 |
| \(\alpha\) | Biot coefficient | dimensionless | 0.3 to 1.0 |
| \(E_{s}\) | Static Young's modulus | GPa | 5 to 80 |
| \(\varepsilon_{h}\) | Tectonic strain, minimum horizontal | µε | 0 to 1000 |
| \(\varepsilon_{H}\) | Tectonic strain, maximum horizontal | µε | 0 to 1500 |
| \(\mu\) | Coefficient of internal friction | dimensionless | 0.3 to 1.2 |
| \(q\) | Friction factor | dimensionless | 1.7 to 7.5 |
| \(S_{h}^{HW}\) | Shmin, Hubbert-Willis | psi | 3000 to 20000 |
| \(S_{h}^{E}\) | Shmin, Eaton uniaxial strain | psi | 3000 to 20000 |
| \(S_{h}^{B}\) | Shmin, poroelastic (Eaton-Biot) | psi | 3000 to 20000 |
| \(S_{h}^{\varepsilon}\) | Shmin, stress-strain model | psi | 3000 to 20000 |
| \(S_{H}^{\varepsilon}\) | SHmax, stress-strain model | psi | 3000 to 25000 |
| \(S_{h}^{nf}\) | Shmin, normal-faulting frictional limit | psi | 3000 to 20000 |
| \(S_{H}^{ss}\) | SHmax, strike-slip frictional limit | psi | 3000 to 30000 |
| \(R_{s}\) | Stress regime index | 1, 2 or 3 | 1 to 3 |
| \(S_{h}\) | Minimum horizontal stress | psi | 3000 to 20000 |
| \(S_{H}\) | Maximum horizontal stress | psi | 3000 to 25000 |
Single-value calculator
Behavior
In the plot the vertical stress is 9800 psi and the pore pressure 4700 psi. Eaton's relation is linear in ν/(1-ν), so Shmin rises steeply with Poisson's ratio: 5600 psi at ν = 0.15, 6400 psi at 0.25 and 7446 psi at 0.35. At ν = 0.25 the factor ν/(1-ν) is exactly one third, so Eaton's relation and the Hubbert-Willis one-third form agree (6400 psi); this is a coincidence of the number, not a general agreement. The poroelastic form, with a Biot coefficient of 0.8, is lower, at 5773 psi, since less of the pore pressure is added to the horizontal stress; with a Biot coefficient of 1 it reduces to Eaton's form (6400 psi). The stress-strain curve is the poroelastic curve shifted up by the tectonic strain, by 232 psi at the default 200 µε of maximum strain, and its shift grows with ν because of the ν times εH term. The maximum stress in the same model is 6702 psi, so the stress state is normal faulting (regime 1). With strains of 600 and 1200 µε the horizontal stresses rise to 9950 and 12039 psi, above the vertical stress at 9800 psi, which is a reverse regime (regime 3). The normal-faulting frictional limit on Shmin is 6335 psi, above the poroelastic 5773 psi: the default poroelastic stress state is inconsistent with a friction coefficient of 0.6, so it would imply faulting, and the model needs a larger Shmin.
Parameter guidance
Poisson's ratio. Use the static value, see Static vs Dynamic Moduli. The result is very sensitive to it. An error of 0.05 in ν changes Shmin by hundreds of psi here.
Biot coefficient. See Friction Angle, Biot Coefficient and Cohesion. A value of 1 is the conservative choice for soft rock.
Pore pressure. From a pore pressure model, Pore Pressure, or measurements. In overpressure the effective-stress methods give a high Shmin, and Hubbert-Willis is not valid there.
Tectonic strain. The strains are calibration parameters, not measurements. Choose them so that Shmin matches closure pressures from minifracs, extended leak-off tests or mini-frac data in the same lithology, and SHmax matches the constraints from breakouts and tensile fractures. Typical magnitudes are 1e-4 to 1e-3. Another common form adds a calibrated constant stress to the poroelastic result; this is the same idea with fewer parameters.
Friction coefficient. 0.6 is the typical value for stress limits, from frictional sliding experiments and in-situ stress measurements in deep boreholes. Use 0.5 to 0.7 for a sensitivity range.
Choose the method by what you can calibrate. With leak-off tests or minifracs in a zone, tune the tectonic strains until the model matches them. With none, Eaton's uniaxial form and the frictional limits give a bracketing range, not an answer.
Worked example
Stresses at 10000 ft with a vertical stress of 9800 psi and pore pressure of 4700 psi, comparing the minimum horizontal stress methods, the frictional limits for a friction coefficient of 0.6, and a check of the stress regime:
import math
Sv, Pp, nu, alpha, E_gpa = 9800.0, 4700.0, 0.25, 0.8, 30.0
mu = 0.6
q = (math.sqrt(1 + mu**2) + mu) ** 2
r = nu / (1 - nu)
hw = (Sv + 2 * Pp) / 3
eaton = r * (Sv - Pp) + Pp
poro = r * (Sv - alpha * Pp) + alpha * Pp
E = E_gpa * 145037.74 / (1 - nu**2)
eps_h, eps_H = 0.0, 200e-6
sh = poro + E * (eps_h + nu * eps_H)
SH = poro + E * (eps_H + nu * eps_h)
print(f"Hubbert-Willis {hw:.0f}, Eaton {eaton:.0f}, Eaton-Biot {poro:.0f} psi")
print(f"stress-strain: Shmin {sh:.0f}, SHmax {SH:.0f} psi")
print(f"q = {q:.3f}; normal-faulting limit on Shmin = {(Sv - Pp) / q + Pp:.0f} psi")
print(f"strike-slip limit on SHmax = {q * (sh - Pp) + Pp:.0f} psi")
regime = 'normal' if Sv >= SH else ('strike-slip' if Sv >= sh else 'reverse')
print(f"regime: {regime}")
# gradients in ppg at 10000 ft
for name, s in (('Sv', Sv), ('Shmin', sh), ('SHmax', SH), ('Pp', Pp)):
print(f"{name:6s} {s / (0.052 * 10000):5.2f} ppg")
Output
Hubbert-Willis 6400, Eaton 6400, Eaton-Biot 5773 psi
stress-strain: Shmin 6005, SHmax 6702 psi
q = 3.119; normal-faulting limit on Shmin = 6335 psi
strike-slip limit on SHmax = 8772 psi
regime: normal
Sv 18.85 ppg
Shmin 11.55 ppg
SHmax 12.89 ppg
Pp 9.04 ppg
Assumptions and limitations
- The rock is elastic, laterally constrained and homogeneous in the uniaxial strain methods. Tectonically active or structurally complex areas, salt, and rock with a creeping shale violate this.
- Poisson's ratio from a log is representative of the static value. Dynamic Poisson's ratio is often close to the static one, but the exact relation is not known in general.
- The principal stresses are vertical and horizontal, so the vertical well is a principal-axis problem. Near faults, in thrust belts or beside salt the axes are tilted.
- The tectonic strains are constant over the interval. They typically change with lithology: stiffer layers carry more tectonic stress.
- The frictional limits assume that critically stressed faults exist and are optimally oriented, so they bound the stress and do not predict it. The maximum horizontal stress from frictional limits is an upper bound, and the actual value lies below it.
- Hubbert-Willis fractions of one third and one half are empirical and were derived for unconsolidated Gulf Coast sediments.
QC checks
- Shmin is below Sv and above Pp in normal and strike-slip regimes. Shmin below Pp is not credible, and Shmin above Sv implies a reverse regime that has to be justified by geology.
- SHmax is at least Shmin. A computed SHmax below Shmin means the strain inputs are inconsistent (εH below εh).
- Stresses satisfy the frictional limits: (Sv - Pp)/(Shmin - Pp) below q in a normal state, and (SHmax - Pp)/(Shmin - Pp) below q in a strike-slip state. Stresses outside the limit imply faults that should be slipping.
- Shmin matches leak-off, extended leak-off and minifrac closure pressures in the offset wells, in the same lithology. This is the one calibration that counts.
- Shmin steps at lithology boundaries are realistic, since stiff layers carry more stress, and should match measured stress contrasts between layers where they are known.
- The regime is consistent with the geology: normal faulting in an extensional basin, strike-slip or reverse in compressive settings.
Going Deeper
The uniaxial strain relation assumes the rock was laterally confined as it was buried. It gives the lowest horizontal stress consistent with that history, and real rock often has more, from tectonics, from stress locked in by past erosion, or from viscoelastic relaxation in weak shales that drives them toward an isotropic stress state. The stress-strain method of Thiercelin and Plumb and of Blanton and Olson adds imposed strains to represent this. In the same spirit, a lithology dependence enters through Young's modulus and Poisson's ratio: stiff layers hold higher horizontal stress, so a stress profile with depth is stepped, not smooth. The maximum horizontal stress is the weakest link. It cannot be measured directly with a leak-off test, and has to be inferred from the shape of breakouts and tensile fractures in image logs, from frictional limits, or from regional compilations. Estimates are often given as a range, which then carries through to the mud weight window.
References
- Hubbert, M.K. and Willis, D.G., 1957. Mechanics of hydraulic fracturing. Transactions of the AIME, 210, 153–168.
- Eaton, B.A., 1969. Fracture gradient prediction and its application in oilfield operations. Journal of Petroleum Technology, 21(10), 1353–1360.
- Blanton, T.L. and Olson, J.E., 1999. Stress magnitudes from logs: effects of tectonic strains and temperature. SPE Reservoir Evaluation & Engineering, 2(1), 62–68.
- Thiercelin, M.J. and Plumb, R.A., 1994. A core-based prediction of lithologic stress contrasts in East Texas formations. SPE Formation Evaluation, 9(4), 251–258.
- Zoback, M.D., 2007. Reservoir Geomechanics. Cambridge University Press.
- Biot, M.A., 1941. General theory of three-dimensional consolidation. Journal of Applied Physics, 12(2), 155–164.
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.