{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Calculate frictional slopes (part 3): The Anderson model\n", "\n", "Copyright 2022 Marco A. Lopez-Sanchez. \n", "Content under [Creative Commons Attribution license CC-BY 4.0](https://creativecommons.org/licenses/by/4.0/), code under [Mozilla Public License 2.0](https://www.mozilla.org/en-US/MPL/2.0/).\n", "\n", "> **Goals**: Understand Anderson's model and plot our first brittle fault model" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "# import the required Python scientific libraries\n", "import numpy as np\n", "import pandas as pd\n", "import matplotlib.pyplot as plt\n", "\n", "# set a custom figure style (optional, you can comment on this whole block)\n", "import matplotlib as mpl\n", "mpl.style.use('fivethirtyeight')\n", "mpl.rcParams['figure.facecolor'] = 'white'\n", "mpl.rcParams['axes.facecolor'] = 'white'\n", "mpl.rcParams['axes.edgecolor'] = 'white'" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## The Anderson model\n", "\n", "Anderson (1951) proposed a model for brittle fault failure within the crust making the following assumptions:\n", "\n", "- simplified the types of faults in three different cases (normal, inverse, and strike-slip)\n", "- brittle fractures occur according to the Coulomb criterion\n", "- assumed that two of the three principal stresses lies parallel to the earth's surface and the remaining one perpendicular to it (see figure below)\n", "\n", "![](https://raw.githubusercontent.com/marcoalopez/strength_envelopes/master/figures/Anderson.jpg)\n", "\n", "With these assumptions, Anderson recalculated the Coulomb fracture criterion in terms of differential stress $(\\sigma_d = \\sigma_1 - \\sigma_3)$ and lithostatic stress $(\\sigma_L = \\rho gh)$, being the lithostatic stress for the three different cases \n", "- $\\sigma_L = \\sigma_1$ (normal),\n", "- $\\sigma_L = \\sigma_3$ (inverse),\n", "- $\\sigma_L = \\sigma_2$ (strike-slip).\n", "\n", "which by rearranging give (_disclaimer: Anderson did not consider the the fuid pore pressure but here it is included_)\n", "\n", "**Inverse fault**: $\\quad \\sigma_d = 2(\\sigma_0+\\mu \\sigma_L (1 - \\lambda)) / \\sqrt{\\mu^2 + 1}-\\mu \\quad (1)$\n", "\n", "**Strike-slip fault**: $\\quad \\sigma_d = 2(\\sigma_0+\\mu \\sigma_L (1 - \\lambda)) / \\sqrt{\\mu^2 + 1} \\quad (2)$\n", "\n", "**Normal (extensional) fault**: $\\quad \\sigma_d = -2(\\sigma_0-\\mu \\sigma_L (1 - \\lambda)) / \\sqrt{\\mu^2 + 1}+\\mu \\quad (3)$\n", "\n", "TODO" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "def Anderson_fault(fault_type, depths, pressure, mu=0.73, lamb=0.36, C0=0.0):\n", " \"\"\" Returns the corresponding differential stress in MPa for a specific depth\n", " based on the Anderson theory of faulting (Anderson, 1905) and the Coulomb–\n", " Navier’s law of friction.\n", "\n", " Parameters\n", " ----------\n", " fault_type : string\n", " the type of fault, either 'inverse', 'normal' or 'strike-slip'\n", " depths : array-like\n", " an array-like with the depths [km]\n", " pressure : array-like\n", " the lithostatic stress of pressure at different depths [GPa]\n", " mu : scalar between 0 and 1, optional\n", " Coefficient of friction. Default value 0.73; this is the Rutter\n", " and Glover (2012) coefficient recalculated from Byerlee (1978) data\n", " lamb : scalar between 0 and 1, optional\n", " Hubbert-Rubbey coefficient of fluid pressure. Zero is for dry conditions.\n", " Default = 0.36\n", " C0 : positive scalar, optional\n", " Internal cohesion of the rock [MPa]. Mostly negligible in nature, default\n", " is zero. Alternatively, this parameter can be used as the frictional\n", " cohesive strenght as well.\n", " \"\"\"\n", "\n", " depths = depths * 1000 # convert km to m\n", " pressure = pressure * 1e9 # convert GPa to Pa\n", "\n", " if fault_type == 'inverse':\n", " diff_stress = (2 * (C0 + mu * pressure * (1 - lamb))) / (np.sqrt(mu**2 + 1) - mu)\n", "\n", " elif fault_type == 'strike-slip':\n", " diff_stress = (2 * (C0 + mu * pressure * (1 - lamb))) / (np.sqrt(mu**2 + 1))\n", "\n", " elif fault_type == 'normal':\n", " diff_stress = (- 2 * (C0 - mu * pressure * (1 - lamb))) / (np.sqrt(mu**2 + 1) + mu)\n", " \n", " else:\n", " raise ValueError(\"fault type must be 'inverse', 'strike-slip' or 'normal'\")\n", "\n", " return diff_stress / 10**6" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## First example of a frictional slope\n", "\n", "To start simple, let's estimate at which differential stress brittle failure occurs as a function of lithostatic pressure and the type of fault. For this, let's assume that the internal cohesion of the rock is null (_Amontons' law_), that the coefficient of friction is that of the _Byerlee's law_ for low pressures $\\mu = 0.85$, and that the rocks are completely dry (i.e. coefficient of fluid pressure equals 0). We also assume that the rock density and gravitational acceleration do not vary in the first 15 km of the crust." ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", " | depths | \n", "pressure | \n", "
---|---|---|
0 | \n", "0.000000 | \n", "0.000000 | \n", "
1 | \n", "0.010007 | \n", "0.000270 | \n", "
2 | \n", "0.020013 | \n", "0.000540 | \n", "
3 | \n", "0.030020 | \n", "0.000810 | \n", "
4 | \n", "0.040027 | \n", "0.001079 | \n", "
... | \n", "... | \n", "... | \n", "
1495 | \n", "14.959973 | \n", "0.403445 | \n", "
1496 | \n", "14.969980 | \n", "0.403715 | \n", "
1497 | \n", "14.979987 | \n", "0.403985 | \n", "
1498 | \n", "14.989993 | \n", "0.404254 | \n", "
1499 | \n", "15.000000 | \n", "0.404524 | \n", "
1500 rows × 2 columns
\n", "\n", " | depths | \n", "pressure | \n", "thrust | \n", "normal | \n", "strike | \n", "
---|---|---|---|---|---|
0 | \n", "0.000000 | \n", "0.000000 | \n", "0.000000 | \n", "-0.000000 | \n", "0.000000 | \n", "
1 | \n", "0.010007 | \n", "0.000270 | \n", "0.992056 | \n", "0.212152 | \n", "0.349552 | \n", "
2 | \n", "0.020013 | \n", "0.000540 | \n", "1.984111 | \n", "0.424305 | \n", "0.699105 | \n", "
3 | \n", "0.030020 | \n", "0.000810 | \n", "2.976167 | \n", "0.636457 | \n", "1.048657 | \n", "
4 | \n", "0.040027 | \n", "0.001079 | \n", "3.968223 | \n", "0.848609 | \n", "1.398210 | \n", "
... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "
1495 | \n", "14.959973 | \n", "0.403445 | \n", "1483.123346 | \n", "317.167697 | \n", "522.580854 | \n", "
1496 | \n", "14.969980 | \n", "0.403715 | \n", "1484.115402 | \n", "317.379849 | \n", "522.930407 | \n", "
1497 | \n", "14.979987 | \n", "0.403985 | \n", "1485.107457 | \n", "317.592001 | \n", "523.279959 | \n", "
1498 | \n", "14.989993 | \n", "0.404254 | \n", "1486.099513 | \n", "317.804153 | \n", "523.629511 | \n", "
1499 | \n", "15.000000 | \n", "0.404524 | \n", "1487.091569 | \n", "318.016306 | \n", "523.979064 | \n", "
1500 rows × 5 columns
\n", "