# 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))
>>> sealevel = grid.add_field('sea_level__elevation', 0.0, at='grid')
>>> elev[:] = -1.0
>>> cp = CarbonateProducer(grid)
>>> np.round(cp.calc_carbonate_production_rate(), 2)
0.01
>>> elev[:] = -40.0
>>> np.round(cp.calc_carbonate_production_rate(), 5)
0.00091
>>> cp.sea_level = -39.0
>>> np.round(cp.calc_carbonate_production_rate(), 2)
0.01
>>> thickness = cp.produce_carbonate(10.0)
>>> np.round(10 * grid.at_node['carbonate_thickness'])
1.0
>>> thickness is grid.at_node['carbonate_thickness']
True
>>> cp.run_one_step(10.0)
>>> np.round(10 * thickness)
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]#

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#
set_numpy_err(*args, **kwds)[source]#
smooth_heaviside(x, width=0.5, out=None)[source]#

Return a smoothed heaviside function (step function).

Parameters:
• x (array or float) – Dependent variable

• width (float (default 0.5)) – Width parameter for smoothing (same units as x)

• out (array (default None)) – Optional array in which to store result; must have len(x)

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. ])