Class hillSLP#
Public functions#
Private functions#
- hillSLP._diffuseOcean(dh)[source]#
For river-transported sediments reaching the marine realm, this function computes the related marine deposition diffusion. It is based on a non-linear diffusion approach.
\[\frac{\partial h}{\partial t}= \nabla \cdot \left( C_d(h) \nabla h \right)\]It calls the following private functions:
_evalFunctionMardDiff
_evalJacobianMardDiff
_evalSolutionMardDiff
Note
PETSc SNES and time stepping TS approaches are used to solve the non-linear equation above over the considered time step.
- Parameters:
dh – Numpy Array of incoming marine depositional thicknesses
- hillSLP._evalFunctionMardDiff(ts, t, x, xdot, f)[source]#
The non-linear system for freshly-deposited marine sediments diffusion at each time step is solved iteratively using PETSc time stepping and SNES solution and is based on Rosenbrock W-scheme (
rosw).Here we evaluate the residual function on a DMPlex for an implicit time-stepping method.
- hillSLP._evalJacobianMardDiff(ts, t, x, xdot, a, A, B)[source]#
The non-linear system for freshly-deposited marine sediments diffusion at each time step is solved iteratively using PETSc time stepping and SNES solution and is based on Rosenbrock W-scheme (
rosw).Here, we define the Jacobian matrix A and the preconditioner matrix B on a DMPlex.
- hillSLP._form_residual_nl_hillslope(snes, h, F)[source]#
The nonlinear system (SNES) at each time step is solved iteratively by assessing the residual of the hillslope equation.
- hillSLP._hillSlope(smooth=0)[source]#
This function computes hillslope using a linear diffusion law commonly referred to as soil creep:
\[\frac{\partial z}{\partial t}= \kappa_{D} \nabla^2 z\]in which \(\kappa_{D}\) is the diffusion coefficient and can be defined with different values for the marine and land environments (set with hillslopeKa and hillslopeKm in the YAML input file). It encapsulates, in a simple formulation, processes operating on superficial sedimentary layers. Main controls on variations of \(\kappa_{D}\) include substrate, lithology, soil depth, climate and biological activity.
Note
The hillslope processes in goSPL are considered to be happening at the same rate for coarse and fine sediment sizes.
- Parameters:
smooth – integer specifying if the diffusion equation is used for ice flow (1) and marine deposits (2).
- hillSLP._hillSlopeNL()[source]#
This function computes hillslope using a non-linear diffusion law:
\[\frac{\partial h}{\partial t}= \nabla \cdot \left( C_d(h) \nabla h \right)\]Two flavors of non-linear diffusion are possible based on user defined parameters:
a non-critical hillslope model following the work of Wang et al. (2024).
a non-linear depth-dependent creep law as described in Barnhart et al. (2019) (section 3.4.5).
Note
In this implementation of the SNES, we do not form the Jacobian and PETSc calculates it based on the residual function. Here, a Nonlinear Generalized Minimum Residual method is used
ngmres, a Preconditioned Conjugate Gradientcgmethod is defined for the KSP and the preconditioner allows for multi-grid methods based on the HYPRE BoomerAMG approach.