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
Finds the current tectonic regimes (horizontal and vertical) for the considered time interval.
Update surface information based on paleo-reconstruction.
Initialise
__init__()The initialisation of the Tectonics class.
Public Methods
Finds the current tectonic regimes (horizontal and vertical) for the considered time interval.
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.
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.
Advects surface information based on plate evolution and performs interpolation.
Finds the nodes part of another partition that are required for interpolation.
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.
Private functions#
- 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