clAllometricGrowthIncrementer Class Reference

Calculates a growth increment based on allometry. More...

#include <AllometricGrowthIncrementer.h>

Inheritance diagram for clAllometricGrowthIncrementer:

clGrowthBase clBehaviorBase clWorkerBase

List of all members.

Public Member Functions

 clAllometricGrowthIncrementer (clSimManager *p_oSimManager)
 Constructor.
float CalcHeightGrowthValue (clTree *p_oTree, clTreePopulation *p_oPop, float fDiameterGrowth)
 Calculates the amount of height growth increase for a particular tree.
float CalcDiameterGrowthValue (clTree *p_oTree, clTreePopulation *p_oPop, float fHeightGrowth)
 Calculates the amount of diameter growth increase for a particular tree.
void DoShellSetup (xercesc::DOMDocument *p_oDoc)
 Does the setup for this behavior.
void SetNameData (char *cNameString)
 Captures the namestring passed to this behavior.

Protected Attributes

clAllometrymp_oAllom
 Pointer to the allometry object.


Detailed Description

Calculates a growth increment based on allometry.

This is designed to be a secondary growth method for height or diameter when the growth method for the other dimension is the primary one.

If this is acting as a height increment, the increment is calculated as:

inc = f(DIAMa) - f(DIAMb)

where inc is the height increment, f(x) is the height as a function of diameter allometry equation appropriate for the tree type, DIAMa is the tree's diameter before the growth increment is applied, and DIAMb is the tree's diameter after the growth increment is applied. The tree height cannot be greater than the maximum tree height for a species. If the tree type is seedling, DIAM is diameter at 10 cm. Otherwise, it's DBH.

If this is acting as a diameter increment, the increment is calculated as:

inc = f(Ha) - f(Hb)

where inc is the diameter increment, f(x) is the height as a function of diameter allometry equation appropriate for the tree type, Ha is the tree's diameter before the growth increment is applied, and Hb is the tree's diameter after the growth increment is applied.

When calculating an increment, the same allometric equation is used for both portions, even if the tree would be making a type transition. For example, if the tree is a seedling and the amount of diameter growth is enough to make it into a sapling, the seedling diam10-height relationship is still used for both values.

The parameter file call string for this behavior is either "height incrementer" or "diameter incrementer". The namestring is "allometric incrementer growthshell".

Copyright 2003 Charles D. Canham.

Author:
Lora E. Murphy

Edit history:
-----------------
May 21, 2004 - Created (LEM)
April 10, 2008 - Added growth incrementing

Constructor & Destructor Documentation

clAllometricGrowthIncrementer::clAllometricGrowthIncrementer ( clSimManager p_oSimManager  ) 

Constructor.

Sets the namestring.


Member Function Documentation

float clAllometricGrowthIncrementer::CalcHeightGrowthValue ( clTree p_oTree,
clTreePopulation p_oPop,
float  fDiameterGrowth 
) [virtual]

Calculates the amount of height growth increase for a particular tree.

The height increment is calculated as the normal allometric height of the DBH before diameter growth is applied minus the normal allometric height of the DBH after diameter growth is applied.

If the tree is a seedling, the diam10 before and after the growth increment is used in the seedling diam10-height allometric equation. If the tree is a sapling, the diam10 before and after the growth increment is converted to a DBH value and that value is used in the sapling DBH-height allometric equation. If the tree is an adult, then DBH before and after the growth increment is used in the adult DBH-height allometric equation.

This doesn't need to compound height by timestep length, since diameter should already take that into account.

Parameters:
p_oTree Tree for which to calculate growth.
p_oPop Tree population object, just in case it's needed.
fDiameterGrowth Amount of diameter growth for this tree, in cm.
Returns:
Amount, in m, by which to increase the tree's height.

Reimplemented from clGrowthBase.

float clAllometricGrowthIncrementer::CalcDiameterGrowthValue ( clTree p_oTree,
clTreePopulation p_oPop,
float  fHeightGrowth 
) [virtual]

Calculates the amount of diameter growth increase for a particular tree.

The diameter increment is calculated as the diameter derived from height before height growth is applied minus the diameter derived from height after height growth is applied.

Parameters:
p_oTree Tree for which to calculate growth.
p_oPop Tree population object, just in case it's needed.
fHeightGrowth Amount of height growth, in m (ignored).
Returns:
Amount, in cm, by which to increase the tree's diameter.

Reimplemented from clGrowthBase.

void clAllometricGrowthIncrementer::DoShellSetup ( xercesc::DOMDocument *  p_oDoc  )  [virtual]

Does the setup for this behavior.

This queries the tree population for a pointer to the allometry object.

Reimplemented from clGrowthBase.

void clAllometricGrowthIncrementer::SetNameData ( char *  cNameString  )  [virtual]

Captures the namestring passed to this behavior.

This is overridden from clBehaviorBase so we can capture the namestring passed. Since this class can create multiple kinds of behaviors that function differently, this will capture what kind of behavior this is supposed to be.

Parameters:
cNameString Behavior's namestring.

Reimplemented from clBehaviorBase.


Member Data Documentation

Pointer to the allometry object.


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

Generated on Wed Oct 28 13:58:43 2009 for SORTIE Core C++ Documentation by  doxygen 1.5.6