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

Tree Dimension Analysis Version 2.0. More...

#include <DimensionAnalysis.h>

Inheritance diagram for clDimensionAnalysis:
clBehaviorBase clWorkerBase

Public Types

enum  DbhUnits { mm, cm, in }
 Units of DBH that correspond to the parameters entered by the user. More...
 
enum  BiomassUnits { g, kg, lb }
 Units of biomass that correspond to the parameters entered by the user. More...
 
enum  WhatDia { DBH, DBH2 }
 Meaning of "dia". More...
 

Public Member Functions

 clDimensionAnalysis (clSimManager *p_oSimManager)
 Constructor. More...
 
 ~clDimensionAnalysis ()
 Destructor. More...
 
void Action ()
 Makes biomass calculations. More...
 
void GetData (xercesc::DOMDocument *p_oDoc)
 Does setup for this behavior. More...
 
void RegisterTreeDataMembers ()
 Registers the "Biomass" float data member. 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 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 Attributes

double * mp_fA
 a in a biomass equation. More...
 
double * mp_fB
 b in a biomass equation. More...
 
double * mp_fC
 c in a biomass equation. More...
 
double * mp_fD
 d in a biomass equation. More...
 
double * mp_fE
 e in a biomass equation. More...
 
double * mp_fCorrectionFactor
 Correction factor for a biomass equation. More...
 
double * mp_fDbhConverter
 Converts DBH values to the appropriate units. More...
 
double * mp_fBiomassConverter
 Converts biomass values to metric tons. More...
 
int * mp_iEquationID
 Equation ID, as a value from 1 to 9. More...
 
int * mp_iWhatDia
 Meaning of "dia". More...
 
int * mp_iIndexes
 Helps with array access. More...
 
bool * mp_bUseCorrectionFactor
 Whether or not to use a correction factor. More...
 
