SORTIE Core C++ Documentation
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
clFoliarChemistry Class Reference

Foliar Chemistry Calculator Version 1.0. More...

#include <FoliarChemistry.h>

Inheritance diagram for clFoliarChemistry:
clBehaviorBase clWorkerBase

Public Member Functions

 clFoliarChemistry (clSimManager *p_oSimManager)
 Constructor. More...
 
 ~clFoliarChemistry ()
 Destructor. More...
 
void Action ()
 Makes value calculations. More...
 
void GetData (xercesc::DOMDocument *p_oDoc)
 Does setup for this behavior. More...
 
- Public Member Functions inherited from clBehaviorBase
virtual float GetBehaviorVersion ()
 Gets the behavior version number. More...
 
 clBehaviorBase (clSimManager *p_oSimManager)
 Constructor. More...
 
virtual ~clBehaviorBase ()
 Destructor. More...
 
virtual short int ValidateVersionNumber (float fTestVersion)
 Makes sure that the version number of a file passed is between the minimum and current version numbers. More...
 
virtual void RegisterTreeDataMembers ()
 Registers tree data members. More...
 
virtual void SetSpeciesTypeCombos (short int iNumCombos, stcSpeciesTypeCombo *p_whatCombos)
 Sets the species/type combos for a behavior. More...
 
virtual void SetNameData (std::string sNameString)
 Sets the string for the parameter file behavior. More...
 
virtual short int GetNewTreeInts ()
 Gets the number of new tree integer data members this behavior wants to register. More...
 
virtual short int GetNewTreeFloats ()
 Gets the number of new tree float data members this behavior wants to register. More...
 
virtual short int GetNewTreeChars ()
 Gets the number of new tree character data members this behavior wants to register. More...
 
virtual short int GetNewTreeBools ()
 Gets the number of new tree bool data members this behavior wants to register. More...
 
virtual short int GetNumSpeciesTypeCombos ()
 Gets the number of species/type combos to which this behavior applies. More...
 
virtual short int GetNumBehaviorSpecies ()
 Gets the number of unique tree species to which this behavior applies. More...
 
struct stcSpeciesTypeCombo GetSpeciesTypeCombo (short int iIndex)
 Gets one of this behavior's type/species combos. More...
 
virtual short int GetBehaviorSpecies (short int iIndex)
 Gets one of the behavior's species. More...
 
short int GetBehaviorListNumber ()
 Gets the behavior list number for this behavior, which differentiates between multiple copies of the behavior in the behavior list. More...
 
void SetBehaviorListNumber (short int iNumber)
 Sets the behavior list number for this behavior, which differentiates between multiple copies of the behavior in the behavior list. More...
 
std::string FormatSpeciesTypeQueryString ()
 Formats the string for species/types query. More...
 
virtual DOMElement * GetParentParametersElement (xercesc::DOMDocument *p_oDoc)
 This will get the correct set of parameters for this behavior based on the behavior list position number. More...
 
- Public Member Functions inherited from clWorkerBase
 clWorkerBase (clSimManager *p_oSimManager)
 Constructor. More...
 
virtual ~clWorkerBase ()
 Destructor. More...
 
std::string GetName ()
 Gets the object's namestring. More...
 
clSimManagerGetSimManager ()
 
void DoObjectSetup (xercesc::DOMDocument *p_oDoc, fileType iFileType)
 Triggers the setup process. More...
 
virtual void TimestepCleanup ()
 Performs any necessary cleanup operations at the end of a timestep. More...
 
virtual void EndOfRunCleanup ()
 Performs any necessary cleanup operations at the end of a run. More...
 

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. More...
 
void GetTreeCodes (clTreePopulation *p_oPop)
 Sets up the mp_iDbhCodes. More...
 
void GetParameterFileData (xercesc::DOMDocument *p_oDoc, clTreePopulation *p_oPop)
 Reads values from the parameter file. More...
 
void FormatQueryString (clTreePopulation *p_oPop)
 Formats the string in m_cQuery. More...
 
void SetupGrid ()
 Sets up the "Foliar Chemistry" grid. More...
 
