#include <NCIMort.h>
Public Member Functions | |
clNCIMort (clSimManager *p_oSimManager) | |
Constructor. | |
~clNCIMort () | |
Destructor. | |
whyDead | DoMort (clTree *p_oTree, const float &fDbh, const short int &iSpecies) |
Determines mortality for a tree. | |
void | DoShellSetup (xercesc::DOMDocument *p_oDoc) |
Performs behavior setup. | |
void | PreMortCalcs (clTreePopulation *p_oPop) |
Performs calculations before any trees have been killed. | |
Protected Member Functions | |
void | ValidateData () |
Makes sure all input data is valid. | |
void | ReadParameterFile (xercesc::DOMDocument *p_oDoc) |
Reads data from the parameter file. | |
void | GetTreeMemberCodes () |
Gets the return codes for needed tree data members. | |
void | FormatQuery () |
Populates m_cQuery with the query for getting NCI trees. | |
Protected Attributes | |
short int ** | mp_iDeadCodes |
Return codes for the "dead" tree int data member variable. | |
float | m_fNumberYearsPerTimestep |
Number of years per timestep. | |
char * | m_cQuery |
Query string to get NCI trees. |
This is a mortality shell object which applies an NCI (neighborhood competition index) function to assess probability of survival.
The function for annual survival probability:
All NCI calculations are performed according to clNCIBase.
The annual survival probability is compounded for multi-year timesteps by taking it to the X power, where X is the number of years per timestep.
This is a generic behavior. It is expected that not all terms in the 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.
The namestring for this class is "ncimortshell". The parameter file call string is "NCI Mortality".
This behavior adds a new boolean data member called "NCI Mort". This holds the result of the mortality calculation that happens before the main mortality process. This is so neighbors that die this timestep aren't artificially excluded from the NCI calculation.
This behavior can only be applied to saplings and adults.
If the user is using damage parameters, this behavior must be used in conjunction with the storm damage behavior. If the user is using shading, then this must be used in conjunction with a light behavior.
Copyright 2003 Charles D. Canham.
clNCIMort::clNCIMort | ( | clSimManager * | p_oSimManager | ) |
Constructor.
p_oSimManager | Sim Manager object. |
clNCIMort::~clNCIMort | ( | ) |
Destructor.
Frees memory.
whyDead clNCIMort::DoMort | ( | clTree * | p_oTree, | |
const float & | fDbh, | |||
const short int & | iSpecies | |||
) | [virtual] |
Determines mortality for a tree.
p_oTree | Tree being evaluated. | |
fDbh | DBH of tree being evaluated. | |
iSpecies | Species of tree being evaluated. |
Implements clMortalityBase.
void clNCIMort::DoShellSetup | ( | xercesc::DOMDocument * | p_oDoc | ) | [virtual] |
Performs behavior setup.
First, ReadParameterFile() is called to read the parameter file's data. Then ValidateData() is called to validate the data. Then GetTreeMemberCodes() is called to get tree data return codes.
p_oDoc | DOM tree of parsed input tree. |
Reimplemented from clMortalityBase.
void clNCIMort::PreMortCalcs | ( | clTreePopulation * | p_oPop | ) | [virtual] |
Performs calculations before any trees have been killed.
This finds all trees to which this behavior applies and performs their NCI calculations. Then, having done all that work, this function goes ahead and assesses the tree's mortality. Whether it lives or dies is then stashed in the "NCI Mort" bool tree data member.
p_oPop | Tree population. |
Reimplemented from clMortalityBase.
void clNCIMort::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 clNCIMort::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 clNCIMort::GetTreeMemberCodes | ( | ) | [protected] |
Gets the return codes for needed tree data members.
This declares and populates the mp_iDamageCodes array with the return codes for the "stm_dmg" tree int data member, and does the same for the mp_iLightCodes array and the "Light" tree float data member for any species which uses the shading effect (shading coefficient != 0).
modelErr | if a light code comes back -1 for any species which uses the shading effect. |
void clNCIMort::FormatQuery | ( | ) | [protected] |
Populates m_cQuery with the query for getting NCI trees.
short int** clNCIMort::mp_iDeadCodes [protected] |
Return codes for the "dead" tree int data member variable.
Array size is number of species by number of tree types (even if not every species and type is represented).
float clNCIMort::m_fNumberYearsPerTimestep [protected] |
Number of years per timestep.
From sim manager
char* clNCIMort::m_cQuery [protected] |
Query string to get NCI trees.