#include <WeibullClimateQuadratGrowth.h>
Public Member Functions | |
clWeibullClimateQuadratGrowth (clSimManager *p_oSimManager) | |
Constructor. | |
~clWeibullClimateQuadratGrowth () | |
Destructor. | |
float | CalcDiameterGrowthValue (clTree *p_oTree, clTreePopulation *p_oPop, float fHeightGrowth) |
Queries the grid for the growth value for this tree's cell that was calculated by PreGrowthCalcs() and returns it. | |
void | PreGrowthCalcs (clTreePopulation *p_oPop) |
Calculates growth. | |
void | DoShellSetup (xercesc::DOMDocument *p_oDoc) |
Does setup. | |
void | SetNameData (char *cNameString) |
Captures the namestring passed to this behavior. | |
Protected Member Functions | |
void | ValidateData (clTreePopulation *p_oPop) |
Makes sure all input data is valid. | |
void | ReadParameterFile (xercesc::DOMDocument *p_oDoc, clTreePopulation *p_oPop) |
Reads data from the parameter file. | |
int | GetNumNeighbors (float &fX, float &fY, clTreePopulation *p_oPop) |
Counts the number of trees a target's neighborhood that have a DBH bigger than the minimum cutoff. | |
void | FormatQuery (clTreePopulation *p_oPop) |
Populates m_cQuery with the query for getting target trees. | |
void | SetupGrid (clTreePopulation *p_oPop) |
Sets up the "Weibull Climate Quadrat Growth" grid. | |
Protected Attributes | |
clGridBase * | mp_oGrid |
Grid holding amount of growth for each species. | |
float * | mp_fCompC |
Competition effect C. | |
float * | mp_fCompD |
Competition effect D. | |
float * | mp_fMinimumNeighborDBH |
The minimum DBH, in cm, of neighbors to be included in the neighbor count. | |
float * | mp_fPrecipA |
Precipitation effect A. | |
float * | mp_fPrecipB |
Precipitation effect B. | |
float * | mp_fPrecipC |
Precipitation effect C. | |
float * | mp_fTempA |
Temperature effect A. | |
float * | mp_fTempB |
Temperature effect B. | |
float * | mp_fTempC |
Temperature effect C. | |
float * | mp_fMaxRG |
Maximum potential growth value, in cm. | |
short int * | mp_iIndexes |
Speeds access to the arrays. | |
short int * | mp_iGridGrowthCodes |
Holds data member codes for the "growth_x" data members of the "Weibull Climate Quadrat Growth" grid. | |
char * | m_cQuery |
Query string to get target trees. | |
float | m_fMinSaplingHeight |
Minimum sapling height. | |
float | m_fMaxCrowdingRadius |
Maximum search radius, in meters, in which to look for crowding neighbors. | |
short int | m_iNumNeighCode |
Return code for the "num_neigh" grid data member. |
This is a growth shell object which calculates growth as a function of climate and neighbor density. This simplifies the process by calculating annual growth on a per quadrat basis.
The growth equation for one year's growth is:
Precipitation Effect and Temperature Effect use the same function form. The function is:
Climate Effect <- exp(-0.5*(abs(CV - C)/A)B) where:
Competition Effect is calculated as:
Snags, seedlings, and already-dead trees are never counted in the neighbor count.
The annual growth for each species is calculated for each grid cell in the "Weibull Climate Quadrat Growth" grid, which this behavior creates. Trees take their growth from the grid cell in which they are found.
The parameter file call string for this to be diameter-incrementing with auto-height updating is "WeibullClimateQuadratGrowth"; for diameter-only incrementing, use "WeibullClimateQuadratGrowth diam only". The namestring for this behavior is "WeibullClimateQuadratGrowthshell".
Copyright 2010 Charles D. Canham.
clWeibullClimateQuadratGrowth::clWeibullClimateQuadratGrowth | ( | clSimManager * | p_oSimManager | ) |
Constructor.
p_oSimManager | Sim Manager object. |
clWeibullClimateQuadratGrowth::~clWeibullClimateQuadratGrowth | ( | ) |
Destructor.
float clWeibullClimateQuadratGrowth::CalcDiameterGrowthValue | ( | clTree * | p_oTree, | |
clTreePopulation * | p_oPop, | |||
float | fHeightGrowth | |||
) | [virtual] |
Queries the grid for the growth value for this tree's cell that was calculated by PreGrowthCalcs() and returns it.
p_oTree | Tree to which to apply growth. | |
p_oPop | Tree population object. | |
fHeightGrowth | Amount of height growth, in m (ignored). |
Reimplemented from clGrowthBase.
void clWeibullClimateQuadratGrowth::PreGrowthCalcs | ( | clTreePopulation * | p_oPop | ) | [virtual] |
Calculates growth.
This retrieves trees to which this behavior applies, and for each one makes sure that growth has been calculated for its species and grid cell. This does not assign a growth value to the trees; that happens in CalcDiameterGrowthValue. Doing it this way ensures two things: that growth is not calculated if it is not needed, and that we don't have to worry about accidentally assigning growth to a tree to which this behavior is not applied.
Steps:
p_oPop | Tree population object. |
Reimplemented from clGrowthBase.
void clWeibullClimateQuadratGrowth::DoShellSetup | ( | xercesc::DOMDocument * | p_oDoc | ) | [virtual] |
Does setup.
p_oDoc | DOM tree of parsed input tree. |
Reimplemented from clGrowthBase.
void clWeibullClimateQuadratGrowth::SetNameData | ( | char * | cNameString | ) | [virtual] |
Captures the namestring passed to this behavior.
This is overridden from clBehaviorBase so we can capture the namestring passed. Since this class can create multiple kinds of behaviors that function differently, this will capture what kind of behavior this is supposed to be.
cNameString | Behavior's namestring. |
Reimplemented from clBehaviorBase.
void clWeibullClimateQuadratGrowth::ValidateData | ( | clTreePopulation * | p_oPop | ) | [protected] |
Makes sure all input data is valid.
The following must all be true:
p_oPop | Tree population object. |
modelErr | if any of the above conditions are not met. |
void clWeibullClimateQuadratGrowth::ReadParameterFile | ( | xercesc::DOMDocument * | p_oDoc, | |
clTreePopulation * | p_oPop | |||
) | [protected] |
Reads data from the parameter file.
p_oDoc | DOM tree of parsed input tree. | |
p_oPop | Tree population object. |
modelErr | if this behavior has been applied to any types except sapling and adult. |
int clWeibullClimateQuadratGrowth::GetNumNeighbors | ( | float & | fX, | |
float & | fY, | |||
clTreePopulation * | p_oPop | |||
) | [protected] |
Counts the number of trees a target's neighborhood that have a DBH bigger than the minimum cutoff.
fX | X location from which to count the larger neighbors. | |
fY | Y location from which to count the larger neighbors. | |
p_oPop | Tree population, for getting neighbors. |
void clWeibullClimateQuadratGrowth::FormatQuery | ( | clTreePopulation * | p_oPop | ) | [protected] |
Populates m_cQuery with the query for getting target trees.
p_oPop | Tree population object. |
void clWeibullClimateQuadratGrowth::SetupGrid | ( | clTreePopulation * | p_oPop | ) | [protected] |
Sets up the "Weibull Climate Quadrat Growth" grid.
This ignores any maps.
p_oPop | Tree population object. |
clGridBase* clWeibullClimateQuadratGrowth::mp_oGrid [protected] |
Grid holding amount of growth for each species.
The grid name is "Weibull Climate Quadrat Growth". It has X+1 float data members, where X = the total number of species. The data member names are "growth_x", for the amount of diameter growth (where "x" is the species number), and "num_neigh" for the number of neighbors.
float* clWeibullClimateQuadratGrowth::mp_fCompC [protected] |
Competition effect C.
Array size is number of species to which this behavior applies.
float* clWeibullClimateQuadratGrowth::mp_fCompD [protected] |
Competition effect D.
Array size is number of species to which this behavior applies.
float* clWeibullClimateQuadratGrowth::mp_fMinimumNeighborDBH [protected] |
The minimum DBH, in cm, of neighbors to be included in the neighbor count.
Array is sized number of species.
float* clWeibullClimateQuadratGrowth::mp_fPrecipA [protected] |
Precipitation effect A.
Array size is number of species to which this behavior applies.
float* clWeibullClimateQuadratGrowth::mp_fPrecipB [protected] |
Precipitation effect B.
Array size is number of species to which this behavior applies.
float* clWeibullClimateQuadratGrowth::mp_fPrecipC [protected] |
Precipitation effect C.
Array size is number of species to which this behavior applies.
float* clWeibullClimateQuadratGrowth::mp_fTempA [protected] |
Temperature effect A.
Array size is number of species to which this behavior applies.
float* clWeibullClimateQuadratGrowth::mp_fTempB [protected] |
Temperature effect B.
Array size is number of species to which this behavior applies.
float* clWeibullClimateQuadratGrowth::mp_fTempC [protected] |
Temperature effect C.
Array size is number of species to which this behavior applies.
float* clWeibullClimateQuadratGrowth::mp_fMaxRG [protected] |
Maximum potential growth value, in cm.
Array is sized number of species to which this behavior applies.
short int* clWeibullClimateQuadratGrowth::mp_iIndexes [protected] |
Speeds access to the arrays.
Array size is number of species.
short int* clWeibullClimateQuadratGrowth::mp_iGridGrowthCodes [protected] |
Holds data member codes for the "growth_x" data members of the "Weibull Climate Quadrat Growth" grid.
Array size is total # species.
char* clWeibullClimateQuadratGrowth::m_cQuery [protected] |
Query string to get target trees.
float clWeibullClimateQuadratGrowth::m_fMinSaplingHeight [protected] |
Minimum sapling height.
For doing neighbor searches.
float clWeibullClimateQuadratGrowth::m_fMaxCrowdingRadius [protected] |
Maximum search radius, in meters, in which to look for crowding neighbors.
For calculating the Competition Effect.
short int clWeibullClimateQuadratGrowth::m_iNumNeighCode [protected] |
Return code for the "num_neigh" grid data member.