Class Tectonics#

class mesher.tectonics.Tectonics[source]#

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

Note

Three advection approaches are proposed, a standard upwind scheme, a Inflow-Implicit/Outflow-Explicit scheme and a semi-lagrangian approach based on nearest neighbour search based on the tree built from the spherical mesh and 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 EarthPlate 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

_advectPlates()

Advects surface information based on plate evolution and performs interpolation.

_advectStrati()

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

_findPts2Reduce()

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

_readAdvectionData(hdisp, timer)

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

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

Update stratigraphic variables based on interpolated values.

_varAdvector()

Perform the advection of elevation and erosion by solving the advection equation based on the finite volume space discretization and the semi-implicit discretization in time.

Public functions#

Tectonics.getTectonics()[source]#

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

For horizontal displacements, the mesh variables will have to be first advected over the grid and then reinterpolated on the initial mesh coordinates.

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._advectPlates()[source]#

Advects surface information based on plate evolution and performs interpolation.

Important

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

Tectonics._advectStrati()[source]#

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

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._readAdvectionData(hdisp, timer)[source]#

From a tectonic input file 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._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

Tectonics._varAdvector()[source]#

Perform the advection of elevation and erosion by solving the advection equation based on the finite volume space discretization and the semi-implicit discretization in time. The approach is based on a 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

Its basic idea is that 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 an M-matrix yielding favourable solvability and stability properties.

Important

The method allows large time steps without losing stability and not deteriorating precision.

It is formally second order accurate in space and time for 1D advection problems with variable velocity and 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 on the middle of the nodes edges)).

Similarly we consider that the advected variable at the face is defined by linear interpolation from each connected vertex.