ExponentialWeatherer: exponential soil production function in the style of Ahnert (1976)#
Created on Fri Apr 8 08:32:48 2016.
@author: RCGlade
- class ExponentialWeatherer(*args, **kwds)[source]#
Bases:
Component
Calculate exponential weathering of bedrock on hillslopes.
Uses exponential soil production function in the style of Ahnert (1976).
Consider that
w0
is the maximum soil production rate and thatw_star
is the characteristic soil production depth. The soil production ratew0
is given as a function of the soil depth:soil_production = w0 * exp(-soil__depth / w_star)
The
ExponentialWeatherer
only calculates soil production at core nodes.An alternative version which uses the analytical integral of production through time is available at the component
ExponentialWeathererIntegrated
.Examples
>>> import numpy as np >>> from landlab import RasterModelGrid >>> from landlab.components import ExponentialWeatherer >>> mg = RasterModelGrid((5, 5)) >>> soilz = mg.add_zeros("soil__depth", at="node") >>> soilrate = mg.add_ones("soil_production__rate", at="node") >>> expw = ExponentialWeatherer(mg) >>> expw.calc_soil_prod_rate() >>> np.allclose(mg.at_node['soil_production__rate'], 1.) True
References
Required Software Citation(s) Specific to this Component
Barnhart, K., Glade, R., Shobe, C., Tucker, G. (2019). Terrainbento 1.0: a Python package for multi-model analysis in long-term drainage basin evolution. Geoscientific Model Development 12(4), 1267–1297. https://dx.doi.org/10.5194/gmd-12-1267-2019
Additional References
Ahnert, F. (1976). Brief description of a comprehensive three-dimensional process-response model of landform development Z. Geomorphol. Suppl. 25, 29 - 49.
Armstrong, A. (1976). A three dimensional simulation of slope forms. Zeitschrift für Geomorphologie 25, 20 - 28.
- Parameters:
- property decay_depth#
Maximum rate of weathering (m/yr).
- property maximum_weathering_rate#
Maximum rate of weathering (m/yr).
ExponentialWeathererIntegrated: exponential soil production function in the style of Ahnert (1976) integrated in dt#
Created on Fri Apr 8 08:32:48 2016.
@author: RCGlade @author: dylanward Integrated version created by D. Ward on Tue Oct 27 2020
- class ExponentialWeathererIntegrated(*args, **kwds)[source]#
Bases:
Component
This component implements exponential weathering of bedrock on hillslopes. Uses exponential soil production function in the style of Ahnert (1976).
Consider that
w_0
is the maximum soil production rate and thatd_start
is the characteristic soil production depth. The soil production ratew
is given as a function of the soil depthd
:w = w_0 exp(-d / d_star)
The
ExponentialWeathererIntegrated
uses the analytical solution for the amount of soil produced by an exponential weathering function over a timestep dt, and returns both the thickness of bedrock weathered and the thickness of soil produced. The solution accounts for the reduction in rate over the timestep due to the increasing depth. This enables accuracy over arbitrarily large timesteps, and better compatiblity with the run_one_step() interface.Compared to
ExponentialWeatherer
, upon which it is based…This maintains the field I/O behavior of the original, but adds new return fields for the weathered thickness and soil produced thickness.
Density adjustments are needed inside the integral and the density ratio is intialized on instantiation. The default value of 1.0 assumes no change in density.
Returns both weathered depth of bedrock and produced depth of soil over the timestep.
The primary
soil__depth
field that is input is NOT updated by the component.
This is left as an exercise for the model driver, as different applications may want to integrate soil depth and weathering in different sequences among other processes.
SHOULD maintain drop-in compatiblity with the plain
ExponentialWeatherer
, just import and instantiate this one instead and existing code should work with no side effects other than the creation of the two additional (zeros) output fields.
Examples
>>> import numpy as np >>> from landlab import RasterModelGrid >>> from landlab.components import ExponentialWeathererIntegrated >>> mg = RasterModelGrid((5, 5)) >>> soilz = mg.add_zeros("soil__depth", at="node") >>> soilrate = mg.add_ones("soil_production__rate", at="node") >>> expw = ExponentialWeathererIntegrated(mg) >>> dt = 1000 >>> expw.run_one_step(dt) >>> np.allclose(mg.at_node['soil_production__rate'][mg.core_nodes], 1.) True >>> np.allclose( ... mg.at_node['soil_production__dt_produced_depth'][mg.core_nodes], 6.9088 ... ) True
References
Required Software Citation(s) Specific to this Component
Barnhart, K., Glade, R., Shobe, C., Tucker, G. (2019). Terrainbento 1.0: a Python package for multi-model analysis in long-term drainage basin evolution. Geoscientific Model Development 12(4), 1267–1297. https://dx.doi.org/10.5194/gmd-12-1267-2019
Additional References
Ahnert, F. (1976). Brief description of a comprehensive three-dimensional process-response model of landform development Z. Geomorphol. Suppl. 25, 29 - 49.
Armstrong, A. (1976). A three dimensional simulation of slope forms. Zeitschrift für Geomorphologie 25, 20 - 28.
- Parameters:
grid (ModelGrid) – Landlab ModelGrid object
soil_production__maximum_rate (float) – Maximum weathering rate for bare bedrock
soil_production__decay_depth (float) – Characteristic weathering depth
soil_production__expansion_factor (float) – Expansion ratio of regolith (from relative densities of rock and soil)
- __init__(grid, soil_production__maximum_rate=1.0, soil_production__decay_depth=1.0, soil_production__expansion_factor=1.0)[source]#
- Parameters:
grid (ModelGrid) – Landlab ModelGrid object
soil_production__maximum_rate (float) – Maximum weathering rate for bare bedrock
soil_production__decay_depth (float) – Characteristic weathering depth
soil_production__expansion_factor (float) – Expansion ratio of regolith (from relative densities of rock and soil)
- property maximum_weathering_rate#
Maximum rate of weathering (m/yr).