Class Tectonics#

class mesher.tectonics.Tectonics[source]#

This class defines how 2D and spherical mesh surfaces are changing given a set of horizontal and vertical rates.

Note

Three advection approaches are proposed, a standard upwind scheme, an Inflow-Implicit/Outflow-Explicit scheme and a semi-lagrangian approach based on nearest neighbour search based on a kdTree-search where interpolation is weighted by distance.

Methods

getTectonics()

Finds the current tectonic regimes (horizontal and vertical) for the considered time interval.

updatePaleoZ()

Update surface information based on paleo-reconstruction.

Initialise

__init__()

The initialisation of the Tectonics class.

Public Methods

getTectonics()

Finds the current tectonic regimes (horizontal and vertical) for the considered time interval.

updatePaleoZ()

Update surface information based on paleo-reconstruction.

Private Methods

_buildAdvecMat(iioe, lCoeffs[, rCoeffs])

Create the advection matrix.

_advectorIIOE2(vL, newv, vmin, vmax, nbOut)

Perform the advection for the Inflow-Implicit/Outflow-Explicit Scheme 2.

_varAdvector()

Perform the advection of elevation, erosion (and flexure and soil production if defined) by solving the advection equation based on the finite volume space discretization and a semi-implicit temporal discretization.

_readAdvectionData(hdisp, timer)

From a tectonic input file, this function reads the horizontal displacements information, containing the displacement rates along each axis.

_advectPlates()

Advects surface information based on plate evolution and performs interpolation.

_findPts2Reduce()

Finds the nodes part of another partition that are required for interpolation.

_advectStrati()

From advected stratigraphic information, retrieve points that are part of another partition and perform the interpolation.

_updateStratInfo(reduceIDs, variable, sumw, ...)

Update stratigraphic variables based on interpolated values.

Public functions#

Tectonics.getTectonics()[source]#

Finds the current tectonic regimes (horizontal and vertical) for the considered time interval.

Note

The approach here does not allow for mesh refinement in zones of convergence and thus can be limiting.

Yet using a fixed mesh has one main advantage: the mesh and Finite Volume discretisation do not have to be rebuilt each time the mesh is advected.

Tectonics.updatePaleoZ()[source]#

Update surface information based on paleo-reconstruction.

Parameters:
  • paleoZ – paleo-elevation data

  • minZ – elevation threshold used for fitting

Private functions#

Tectonics._buildAdvecMat(iioe, lCoeffs, rCoeffs=None)[source]#

Create the advection matrix.

Tectonics._advectorIIOE2(vL, newv, vmin, vmax, nbOut)[source]#

Perform the advection for the Inflow-Implicit/Outflow-Explicit Scheme 2.

Tectonics._varAdvector()[source]#

Perform the advection of elevation, erosion (and flexure and soil production if defined) by solving the advection equation based on the finite volume space discretization and a semi-implicit temporal discretization.

The approach relies on an Inflow-Implicit/Outflow-Explicit scheme following the work from Mikula & Ohlberger, 2014 or a first-order upwind implicitly scheme depending on the user configuration.

Note

Here, the outflow from a cell is treated explicitly while inflow is treated implicitly.

Since the matrix of the system is determined by the inflow fluxes it is a M-matrix yielding favourable solvability and stability properties.

Important

The method allows for large time steps without losing too much stability and precision.

It is formally second order accurate in space and time for 1D advection problems with variable velocity. In addition, numerical experiments indicate its second order accuracy for smooth solutions in general.

Note

Velocity at the face is taken to be the linear interpolation for each vertex (in a vertex-centered discretisation the dual of the delaunay triangulation (i.e. the voronoi mesh has its edges intersecting the middle of the nodes edges)).

Similarly, we consider that the advected variables at the face are defined by linear interpolation from each connected vertex.

Tectonics._readAdvectionData(hdisp, timer)[source]#

From a tectonic input file, this function reads the horizontal displacements information, containing the displacement rates along each axis.

Note

A cKDTree is built with the advected coordinates and used to interpolate the mesh variables on the initial local mesh position.

The interpolation is based on a weighting distance function accounting for the 3 closest advected vertices.

Parameters:
  • hdisp – displacement rates in 3D

  • timer – displacement time step in years

Tectonics._advectPlates()[source]#

Advects surface information based on plate evolution and performs interpolation.

Important

The interpolated values are the elevation, cumulative erosion deposition, flexural response and soil production. The interpolation is done on the spherical mesh on a single processor. In case the stratigraphic information is also recorded then this is also interpolated.

Tectonics._findPts2Reduce()[source]#

Finds the nodes part of another partition that are required for interpolation.

Returns:

Indices of needed nodes present in other partitions

Tectonics._advectStrati()[source]#

From advected stratigraphic information, retrieve points that are part of another partition and perform the interpolation.

Tectonics._updateStratInfo(reduceIDs, variable, sumw, onIDs, weights, nghs)[source]#

Update stratigraphic variables based on interpolated values.

Parameters:
  • reduceIDs – indices of nodes information that need to be available globally

  • variable – stratigraphic variable to interpolate

  • sumw – sum of weights for interpolation

  • onIDs – nodes that remain fixed

  • weights – weights for interpolation

  • nghs – neighbours for interpolation

Returns:

nvar interpolated stratigraphic variable