landlab.components.vegetation_dynamics.vegetation_dynamics

class Vegetation[source]

Bases: Component

Landlab component that simulates net primary productivity, biomass and leaf area index at each cell based on inputs of root-zone average soil moisture.

Ref: Zhou, X., Istanbulluoglu, E., & Vivoni, E. R. (2013). Modeling the ecohydrological role of aspect controlled radiation on tree grass shrub coexistence in a semiarid climate. Water Resources Research, 49(5), 2872-2895.

Code author: Sai Nudurupati and Erkan Istanbulluoglu

Examples

>>> from landlab import RasterModelGrid
>>> from landlab.components import Vegetation

Create a grid on which to simulate vegetation dynamics.

>>> grid = RasterModelGrid((5, 4), xy_spacing=(0.2, 0.2))

The grid will need some input data. To check the names of the fields that provide the input to this component, use the input_var_names class property.

>>> sorted(Vegetation.input_var_names)
['surface__evapotranspiration',
 'surface__potential_evapotranspiration_30day_mean',
 'surface__potential_evapotranspiration_rate',
 'vegetation__plant_functional_type',
 'vegetation__water_stress']
>>> sorted(Vegetation.units)
[('surface__evapotranspiration', 'mm'),
 ('surface__potential_evapotranspiration_30day_mean', 'mm'),
 ('surface__potential_evapotranspiration_rate', 'mm'),
 ('vegetation__cover_fraction', 'None'),
 ('vegetation__dead_biomass', 'g m^-2 d^-1'),
 ('vegetation__dead_leaf_area_index', 'None'),
 ('vegetation__live_biomass', 'g m^-2 d^-1'),
 ('vegetation__live_leaf_area_index', 'None'),
 ('vegetation__plant_functional_type', 'None'),
 ('vegetation__water_stress', 'None')]

Provide all the input fields.

>>> grid["cell"]["vegetation__plant_functional_type"] = np.zeros(
...     grid.number_of_cells, dtype=int
... )
>>> grid["cell"]["surface__evapotranspiration"] = 0.2 * np.ones(
...     grid.number_of_cells
... )
>>> grid["cell"]["surface__potential_evapotranspiration_rate"] = np.array(
...     [0.25547770, 0.25547770, 0.22110221, 0.22110221, 0.24813062, 0.24813062]
... )
>>> grid["cell"]["surface__potential_evapotranspiration_30day_mean"] = np.array(
...     [0.25547770, 0.25547770, 0.22110221, 0.22110221, 0.24813062, 0.24813062]
... )
>>> grid["cell"]["vegetation__water_stress"] = 0.01 * np.ones(grid.number_of_cells)

Instantiate the ‘Vegetation’ component.

>>> Veg = Vegetation(grid)
>>> Veg.grid.number_of_cell_rows
3
>>> Veg.grid.number_of_cell_columns
2
>>> Veg.grid is grid
True
>>> import numpy as np
>>> sorted(Vegetation.output_var_names)
['vegetation__cover_fraction',
 'vegetation__dead_biomass',
 'vegetation__dead_leaf_area_index',
 'vegetation__live_biomass',
 'vegetation__live_leaf_area_index']
>>> np.all(grid.at_cell["vegetation__live_leaf_area_index"] == 0.0)
True
>>> Veg.update()
>>> np.all(grid.at_cell["vegetation__live_leaf_area_index"] == 0.0)
False

References

Required Software Citation(s) Specific to this Component

None Listed

Additional References

Zhou, X., Istanbulluoglu, E., and Vivoni, E. R.: Modeling the ecohydrological role of aspect-controlled radiation on tree-grass-shrub coexistence in a semiarid climate, Water Resour. Res., 49, 2872– 2895, doi:10.1002/wrcr.20259, 2013.