- Protected Member Functions inherited from clWorkerBase
void AssembleFileCode (int iFileType, int iFileVersion, char *cCode)
 Creates the proper identifying filecode for an XML file. More...
 

Protected Attributes

clGridmp_oGrid
 Grid holding total values for each species. More...
 
double * mp_fA
 "a" for foliar dry weight. More...
 
double * mp_fB
 "b" for foliar dry weight. More...
 
double * mp_fN
 Concentration for N. More...
 
double * mp_fP
 Concentration for P. More...
 
double * mp_fLignin
 Concentration for lignin. More...
 
double * mp_fFiber
 Concentration for fiber. More...
 
double * mp_fCellulose
 Concentration for cellulose. More...
 
double * mp_fTannins
 Concentration for tannins. More...
 
double * mp_fPhenolics
 Concentration for phenolics. More...
 
double * mp_fSLA
 Concentration for SLA. More...
 
char * m_cQuery
 String to pass to clTreePopulation::Find() in order to get the trees for which to calculate volume. More...
 
short int ** mp_iDbhCodes
 Holds codes for DBH data member. More...
 
short int ** mp_iXCodes
 Holds codes for X data member. More...
 
short int ** mp_iYCodes
 Holds codes for Y data member. More...
 
bool ** mp_bAppliesTo
 Whether this behavior applies to each kind of tree. More...
 
short int * mp_iNCodes
 Holds data member codes for the "N_x" data members of the "Foliar Chemistry" grid. More...
 
short int * mp_iPCodes
 Holds data member codes for the "P_x" data members of the "Foliar Chemistry" grid. More...
 
short int * mp_iSLACodes
 Holds data member codes for the "SLA_x" data members of the "Foliar Chemistry" grid. More...
 
short int * mp_iLigninCodes
 Holds data member codes for the "lignin_x" data members of the "Foliar Chemistry" grid. More...
 
short int * mp_iFiberCodes
 Holds data member codes for the "fiber_x" data members of the "Foliar Chemistry" grid. More...
 
short int * mp_iCelluloseCodes
 Holds data member codes for the "cellulose_x" data members of the "Foliar Chemistry" grid. More...
 
short int * mp_iTanninsCodes
 Holds data member codes for the "tannins_x" data members of the "Foliar Chemistry" grid. More...
 
short int * mp_iPhenolicsCodes
 Holds data member codes for the "phenolics_x" data members of the "Foliar Chemistry" grid. More...
 
short int m_iNumTotalSpecies
 Total number of species. More...
 
- Protected Attributes inherited from clBehaviorBase
short int m_iNumSpeciesTypeCombos
 How many type/species combos a behavior will act on. More...
 
short int m_iNumBehaviorSpecies
 How many distinct species are in the combo list - important for filling species-specific values from parameter file. More...
 
short int * mp_iWhatSpecies
 List of distinct species - for filling species-specific values from parameter file. More...
 
stcSpeciesTypeCombomp_whatSpeciesTypeCombos
 Array of species/type combos that the behavior will act on. More...
 
short int m_iNewTreeInts
 The number of new tree integer data members this behavior wants to add. More...
 
short int m_iNewTreeFloats
 The number of new tree float data members this behavior wants to add. More...
 
short int m_iNewTreeChars
 The number of new tree character data members this behavior wants to add. More...
 
short int m_iNewTreeBools
 The number of new tree boolean data members this behavior wants to add. More...
 
short int m_iBehaviorListNumber
 The number of this behavior in the behavior list, to differentiate between possible multiple copies of this behavior. More...
 
float m_fVersionNumber
 Version number - this will be rounded to 2 digits after the decimal place. More...
 
std::string m_sXMLRoot
 XML root that encloses the parameters for this behavior. More...
 
float m_fMinimumVersionNumber
 Minimum version number - this behavior will run parameter data for a file marked between this number and the current version number, inclusive. More...
 
- Protected Attributes inherited from clWorkerBase
std::string m_sNameString
 If a behavior has registered a command line command with the sim manager, this allows it to be called. More...
 
clSimManagermp_oSimManager
 Pointer to the simulation manager object. More...
 
