3D fault modelling

In this example, we simulate basin formation in the depression induced by a combined normal and strike-slip fault system.

fault system

We investigate the impact of erodibility coefficient on preservation of the basin over 100k years.

Each run starts with an inclined topography ($<0.5/100$) over which a constant precipitation rate (1 m/a) is applied. After 2000 years the 3D displacements combining the normal and strike-slip components (kindly provided by Guillaume Duclaux) are applied. The model applies 5 times the same displacements up to the simulation end time (100k years).

Initial settings

For this model, we use the stream power law sediment transport model which scale the incision rate $E$ as a power function of surface water discharge $A$ and slope $S=\nabla z$:

$$ E = \kappa A^m (\nabla z)^n$$

where $\kappa$ is the erodibility coefficient dependent on lithology and mean precipitation rate, channel width, flood frequency, channel hydraulics.

The values given to these parameters ($\kappa$, $m$, $n$) need to be set in the XmL input file. To evaluate the role of the erodibility coefficient we keep the values of $m$ and $n$ constant for each of our run but we will change the coefficient of erodibility between each run:

  • $\kappa = 2.5 e^{-6}$ /a
  • $\kappa = 5.0 e^{-6}$ /a
  • $\kappa = 1.0 e^{-5}$ /a

In this model, we need the top surface (TIN) is reevaluate every 500 years to make sure the Delaunay triangulation distortion induced by the horizontal displacements is minimal. If this is not the case the surface is automatically remeshed to:

  • ensure homogeneous nodes distribution when sparse areas exist
  • limit nodes concentration in node dense areas

Starting pyBadlands

First we initialise the model and set the path to the XmL input file.

You can edit the XmL configuration file at /edit/volume/Examples/strikeslip/strikeslip.xml.

To view the complete XmL options you can follow this link to github page: complete.xml.

In [1]:
from pyBadlands.model import Model as badlandsModel
# If you'd like to run this across an MPI cluster, instead use
#from pyBadlands.remote import RemoteModel as badlandsModel

# initialise model
model = badlandsModel()
model.load_xml('strike-slip.xml')