Parameters:
  • grid (RasterModelGrid) – A grid.

  • Blive_init (float, optional) – Initial value for vegetation__live_biomass. Converted to field.

  • Bdead_init (float, optional) – Initial value for vegetation__dead_biomass. Coverted to field.

  • ETthreshold_up (float, optional) – Potential Evapotranspiration (PET) threshold for growing season (mm/d).

  • ETthreshold_down (float, optional) – PET threshold for dormant season (mm/d).

  • Tdmax (float, optional) – Constant for dead biomass loss adjustment (mm/d).

  • w (float, optional) – Conversion factor of CO2 to dry biomass (Kg DM/Kg CO2).

  • WUE (float, optional) – Water Use Efficiency - ratio of water used in plant water lost by the plant through transpiration (KgCO2Kg-1H2O).

  • LAI_max (float, optional) – Maximum leaf area index (m2/m2).

  • cb (float, optional) – Specific leaf area for green/live biomass (m2 leaf g-1 DM).

  • cd (float, optional) – Specific leaf area for dead biomass (m2 leaf g-1 DM).

  • ksg (float, optional) – Senescence coefficient of green/live biomass (d-1).

  • kdd (float, optional) – Decay coefficient of aboveground dead biomass (d-1).

  • kws (float, optional) – Maximum drought induced foliage loss rate (d-1).

  • method (str) – Method name.

  • Tr (float, optional) – Storm duration (hours).

  • Tb (float, optional) – Inter-storm duration (hours).

  • PETthreshold_switch (int, optional) – Flag to indiate the PET threshold. This controls whether the threshold is for growth (1) or dormancy (any other value).

property PETthreshold_switch

Flag to indiate the PET threshold.

This controls whether the threshold is for growth (1) or dormancy (any other value).

property Tb

Storm duration (hours).

property Tr

Inter-storm duration (hours).

__init__(grid, Blive_init=102.0, Bdead_init=450.0, ETthreshold_up=3.8, ETthreshold_down=6.8, Tdmax=10.0, w=0.55, WUE_grass=0.01, LAI_max_grass=2.0, cb_grass=0.0047, cd_grass=0.009, ksg_grass=0.012, kdd_grass=0.013, kws_grass=0.02, WUE_shrub=0.0025, LAI_max_shrub=2.0, cb_shrub=0.004, cd_shrub=0.01, ksg_shrub=0.002, kdd_shrub=0.013, kws_shrub=0.02, WUE_tree=0.0045, LAI_max_tree=4.0, cb_tree=0.004, cd_tree=0.01, ksg_tree=0.002, kdd_tree=0.013, kws_tree=0.01, WUE_bare=0.01, LAI_max_bare=0.01, cb_bare=0.0047, cd_bare=0.009, ksg_bare=0.012, kdd_bare=0.013, kws_bare=0.02, method='Grid', PETthreshold_switch=0, Tb=24.0, Tr=0.01)[source]
Parameters:
  • grid (RasterModelGrid) – A grid.

  • Blive_init (float, optional) – Initial value for vegetation__live_biomass. Converted to field.

  • Bdead_init (float, optional) – Initial value for vegetation__dead_biomass. Coverted to field.

  • ETthreshold_up (float, optional) – Potential Evapotranspiration (PET) threshold for growing season (mm/d).

  • ETthreshold_down (float, optional) – PET threshold for dormant season (mm/d).

  • Tdmax (float, optional) – Constant for dead biomass loss adjustment (mm/d).

  • w (float, optional) – Conversion factor of CO2 to dry biomass (Kg DM/Kg CO2).

  • WUE (float, optional) – Water Use Efficiency - ratio of water used in plant water lost by the plant through transpiration (KgCO2Kg-1H2O).

  • LAI_max (float, optional) – Maximum leaf area index (m2/m2).

  • cb (float, optional) – Specific leaf area for green/live biomass (m2 leaf g-1 DM).

  • cd (float, optional) – Specific leaf area for dead biomass (m2 leaf g-1 DM).

  • ksg (float, optional) – Senescence coefficient of green/live biomass (d-1).

  • kdd (float, optional) – Decay coefficient of aboveground dead biomass (d-1).

  • kws (float, optional) – Maximum drought induced foliage loss rate (d-1).

  • method (str) – Method name.

  • Tr (float, optional) – Storm duration (hours).

  • Tb (float, optional) – Inter-storm duration (hours).

  • PETthreshold_switch (int, optional) – Flag to indiate the PET threshold. This controls whether the threshold is for growth (1) or dormancy (any other value).

