#include <FoliarChemistry.h>
Public Member Functions | |
clFoliarChemistry (clSimManager *p_oSimManager) | |
Constructor. | |
~clFoliarChemistry () | |
Destructor. | |
void | Action () |
Makes value calculations. | |
void | GetData (xercesc::DOMDocument *p_oDoc) |
Does setup for this behavior. | |
Protected Member Functions | |
void | GetAppliesTo () |
Sets up the mp_bWhichAppliesTo array with the flags for each species and tree type and whether this behavior applies to it. | |
void | GetTreeCodes (clTreePopulation *p_oPop) |
Sets up the mp_iDbhCodes. | |
void | GetParameterFileData (xercesc::DOMDocument *p_oDoc, clTreePopulation *p_oPop) |
Reads values from the parameter file. | |
void | FormatQueryString (clTreePopulation *p_oPop) |
Formats the string in m_cQuery. | |
void | SetupGrid () |
Sets up the "Foliar Chemistry" grid. | |
Protected Attributes | |
clGridBase * | mp_oGrid |
Grid holding total values for each species. | |
float * | mp_fA |
"a" for foliar dry weight. | |
float * | mp_fB |
"b" for foliar dry weight. | |
float * | mp_fN |
Concentration for N. | |
float * | mp_fP |
Concentration for P. | |
float * | mp_fLignin |
Concentration for lignin. | |
float * | mp_fFiber |
Concentration for fiber. | |
float * | mp_fCellulose |
Concentration for cellulose. | |
float * | mp_fTannins |
Concentration for tannins. | |
float * | mp_fPhenolics |
Concentration for phenolics. | |
float * | mp_fSLA |
Concentration for SLA. | |
char * | m_cQuery |
String to pass to clTreePopulation::Find() in order to get the trees for which to calculate volume. | |
short int ** | mp_iDbhCodes |
Holds codes for DBH data member. | |
short int ** | mp_iXCodes |
Holds codes for X data member. | |
short int ** | mp_iYCodes |
Holds codes for Y data member. | |
bool ** | mp_bAppliesTo |
Whether this behavior applies to each kind of tree. | |
short int * | mp_iNCodes |
Holds data member codes for the "N_x" data members of the "Foliar Chemistry" grid. | |
short int * | mp_iPCodes |
Holds data member codes for the "P_x" data members of the "Foliar Chemistry" grid. | |
short int * | mp_iSLACodes |
Holds data member codes for the "SLA_x" data members of the "Foliar Chemistry" grid. | |
short int * | mp_iLigninCodes |
Holds data member codes for the "lignin_x" data members of the "Foliar Chemistry" grid. | |
short int * | mp_iFiberCodes |
Holds data member codes for the "fiber_x" data members of the "Foliar Chemistry" grid. | |
short int * | mp_iCelluloseCodes |
Holds data member codes for the "cellulose_x" data members of the "Foliar Chemistry" grid. | |
short int * | mp_iTanninsCodes |
Holds data member codes for the "tannins_x" data members of the "Foliar Chemistry" grid. | |
short int * | mp_iPhenolicsCodes |
Holds data member codes for the "phenolics_x" data members of the "Foliar Chemistry" grid. | |
short int | m_iNumTotalSpecies |
Total number of species. |
This behavior calculates foliar chemistry, partitioned by component. The components are N, P, SLA, lignins, tannins, phenolics, fiber, and cellulose.
Foliar dry weight is calculated as a * DBH ^ b. For each of the components, the foliar dry weight is multiplied by the concentration for that component. Any negative values are set to zero. Values are in kilograms.
The values are collected into a grid called "Foliar Chemistry".
This class's namestring and parameter file call string is "Foliar Chemistry."
This behavior may not be applied to seedlings.
Edit history:
-----------------
December 2, 2008 - Created (LEM)
February 13, 2009 - Corrected component calculation (LEM)
April 6, 2009 - Changed grid units from Mg to kg (LEM)
clFoliarChemistry::clFoliarChemistry | ( | clSimManager * | p_oSimManager | ) |
clFoliarChemistry::~clFoliarChemistry | ( | ) |
Destructor.
Deletes arrays.
void clFoliarChemistry::Action | ( | ) | [virtual] |
Makes value calculations.
First, the values in the "Foliar Chemistry" grid are cleared. Then a query is sent to the tree population to get all trees to which this behavior is applied. For each, the amount of each component is calculated, and the species values are totaled and placed in the "Foliar Chemistry" grid.
Reimplemented from clBehaviorBase.
void clFoliarChemistry::GetData | ( | xercesc::DOMDocument * | p_oDoc | ) | [virtual] |
Does setup for this behavior.
Calls:
p_oDoc | DOM tree of parsed input file. |
modelErr | if this behavior has been applied to seedlings. |
Implements clWorkerBase.
void clFoliarChemistry::GetAppliesTo | ( | ) | [protected] |
Sets up the mp_bWhichAppliesTo array with the flags for each species and tree type and whether this behavior applies to it.
void clFoliarChemistry::GetTreeCodes | ( | clTreePopulation * | p_oPop | ) | [protected] |
Sets up the mp_iDbhCodes.
p_oPop | Tree population object |
void clFoliarChemistry::GetParameterFileData | ( | xercesc::DOMDocument * | p_oDoc, | |
clTreePopulation * | p_oPop | |||
) | [protected] |
Reads values from the parameter file.
p_oDoc | DOM tree of parsed input file. | |
p_oPop | Tree population object. |
void clFoliarChemistry::FormatQueryString | ( | clTreePopulation * | p_oPop | ) | [protected] |
Formats the string in m_cQuery.
This value will be used in Action() to pass to clTreePopulation::Find() in order to get the trees to act on.
p_oPop | Tree population object. |
void clFoliarChemistry::SetupGrid | ( | ) | [protected] |
Sets up the "Foliar Chemistry" grid.
This ignores any maps.
clGridBase* clFoliarChemistry::mp_oGrid [protected] |
Grid holding total values for each species.
The grid name is "Foliar Chemistry". It has 5 times X float data members, where X = the total number of species. The data member names are "N_x", "P_x", "SLA_x", "lignin_x", "fiber_x", "cellulose_x", "tannins_x", and "phenolics_x", where "x" is the species number.
float* clFoliarChemistry::mp_fA [protected] |
"a" for foliar dry weight.
Array size is # total species.
float* clFoliarChemistry::mp_fB [protected] |
"b" for foliar dry weight.
Array size is # total species.
float* clFoliarChemistry::mp_fN [protected] |
Concentration for N.
Array size is # total species.
float* clFoliarChemistry::mp_fP [protected] |
Concentration for P.
Array size is # total species.
float* clFoliarChemistry::mp_fLignin [protected] |
Concentration for lignin.
Array size is # total species.
float* clFoliarChemistry::mp_fFiber [protected] |
Concentration for fiber.
Array size is # total species.
float* clFoliarChemistry::mp_fCellulose [protected] |
Concentration for cellulose.
Array size is # total species.
float* clFoliarChemistry::mp_fTannins [protected] |
Concentration for tannins.
Array size is # total species.
float* clFoliarChemistry::mp_fPhenolics [protected] |
Concentration for phenolics.
Array size is # total species.
float* clFoliarChemistry::mp_fSLA [protected] |
Concentration for SLA.
Array size is # total species.
char* clFoliarChemistry::m_cQuery [protected] |
String to pass to clTreePopulation::Find() in order to get the trees for which to calculate volume.
This will instigate a species/type search for all the species and types to which this behavior applies.
short int** clFoliarChemistry::mp_iDbhCodes [protected] |
Holds codes for DBH data member.
First array index is total # species, second is number types (3 - sapling, adult, snag).
short int** clFoliarChemistry::mp_iXCodes [protected] |
Holds codes for X data member.
First array index is total # species, second is number types (3 - sapling, adult, snag).
short int** clFoliarChemistry::mp_iYCodes [protected] |
Holds codes for Y data member.
First array index is total # species, second is number types (3 - sapling, adult, snag).
bool** clFoliarChemistry::mp_bAppliesTo [protected] |
Whether this behavior applies to each kind of tree.
First array index is total # species, second is number types (3 - sapling, adult, snag).
short int* clFoliarChemistry::mp_iNCodes [protected] |
Holds data member codes for the "N_x" data members of the "Foliar Chemistry" grid.
Array size is total # species.
short int* clFoliarChemistry::mp_iPCodes [protected] |
Holds data member codes for the "P_x" data members of the "Foliar Chemistry" grid.
Array size is total # species.
short int* clFoliarChemistry::mp_iSLACodes [protected] |
Holds data member codes for the "SLA_x" data members of the "Foliar Chemistry" grid.
Array size is total # species.
short int* clFoliarChemistry::mp_iLigninCodes [protected] |
Holds data member codes for the "lignin_x" data members of the "Foliar Chemistry" grid.
Array size is total # species.
short int* clFoliarChemistry::mp_iFiberCodes [protected] |
Holds data member codes for the "fiber_x" data members of the "Foliar Chemistry" grid.
Array size is total # species.
short int* clFoliarChemistry::mp_iCelluloseCodes [protected] |
Holds data member codes for the "cellulose_x" data members of the "Foliar Chemistry" grid.
Array size is total # species.
short int* clFoliarChemistry::mp_iTanninsCodes [protected] |
Holds data member codes for the "tannins_x" data members of the "Foliar Chemistry" grid.
Array size is total # species.
short int* clFoliarChemistry::mp_iPhenolicsCodes [protected] |
Holds data member codes for the "phenolics_x" data members of the "Foliar Chemistry" grid.
Array size is total # species.
short int clFoliarChemistry::m_iNumTotalSpecies [protected] |
Total number of species.
For the destructor.