bool * mp_bConvertDBH
 Whether or not to convert DBH (i.e. More...
 
std::string m_sQuery
 String to pass to clTreePopulation::Find() in order to get the trees for which to calculate biomass. More...
 
short int ** mp_iBiomassCodes
 Holds data member codes for "Biomass" float data member. 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...
 

Additional Inherited Members

- Protected Member Functions inherited from clWorkerBase
void AssembleFileCode (int iFileType, int iFileVersion, char *cCode)
 Creates the proper identifying filecode for an XML file. More...
 

Detailed Description

Tree Dimension Analysis Version 2.0.

This class calculates above-ground tree biomass. There are 9 possible equations. The equations, and all terminology, ID numbers, and parameter names, are taken directly from:

Jenkins, J.C., D.C. Chojnacky, L.S Heath, and R.A. Birdsey. 2004. Comprehensive Database of Diameter-based Biomass Regressions for North American Tree Species. United States Department of Agriculture, Forest Service General Technical Report NE-319. http://www.nrs.fs.fed.us/

The list of equations is in Table 6. The equations are as follows:

IDEquation
1log10 biomass = a + b * (log10(dia^c))
2ln biomass = a + b * dia + c * (ln(dia^d))
3ln biomass = a + b * ln(dia) + c * (d + (e * ln(dia)))
4biomass = a + b * dia + c * (dia ^ d)
5biomass = a + (b * dia) + c * (dia ^ 2) + d * (dia ^ 3)
6biomass = a * (exp(b + (c * ln(dia)) + (d * dia)))
7biomass = a + ((b * (dia ^ c))/((dia ^ c) + d))
8log100 biomass = a + (b * log10(dia))
9ln biomass = ln(a) + (b * ln(dia))

There are lots of different parameters published in the literature, and the units are all over the place. We want users to be able to enter literature values as published. Therefore, the user specifies the units of DBH that work with the parameters they're entering: either cm, mm, or inches. Then they specify the units of biomass that the parameters they entered should produce: g, k, or lbs. This behavior does all necessary conversion so that in the end it reports biomass values in metric tons (Mg = 10 3 kg).

Users have the option of specifying a correction factor, which is sometimes used by the ln biomass or log10 biomass equations. This value is multiplied by the result before converting to metric tons.

The value for "dia" can vary as well. It can mean either DBH or DBH2 (other possibilities are given in the paper, but I am making the decision to not support them at this time.)

The biomass value is stored in a float tree data member called "Biomass" that this behavior adds.

This class's namestring and parameter call string are both "DimensionAnalysis".

This behavior may not be applied to seedlings.

Copyright 2011 Charles D. Canham.

Author
Lora E. Murphy


Edit history:
--------------—
October 20, 2011 - Wiped the slate clean for SORTIE 7.0 (LEM)

Member Enumeration Documentation

◆ BiomassUnits

Units of biomass that correspond to the parameters entered by the user.

Enumerator

Gram.

kg 

Kilogram.

lb 

Pound.

◆ DbhUnits

Units of DBH that correspond to the parameters entered by the user.

Enumerator
mm 

Millimeters.

cm 

Centimeters.

in 

Inches.

◆ WhatDia

Meaning of "dia".

Enumerator
DBH 

DBH.

DBH2 

DBH squared.

Constructor & Destructor Documentation

◆ clDimensionAnalysis()

clDimensionAnalysis::clDimensionAnalysis ( clSimManager p_oSimManager)

Constructor.

Parameters
p_oSimManagerclSimManager object.

◆ ~clDimensionAnalysis()

clDimensionAnalysis::~clDimensionAnalysis ( )

Destructor.

Deletes arrays.

Member Function Documentation

◆ Action()

void clDimensionAnalysis::Action ( )
virtual

Makes biomass calculations.

A query is sent to the tree population to get all trees to which this behavior is applied. For each, the biomass is calculated and the value is placed in the "Biomass" float tree data member.

This puts all the equations in an "if" statement. I think this is as fast a way as any to do this.

Reimplemented from clBehaviorBase.

◆ GetData()

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

Does setup for this behavior.

Steps:

  1. Reads values from the parameter file and validates them.
  2. Populates the units converter arrays.
  3. Formats the query string, which is used to do tree searches.
  4. Calls Action() so that the initial conditions volume will be added
Parameters
p_oDocDOM tree of parsed input file.
Exceptions
modelErrif:
  • Any value for a is less than 0.
  • Any value for c is greater than 34 (arbitrary cutoff to avoid float overflows)

Implements clWorkerBase.

◆ RegisterTreeDataMembers()

void clDimensionAnalysis::RegisterTreeDataMembers ( )
virtual

Registers the "Biomass" float data member.

The return codes are captured in the mp_iBiomassCodes array.

Exceptions
modelErrif this behavior is being applied to any tree type except saplings, adults, and snags.

Reimplemented from clBehaviorBase.

Member Data Documentation

◆ m_sQuery

std::string clDimensionAnalysis::m_sQuery
protected

String to pass to clTreePopulation::Find() in order to get the trees for which to calculate biomass.

This will instigate a species/type search for all the species and types to which this behavior applies.

◆ mp_bConvertDBH

bool* clDimensionAnalysis::mp_bConvertDBH
protected

Whether or not to convert DBH (i.e.

whether or not DBH is supposed to be in cm). Array size is # species to which this behavior applies.

◆ mp_bUseCorrectionFactor

bool* clDimensionAnalysis::mp_bUseCorrectionFactor
protected

Whether or not to use a correction factor.

Array size is # species to which this behavior applies.

◆ mp_fA

double* clDimensionAnalysis::mp_fA
protected

a in a biomass equation.

Array size is # species to which this behavior applies.

◆ mp_fB

double* clDimensionAnalysis::mp_fB
protected

b in a biomass equation.

Array size is # species to which this behavior applies.

◆ mp_fBiomassConverter

double* clDimensionAnalysis::mp_fBiomassConverter
protected

Converts biomass values to metric tons.

Array size is # species to which this behavior applies.

◆ mp_fC

double* clDimensionAnalysis::mp_fC
protected

c in a biomass equation.

Array size is # species to which this behavior applies.

◆ mp_fCorrectionFactor

double* clDimensionAnalysis::mp_fCorrectionFactor
protected

Correction factor for a biomass equation.

This value, if desired by the user, is multiplied by the finished biomass. Array size is # species to which this behavior applies.

◆ mp_fD

double* clDimensionAnalysis::mp_fD
protected

d in a biomass equation.

Array size is # species to which this behavior applies.

◆ mp_fDbhConverter

double* clDimensionAnalysis::mp_fDbhConverter
protected

Converts DBH values to the appropriate units.

Array size is # species to which this behavior applies.

◆ mp_fE

double* clDimensionAnalysis::mp_fE
protected

e in a biomass equation.

Array size is # species to which this behavior applies.

◆ mp_iBiomassCodes

short int** clDimensionAnalysis::mp_iBiomassCodes
protected

Holds data member codes for "Biomass" float data member.

First array index is # species to which this behavior applies, second is number types (3 - sapling, adult, snag)

◆ mp_iEquationID

int* clDimensionAnalysis::mp_iEquationID
protected

Equation ID, as a value from 1 to 9.

Array size is # species to which this behavior applies.

◆ mp_iIndexes

int* clDimensionAnalysis::mp_iIndexes
protected

Helps with array access.

Array size is number of total species.

◆ mp_iWhatDia

int* clDimensionAnalysis::mp_iWhatDia
protected

Meaning of "dia".

Array size is # species to which this behavior applies.


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