static __new__(cls, *args, **kwds)
cite_as = ''
property coords

Return the coordinates of nodes on grid attached to the component.

property current_time

Current time.

Some components may keep track of the current time. In this case, the current_time attribute is incremented. Otherwise it is set to None.

Return type:

current_time

definitions = (('surface__evapotranspiration', 'actual sum of evaporation and plant transpiration'), ('surface__potential_evapotranspiration_30day_mean', '30 day mean of surface__potential_evapotranspiration'), ('surface__potential_evapotranspiration_rate', 'potential sum of evaporation and potential transpiration'), ('vegetation__cover_fraction', 'fraction of land covered by vegetation'), ('vegetation__dead_biomass', 'weight of dead organic mass per unit area - measured in terms of dry matter'), ('vegetation__dead_leaf_area_index', 'one-sided dead leaf area per unit ground surface area'), ('vegetation__live_biomass', 'weight of green organic mass per unit area - measured in terms of dry matter'), ('vegetation__live_leaf_area_index', 'one-sided green leaf area per unit ground surface area'), ('vegetation__plant_functional_type', 'classification of plants (int), grass=0, shrub=1, tree=2, bare=3, shrub_seedling=4, tree_seedling=5'), ('vegetation__water_stress', 'parameter that represents nonlinear effects of water deficit on plants'))
classmethod from_path(grid, path)

Create a component from an input file.

Parameters:
  • grid (ModelGrid) – A landlab grid.

  • path (str or file_like) – Path to a parameter file, contents of a parameter file, or a file-like object.

Returns:

A newly-created component.

Return type:

Component

property grid

Return the grid attached to the component.

initialize(Blive_init=102.0, Bdead_init=450.0, ETthreshold_up=3.8, ETthreshold_down=6.8, Tdmax=10.0, w=0.55, WUE_grass=0.01, LAI_max_grass=2.0, cb_grass=0.0047, cd_grass=0.009, ksg_grass=0.012, kdd_grass=0.013, kws_grass=0.02, WUE_shrub=0.0025, LAI_max_shrub=2.0, cb_shrub=0.004, cd_shrub=0.01, ksg_shrub=0.002, kdd_shrub=0.013, kws_shrub=0.02, WUE_tree=0.0045, LAI_max_tree=4.0, cb_tree=0.004, cd_tree=0.01, ksg_tree=0.002, kdd_tree=0.013, kws_tree=0.01, WUE_bare=0.01, LAI_max_bare=0.01, cb_bare=0.0047, cd_bare=0.009, ksg_bare=0.012, kdd_bare=0.013, kws_bare=0.02)[source]
Parameters:
  • grid (RasterModelGrid) – A grid.

  • Blive_init (float, optional) – Initial value for vegetation__live_biomass. Converted to field.

  • Bdead_init (float, optional) – Initial value for vegetation__dead_biomass. Coverted to field.

  • ETthreshold_up (float, optional) – Potential Evapotranspiration (PET) threshold for growing season (mm/d).

  • ETthreshold_down (float, optional) – PET threshold for dormant season (mm/d).

  • Tdmax (float, optional) – Constant for dead biomass loss adjustment (mm/d).

  • w (float, optional) – Conversion factor of CO2 to dry biomass (Kg DM/Kg CO2).

  • WUE (float, optional) – Water Use Efficiency - ratio of water used in plant water lost by the plant through transpiration (KgCO2Kg-1H2O).

  • LAI_max (float, optional) – Maximum leaf area index (m2/m2).

  • cb (float, optional) – Specific leaf area for green/live biomass (m2 leaf g-1 DM).

  • cd (float, optional) – Specific leaf area for dead biomass (m2 leaf g-1 DM).

  • ksg (float, optional) – Senescence coefficient of green/live biomass (d-1).

  • kdd (float, optional) – Decay coefficient of aboveground dead biomass (d-1).

  • kws (float, optional) – Maximum drought induced foliage loss rate (d-1).

