clLinearBiLevelGrowth Class Reference

Increments growth according to a simple linear equation, with the possibility of two sets of parameters for each species. More...

#include <LinearBiLevelGrowth.h>

Inheritance diagram for clLinearBiLevelGrowth:

clGrowthBase clBehaviorBase clWorkerBase

List of all members.

Public Member Functions

 clLinearBiLevelGrowth (clSimManager *p_oSimManager)
 Constructor.
 ~clLinearBiLevelGrowth ()
 Destructor.
float CalcDiameterGrowthValue (clTree *p_oTree, clTreePopulation *p_oPop, float fHeightGrowth)
 Calculates the amount of diameter growth increase for a particular tree using the linear growth equation.
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

clGridBasemp_oStormLight
 "Storm Light" grid object
float * mp_fLoLightSlope
 Slope of growth equation in low light - b - sized number of behavior species.
float * mp_fLoLightIntercept
 Intercept of growth equation in low light - a - sized number of behavior species.
float * mp_fHiLightSlope
 Slope of growth equation in high light - b - sized number of behavior species.
float * mp_fHiLightIntercept
 Intercept of growth equation in high light - a - sized number of behavior species.
float * mp_fHiLightThreshold
 Threshold between low light and high light growth, as a value between 0 and 100 - sized number of behavior species.
int * mp_iIndexes
 To help access the other arrays.
float m_fYearsPerTimestep
 Conversion factor to translate the results of the function to the appropriate units per timestep.
int m_iLightCode
 Code for the "Light" data member of the "Storm Light" grid.


Detailed Description

Increments growth according to a simple linear equation, with the possibility of two sets of parameters for each species.

The two sets of parameters can be used for two different growth rates at high and low light. This behavior can be used to create a growth increment with no automatic height adjustment or a growth increment with automatic height adjustment.

The equation used in this behavior is:

Y = a + b * diam
where

This behavior can also take into account light levels coming from the "Storm Light" grid object produced by clStormLight. This behavior can use two different sets of parameter values - one at low light and one at high light. The user sets the threshold between the two. The equation remains the same.

The name string is "linearbilevelgrowthshell". In the parameter file: For diameter growth with no automatic height adjustment, call "linear bilevel growth diam only". For diameter growth with automatic height adjustment, call "linear bilevel growth".

Copyright 2005 Charles D. Canham.

Author:
Lora E. Murphy

Edit history:
-----------------
May 4, 2005 - Created (LEM)

Constructor & Destructor Documentation

clLinearBiLevelGrowth::clLinearBiLevelGrowth ( clSimManager p_oSimManager  ) 

Constructor.

Sets the namestring.

clLinearBiLevelGrowth::~clLinearBiLevelGrowth (  ) 

Destructor.

Frees memory.


Member Function Documentation

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

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

If the light grid is present, this retrieves the light level in the tree's grid cell. If it is above the threshold, the high-light parameters are used. If it is below the threshold, the low-light parameters are used. If the light grid is not present, the low-light parameters are used.

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 clLinearBiLevelGrowth::DoShellSetup ( xercesc::DOMDocument *  p_oDoc  )  [virtual]

Does the setup for this behavior.

This reads in the parameters from the parameter file, and retrieves the "Storm Light" grid if present.

Parameters:
p_oDoc Parsed parameter file.
Exceptions:
modelErr if the high-light growth threshold is not between 0 and 100.

Reimplemented from clGrowthBase.

void clLinearBiLevelGrowth::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

"Storm Light" grid object

Slope of growth equation in low light - b - sized number of behavior species.

Intercept of growth equation in low light - a - sized number of behavior species.

Slope of growth equation in high light - b - sized number of behavior species.

Intercept of growth equation in high light - a - sized number of behavior species.

Threshold between low light and high light growth, as a value between 0 and 100 - sized number of behavior species.

To help access the other arrays.

Conversion factor to translate the results of the function to the appropriate units per timestep.

Code for the "Light" data member of the "Storm Light" grid.


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

Generated on Tue Apr 19 13:56:12 2011 for SORTIE Core C++ Documentation by  doxygen 1.5.6