Class GridProcess#
- class tools.addprocess.GridProcess[source]#
When running goSPL on a 2D grid (i.e. not a global simulation), this class defines two processes operating on a regular grid:
Flexural isostasy: it allows to compute isostatic deflections of Earth’s lithosphere with uniform or non-uniform flexural rigidity. Evolving surface loads are defined from erosion/deposition values associated to modelled surface processes.
Orographic rain: it accounts for change in rainfall patterns associated to change in topography. The orographic precipitation function is based on Smith & Barstad (2004) linear model.
For global simulation, the library isoFlex provides a wrapper around gFlex to estimate global-scale flexural isostasy based on tiles distribution and projection in parallel.
Note
Better implementation would likely provide better performance than the one proposed here for computing flexural isostasy…
Methods
This function computes the flexural isostasy equilibrium based on topographic change.
Linear Theory of Orographic Precipitation following Smith & Barstad (2004).
Initialise
__init__()Initialisation of the gridProcess class.
Public Methods
This function computes the flexural isostasy equilibrium based on topographic change.
Linear Theory of Orographic Precipitation following Smith & Barstad (2004).
Private Methods
Builds the regular grid based on nodes coordinates and instantiates two interpolation objects.
_regInterp(field)Perform bilinear interpolation of
fieldon the regular grid to unstructured 2D mesh.Finds current elastic thickness map for the considered time interval.
Public functions#
- GridProcess.applyFlexure()[source]#
This function computes the flexural isostasy equilibrium based on topographic change. It is a simple routine that accounts for flexural isostatic rebound associated with erosional loading/unloading.
The function takes an initial (at time t) and final topography (at time t+Dt) (i.e. before and after erosion/deposition) and returns a corrected final topography that includes the effect of erosional/depositional unloading/loading. It uses a spectral method to solve the bi-harmonic equation governing the bending/flexure of a thin elastic plate floating on an inviscid fluid (the asthenosphere).
\[D (d^4 w / d^4 x ) + \Delta \rho g w = q\]where \(D\) is the flexural rigidity, \(w\) is vertical deflection of the plate, \(q\) is the applied surface load, and \(\Delta \rho = \rho_m − \rho_f\) is the density of the mantle minus the density of the infilling material.
- GridProcess.cptOrography()[source]#
Linear Theory of Orographic Precipitation following Smith & Barstad (2004).
The model includes airflow dynamics, condensed water advection, and downslope evaporation. It consists of two vertically-integrated steady-state advection equations describing: (i) the cloud water density and (ii) the hydrometeor density. Solving these equations using Fourier transform techniques, derives a single formula relating terrain and precipitation.
Note
Please refer to the original manuscript of Smith and Barstad (2004) to understand the model physics and limitations.
Common bounds:
latitude : 0-90 [degrees]
precip_base : 0-10 [mm/h]
precip_min : 0.001 - 1 [mm/h]
conv_time : 200-2000 [s]
fall_time : 200-2000 [s]
nm : 0-0.1 [1/s]
hw : 1000-5000 [m]
cw : 0.001-0.02 [kg/m^3]
rainfall_frequency : 0.1 - 24 [number of storms of 1 hour duration per day]
Private functions#
- GridProcess._buildRegGrid()[source]#
Builds the regular grid based on nodes coordinates and instantiates two interpolation objects.
The first one uses SciPy cKDTree to interpolate values from the unstructured mesh onto the regular grid based on an inverse weighting distance approach.
The second performs a bilinear interpolation from the regular grid to unstructured 2D mesh.
Note
Here that the KDTree is not kept in memory, instead we store the interpolation information, namely the indices of the neighbouring nodes, and the weights of each node in the neighborhood (based on the distance).