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
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 EarthPlate 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
Advects surface information based on plate evolution and performs interpolation.
From advected stratigraphic information, retrieve points that are part of another partition and perform the interpolation.
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.
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.
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.