initialize_optional_output_fields()

Create fields for a component based on its optional field outputs, if declared in _optional_var_names.

This method will create new fields (without overwrite) for any fields output by the component as optional. New fields are initialized to zero. New fields are created as arrays of floats, unless the component also contains the specifying property _var_type.

initialize_output_fields(values_per_element=None)

Create fields for a component based on its input and output var names.

This method will create new fields (without overwrite) for any fields output by, but not supplied to, the component. New fields are initialized to zero. Ignores optional fields. New fields are created as arrays of floats, unless the component specifies the variable type.

Parameters:

values_per_element (int (optional)) – On occasion, it is necessary to create a field that is of size (n_grid_elements, values_per_element) instead of the default size (n_grid_elements,). Use this keyword argument to acomplish this task.

input_var_names = ('surface__evapotranspiration', 'surface__potential_evapotranspiration_30day_mean', 'surface__potential_evapotranspiration_rate', 'vegetation__plant_functional_type', 'vegetation__water_stress')
name = 'Vegetation'
optional_var_names = ()
output_var_names = ('vegetation__cover_fraction', 'vegetation__dead_biomass', 'vegetation__dead_leaf_area_index', 'vegetation__live_biomass', 'vegetation__live_leaf_area_index')
property shape

Return the grid shape attached to the component, if defined.

unit_agnostic = False
units = (('surface__evapotranspiration', 'mm'), ('surface__potential_evapotranspiration_30day_mean', 'mm'), ('surface__potential_evapotranspiration_rate', 'mm'), ('vegetation__cover_fraction', 'None'), ('vegetation__dead_biomass', 'g m^-2 d^-1'), ('vegetation__dead_leaf_area_index', 'None'), ('vegetation__live_biomass', 'g m^-2 d^-1'), ('vegetation__live_leaf_area_index', 'None'), ('vegetation__plant_functional_type', 'None'), ('vegetation__water_stress', 'None'))
update()[source]

Update fields with current loading conditions.

This method looks to the properties PETthreshold_switch, Tb, and Tr and uses their values to calculate the new field values.

classmethod var_definition(name)

Get a description of a particular field.

Parameters:

name (str) – A field name.

Returns:

A description of each field.

Return type:

tuple of (name, *description*)

classmethod var_help(name)

Print a help message for a particular field.

Parameters:

name (str) – A field name.

classmethod var_loc(name)

Location where a particular variable is defined.

Parameters:

name (str) – A field name.

Returns:

The location (‘node’, ‘link’, etc.) where a variable is defined.

Return type:

str

var_mapping = (('surface__evapotranspiration', 'cell'), ('surface__potential_evapotranspiration_30day_mean', 'cell'), ('surface__potential_evapotranspiration_rate', 'cell'), ('vegetation__cover_fraction', 'cell'), ('vegetation__dead_biomass', 'cell'), ('vegetation__dead_leaf_area_index', 'cell'), ('vegetation__live_biomass', 'cell'), ('vegetation__live_leaf_area_index', 'cell'), ('vegetation__plant_functional_type', 'cell'), ('vegetation__water_stress', 'cell'))
classmethod var_type(name)

Returns the dtype of a field (float, int, bool, str…).

Parameters:

name (str) – A field name.

Returns:

The dtype of the field.

Return type:

dtype

classmethod var_units(name)

Get the units of a particular field.

Parameters:

name (str) – A field name.

Returns:

Units for the given field.

Return type:

str

assert_method_is_valid(method)[source]