int * mp_iAllowedFileTypes
 List of the input file types this object can handle. More...
 
int m_iNumAllowedTypes
 Number of input file types this object can handle. More...
 

Detailed Description

Foliar Chemistry Calculator Version 1.0.

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 "FoliarChemistry."

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)

Constructor & Destructor Documentation

◆ clFoliarChemistry()

clFoliarChemistry::clFoliarChemistry ( clSimManager p_oSimManager)

Constructor.

Parameters
p_oSimManagerclSimManager object.

◆ ~clFoliarChemistry()

clFoliarChemistry::~clFoliarChemistry ( )

Destructor.

Deletes arrays.

Member Function Documentation

◆ Action()

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.

◆ FormatQueryString()

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.

Parameters
p_oPopTree population object.

◆ GetAppliesTo()

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.

◆ GetData()

void clFoliarChemistry::GetData ( xercesc::DOMDocument *  p_oDoc)
virtual

Does setup for this behavior.

Calls:

  1. GetAppliesTo()
  2. GetParameterFileData()
  3. FormatQueryString()
  4. SetupGrid()
  5. Action() so that the initial conditions value will be added
Parameters
p_oDocDOM tree of parsed input file.
Exceptions
modelErrif this behavior has been applied to seedlings.

Implements clWorkerBase.

◆ GetParameterFileData()

void clFoliarChemistry::GetParameterFileData ( xercesc::DOMDocument *  p_oDoc,
clTreePopulation p_oPop 
)
protected

Reads values from the parameter file.

Parameters
p_oDocDOM tree of parsed input file.
p_oPopTree population object.

◆ GetTreeCodes()

void clFoliarChemistry::GetTreeCodes ( clTreePopulation p_oPop)
protected

Sets up the mp_iDbhCodes.

Parameters
p_oPopTree population object

◆ SetupGrid()

void clFoliarChemistry::SetupGrid ( )
protected

Sets up the "Foliar Chemistry" grid.

This ignores any maps.

Member Data Documentation

◆ m_cQuery

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.

◆ m_iNumTotalSpecies

short int clFoliarChemistry::m_iNumTotalSpecies
protected

Total number of species.

For the destructor.

◆ mp_bAppliesTo

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).

◆ mp_fA

double* clFoliarChemistry::mp_fA
protected

"a" for foliar dry weight.

Array size is # total species.

◆ mp_fB

double* clFoliarChemistry::mp_fB
protected

"b" for foliar dry weight.

Array size is # total species.

◆ mp_fCellulose

double* clFoliarChemistry::mp_fCellulose
protected

Concentration for cellulose.

Array size is # total species.

◆ mp_fFiber

double* clFoliarChemistry::mp_fFiber
protected

Concentration for fiber.

Array size is # total species.

◆ mp_fLignin

double* clFoliarChemistry::mp_fLignin
protected

Concentration for lignin.

Array size is # total species.

◆ mp_fN

double* clFoliarChemistry::mp_fN
protected

Concentration for N.

Array size is # total species.

◆ mp_fP

double* clFoliarChemistry::mp_fP
protected

Concentration for P.

Array size is # total species.

◆ mp_fPhenolics

double* clFoliarChemistry::mp_fPhenolics
protected

Concentration for phenolics.

Array size is # total species.

◆ mp_fSLA

double* clFoliarChemistry::mp_fSLA
protected

Concentration for SLA.

Array size is # total species.

◆ mp_fTannins

double* clFoliarChemistry::mp_fTannins
protected

Concentration for tannins.

Array size is # total species.

◆ mp_iCelluloseCodes

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.

◆ mp_iDbhCodes

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).

◆ mp_iFiberCodes

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.

◆ mp_iLigninCodes

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.

◆ mp_iNCodes

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.

◆ mp_iPCodes

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.

◆ mp_iPhenolicsCodes

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.

◆ mp_iSLACodes

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.

◆ mp_iTanninsCodes

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.

◆ mp_iXCodes

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).

◆ mp_iYCodes

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).

◆ mp_oGrid

clGrid* 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.


The documentation for this class was generated from the following file: