clDimensionAnalysis Class Reference

Tree Dimension Analysis Version 2.0. More...

#include <DimensionAnalysis.h>

Inheritance diagram for clDimensionAnalysis:

clBehaviorBase clWorkerBase List of all members.

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

Public Member Functions

 clDimensionAnalysis (clSimManager *p_oSimManager)
 Constructor.
 ~clDimensionAnalysis ()
 Destructor.
void Action ()
 Makes biomass calculations.
void GetData (xercesc::DOMDocument *p_oDoc)
 Does setup for this behavior.
void RegisterTreeDataMembers ()
 Registers the "Biomass" float data member.

Protected Attributes

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

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.fs.fed.us/ne

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 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 "tree biomass calculator" (to enhance backwards compatibility with an earlier version before this behavior was called "dimension analysis").

This behavior may not be applied to seedlings.

Copyright 2005 Charles D. Canham.

Author:
Lora E. Murphy

Edit history:
-----------------
February 2, 2005 - Created (LEM)
March 20, 2005 - Transformed into dimension analysis behavior and upgraded to version 2.0 (LEM)


Member Enumeration Documentation

enum clDimensionAnalysis::BiomassUnits
 

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

Enumerator:
g  Gram.
kg  Kilogram.
lb  Pound.

enum clDimensionAnalysis::DbhUnits
 

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

Enumerator:
mm  Millimeters.
cm  Centimeters.
in  Inches.


Constructor & Destructor Documentation

clDimensionAnalysis::clDimensionAnalysis clSimManager p_oSimManager  ) 
 

Constructor.

Parameters:
p_oSimManager clSimManager object.

clDimensionAnalysis::~clDimensionAnalysis  ) 
 

Destructor.

Deletes arrays.


Member Function Documentation

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.

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_oDoc DOM tree of parsed input file.
Exceptions:
modelErr if:
  • Any value for a is less than 0.
  • Any value for c is greater than 34 (arbitrary cutoff to avoid float overflows)

Implements clWorkerBase.

void clDimensionAnalysis::RegisterTreeDataMembers  )  [virtual]
 

Registers the "Biomass" float data member.

The return codes are captured in the mp_iBiomassCodes array.

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

Reimplemented from clBehaviorBase.


Member Data Documentation

char* clDimensionAnalysis::m_cQuery [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.

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.

bool* clDimensionAnalysis::mp_bUseCorrectionFactor [protected]
 

Whether or not to use a correction factor.

Array size is # species to which this behavior applies.

float* clDimensionAnalysis::mp_fA [protected]
 

a in a biomass equation.

Array size is # species to which this behavior applies.

float* clDimensionAnalysis::mp_fB [protected]
 

b in a biomass equation.

Array size is # species to which this behavior applies.

float* clDimensionAnalysis::mp_fBiomassConverter [protected]
 

Converts biomass values to metric tons.

Array size is # species to which this behavior applies.

float* clDimensionAnalysis::mp_fC [protected]
 

c in a biomass equation.

Array size is # species to which this behavior applies.

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

float* clDimensionAnalysis::mp_fD [protected]
 

d in a biomass equation.

Array size is # species to which this behavior applies.

float* clDimensionAnalysis::mp_fDbhConverter [protected]
 

Converts DBH values to the appropriate units.

Array size is # species to which this behavior applies.

float* clDimensionAnalysis::mp_fE [protected]
 

e in a biomass equation.

Array size is # species to which this behavior applies.

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)

int* clDimensionAnalysis::mp_iEquationID [protected]
 

Equation ID, as a value from 1 to 9.

Array size is # species to which this behavior applies.

int* clDimensionAnalysis::mp_iIndexes [protected]
 

Helps with array access.

Array size is number of total species.


The documentation for this class was generated from the following file:
Generated on Mon Mar 27 12:51:10 2006 for SORTIE Core C++ Documentation by  doxygen 1.4.6-NO