CarbonateProducer: Grow carbonate strata using growth function of Bosscher and Schlager (1992)#
- class CarbonateProducer(*args, **kwds)[source]#
Bases:
Component
Calculate marine carbonate production and deposition.
Uses the growth-rate of Bosscher and Schlager (1992), which represents the vertical growth rate \(G\) as:
..math:
G = G_m anh (I_0 e^{-kz} / I_k)
where \(G_m\) is the maximum growth rate, \(I_0\) is the surface light intensity, \(I_k\) is the saturating light intensity, \(z\) is water depth, and \(k\) is the light extinction coefficient.
Bosscher and Schlager (1992) suggest plausible values or ranges for these parameters as follows: \(G_m\) = 10 to 15 mm/y, \(I_0\) = 2,000 to 2,250 micro Einsteins per square meter per second in the tropics, \(I_k\) = 50 to 450 micro Einsteins per square meter per second, and \(k\) = 0.04 to 0.16 m:math:^{-1} (corresponding to a decay depth of 6.25 to 16 m). The default values used in this component are based on these estimates.
Examples
>>> from landlab import RasterModelGrid >>> from landlab.components import CarbonateProducer >>> grid = RasterModelGrid((3, 3)) >>> elev = grid.add_zeros('topographic__elevation', at='node') >>> sealevel = grid.add_field('sea_level__elevation', 0.0, at='grid') >>> elev[:] = -1.0 >>> cp = CarbonateProducer(grid) >>> np.round(cp.calc_carbonate_production_rate()[4], 2) 0.01 >>> elev[:] = -40.0 >>> np.round(cp.calc_carbonate_production_rate()[4], 5) 0.00091 >>> cp.sea_level = -39.0 >>> np.round(cp.calc_carbonate_production_rate()[4], 2) 0.01 >>> thickness = cp.produce_carbonate(10.0) >>> np.round(10 * grid.at_node['carbonate_thickness'][4]) 1.0 >>> thickness is grid.at_node['carbonate_thickness'] True >>> cp.run_one_step(10.0) >>> np.round(10 * thickness[4]) 2.0
References
Bosscher, H., & Schlager, W. (1992). Computer simulation of reef growth. Sedimentology, 39(3), 503-512.
- Parameters:
grid (ModelGrid (RasterModelGrid, HexModelGrid, etc.)) – A landlab grid object.
max_carbonate_production_rate (float (default 0.01 m/y)) – Maximum rate of carbonate production, in m thickness per year
extinction_coefficient (float (default 0.1 m^-1)) – Coefficient of light extinction in water column
surface_light (float (default 2000.0 micro Einstein per m2 per s)) – Light intensity (photosynthetic photon flux density) at sea surface.
saturating_light (float (default 400.0 micro Einstein per m2 per s)) – Saturating light intensity (photosynthetic photon flux density)
tidal_range (float (default zero)) – Tidal range used to smooth growth rate when surface is near mean sea level.
- __init__(grid, max_carbonate_production_rate=0.01, extinction_coefficient=0.1, surface_light=2000.0, saturating_light=400.0, tidal_range=0.0)[source]#
- Parameters:
grid (ModelGrid (RasterModelGrid, HexModelGrid, etc.)) – A landlab grid object.
max_carbonate_production_rate (float (default 0.01 m/y)) – Maximum rate of carbonate production, in m thickness per year
extinction_coefficient (float (default 0.1 m^-1)) – Coefficient of light extinction in water column
surface_light (float (default 2000.0 micro Einstein per m2 per s)) – Light intensity (photosynthetic photon flux density) at sea surface.
saturating_light (float (default 400.0 micro Einstein per m2 per s)) – Saturating light intensity (photosynthetic photon flux density)
tidal_range (float (default zero)) – Tidal range used to smooth growth rate when surface is near mean sea level.
- calc_carbonate_production_rate()[source]#
Update carbonate production rate and store in field.
- Returns:
Reference to updated carbonate_production_rate field
- Return type:
float array x number of grid nodes
- property extinction_coefficient#
- property max_carbonate_production_rate#
- produce_carbonate(dt)[source]#
Grow carbonate for one time step & add to carbonate thickness field.
If optional carbonate_thickness field does not already exist, this function creates it and initializes all values to zero.
- Returns:
Reference to updated carbonate_thickness field
- Return type:
float array x number of grid nodes
- run_one_step(dt)[source]#
Advance by one time step.
Simply calls the produce_carbonate() function.
- Parameters:
dt (float) – Time step duration (normally in years)
- property saturating_light#
- property sea_level#
- property surface_light#
- property tidal_range#
- smooth_heaviside(x, width=0.5, out=None)[source]#
Return a smoothed heaviside function (step function).
- Parameters:
Examples
>>> import numpy as np >>> np.round(smooth_heaviside(np.array([-1, 0, 1])), 3) array([ 0.018, 0.5 , 0.982]) >>> smooth_heaviside(np.array([-1, 0, 1]), width=0.0) array([ 0. , 0.5, 1. ])