#include <NCIGrowth.h>
Public Member Functions | |
clNciGrowth (clSimManager *p_oSimManager) | |
Constructor. | |
~clNciGrowth () | |
Destructor. | |
float | CalcDiameterGrowthValue (clTree *p_oTree, clTreePopulation *p_oPop, float fHeightGrowth) |
Returns the value in the tree's float data member that holds the value that was calculated by PreGrowthCalcs(). | |
void | PreGrowthCalcs (clTreePopulation *p_oPop) |
Calculates growth for all NCI trees. | |
void | DoShellSetup (xercesc::DOMDocument *p_oDoc) |
Does setup. | |
void | SetNameData (char *cNameString) |
Captures the namestring passed to this behavior. | |
Protected Member Functions | |
void | ValidateData () |
Makes sure all input data is valid. | |
void | GetTreeMemberCodes () |
Gets the return codes for needed tree data members. | |
void | ReadParameterFile (xercesc::DOMDocument *p_oDoc) |
Reads data from the parameter file. | |
void | AssembleUniqueTypes () |
Assembles a unique list of types applied to this behavior and places it in mp_iWhatBehaviorTypes. | |
Protected Attributes | |
short int ** | mp_iGrowthCodes |
Holds return data codes for the "Growth" tree data member. | |
short int * | mp_iWhatBehaviorTypes |
List of types managed by this behavior. | |
short int | m_iNumBehaviorTypes |
Number of types managed by this behavior. |
This is a growth shell object which applies the NCI (neighborhood competition index) function as it is defined in clNCIBase.
The amount of growth is in cm/year. For multi-year timesteps, the behavior will calculate total growth with a loop. Each loop iteration will increment DBH for one year. For each year, the Size Effect (SE) value and the DBHγ portion of the Crowding Effect is recalculated with the previous year's new DBH value. All values for each year of growth are summed to get the growth for the timestep.
This is a generic behavior. It is expected that not all terms in the growth equation will be used. A user can turn off some of the terms by setting key parameters to 0 or 1. To be efficient, this behavior looks for this and has several alternate function forms to avoid extra math. It calls the correct function form through function pointers, which it sets during setup.
If any damage effect parameters are used, this behavior must be combined with the storm damage behaviors. If the shading effect is used, some light behavior must be used (and it really should be clSailLight, but this isn't enforced).
This cannot be applied to seedlings. An error will be thrown if seedlings are passed.
The parameter file call string for this to be diameter-incrementing with auto-height updating is "ncigrowth"; for diameter-only incrementing, use "ncigrowth diam only". The namestring for this behavior is "ncigrowthshell".
Copyright 2003 Charles D. Canham.
clNciGrowth::clNciGrowth | ( | clSimManager * | p_oSimManager | ) |
Constructor.
p_oSimManager | Sim Manager object. |
clNciGrowth::~clNciGrowth | ( | ) |
Destructor.
float clNciGrowth::CalcDiameterGrowthValue | ( | clTree * | p_oTree, | |
clTreePopulation * | p_oPop, | |||
float | fHeightGrowth | |||
) | [virtual] |
Returns the value in the tree's float data member that holds the value that was calculated by PreGrowthCalcs().
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 clNciGrowth::PreGrowthCalcs | ( | clTreePopulation * | p_oPop | ) | [virtual] |
Calculates growth for all NCI trees.
The values are stashed in the "Growth" tree float data member for later application.
Steps:
Growth per timestep is calculated by looping over the number of years per timestep and incrementing the DBH.
p_oPop | Tree population object. |
Reimplemented from clGrowthBase.
void clNciGrowth::DoShellSetup | ( | xercesc::DOMDocument * | p_oDoc | ) | [virtual] |
Does setup.
p_oDoc | DOM tree of parsed input tree. |
Reimplemented from clGrowthBase.
void clNciGrowth::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 clNciGrowth::ValidateData | ( | ) | [protected] |
Makes sure all input data is valid.
The following must all be true:
modelErr | if any of the above conditions are not met. |
void clNciGrowth::GetTreeMemberCodes | ( | ) | [protected] |
Gets the return codes for needed tree data members.
If storm damage is used (any of the storm damage parameters are != 1), this declares and populates the mp_iDamageCodes array with the return codes for the "stm_dmg" tree int data member.
modelErr | if a code comes back -1 for any species/type combo to which this behavior is applied. |
void clNciGrowth::ReadParameterFile | ( | xercesc::DOMDocument * | p_oDoc | ) | [protected] |
Reads data from the parameter file.
p_oDoc | DOM tree of parsed input tree. |
modelErr | if this behavior has been applied to any types except sapling and adult. |
void clNciGrowth::AssembleUniqueTypes | ( | ) | [protected] |
Assembles a unique list of types applied to this behavior and places it in mp_iWhatBehaviorTypes.
short int** clNciGrowth::mp_iGrowthCodes [protected] |
Holds return data codes for the "Growth" tree data member.
Array size is number of species to which this behavior applies by 2 (saplings and adults).
short int* clNciGrowth::mp_iWhatBehaviorTypes [protected] |
List of types managed by this behavior.
short int clNciGrowth::m_iNumBehaviorTypes [protected] |
Number of types managed by this behavior.