Copyright 2021 Marco A. Lopez-Sanchez.
Content under Creative Commons Attribution license CC-BY 4.0, code under Mozilla Public License 2.0.
Goals: Understand Hubbert-Rubey fluid-pressure hypothesis.
# import the required Python scientific libraries
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
# set a custom figure style (optional, you can comment on this whole block)
import matplotlib as mpl
mpl.style.use('fivethirtyeight')
mpl.rcParams['figure.facecolor'] = 'white'
mpl.rcParams['axes.facecolor'] = 'white'
mpl.rcParams['axes.edgecolor'] = 'white'
Coulomb's and Byerlee's models successfully predict some common observations about fragile faults (see examples in Twiss and Moores, 2007). There are, however, notable exceptions such as flat ramps in thrust faults or low-angle extensional faults (the mechanical paradox) TODO
This paradox was solved by the Hubert and Rubey model (Hubbert and Rubey 1959). Based on previous knowledge of soil mechanics (Terzagui 1936), Hubbert and Rubey envisioned that the fault shear strength not only depends on the fault‐normal stress and the internal coefficient of friction but also the fluid pore pressure. Intuitively, this means that a fluid under pressure along the fracture plane exerts a force that counteracts the fault‐normal stress and, hence, the higher the fluid pore pressure, the smaller the fault shear strength ($\tau$). This model allows mechanically unfavourable faults to be explained and has been confirmed with direct and indirect measures several times (e.g. Aydin and Engelder, 2014; Suppe, 2014). This model adds the concept of effective normal stress $\sigma_{n}^{eff}$, which is the fault-normal stress taking into account the fluid pore pressure as follows
$\tau = C_0 + \mu \sigma_{n}^{eff} = C_0 + \mu (\sigma_n - P_f)$
where $P_f$ is the pore fluid pressure.
An alternative way of articulating this using the ratio between the pore fluid pressure and the lithostatic stress $\lambda = P_f / \sigma_L$ as follows
$\tau = C_0 + \mu \sigma_n (1-\lambda)$
that hold for the cases when $\sigma_L \approx \sigma_n$
import sys
print('Notebook tested using:')
print('Python', sys.version)
print('Numpy', np.__version__)
print('Matplotlib', mpl.__version__)
print('Pandas', pd.__version__)