landlab

Vegetation: Model plant dynamics using multiple representative plant species

class Vegetation(*args, **kwds)[source]

Bases: landlab.core.model_component.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

Construction::
Vegetation(grid, Blive_init=102., Bdead_init=450.,
ETthreshold_up=3.8, ETthreshold_down=6.8, Tdmax=10., w=0.55, WUE_grass=0.01, LAI_max_grass=2., 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., 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., 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)
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).

Examples

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

Create a grid on which to simulate vegetation dynamics.

>>> grid = RasterModelGrid((5,4), 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.)
True
>>> Veg.update()
>>> np.all(grid.at_cell['vegetation__live_leaf_area_index'] == 0.)
False
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, **kwds)[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).

update(PETthreshold_switch=0, Tb=24.0, Tr=0.01, **kwds)[source]

Update fields with current loading conditions.

Parameters:

Tr: float, optional

Storm duration (hours).

Tb: float, optional

Inter-storm duration (hours).

assert_method_is_valid(method)[source]