clPRStormBiLevelGrowth Class Reference

PR Storm Bi-Level Growth, version 1.0 This behavior was created for Puerto Rico, and is so bizarre that I have included the "PR" in the name to warn off unsuspecting folks. More...

#include <PRStormBiLevelGrowth.h>

Inheritance diagram for clPRStormBiLevelGrowth:

clGrowthBase clBehaviorBase clWorkerBase

List of all members.

Public Member Functions

 clPRStormBiLevelGrowth (clSimManager *p_oSimManager)
 Constructor.
 ~clPRStormBiLevelGrowth ()
 Destructor.
float CalcDiameterGrowthValue (clTree *p_oTree, clTreePopulation *p_oPop, float fHeightGrowth)
 Calculates the amount of diameter growth increase for a particular tree using the appropriate growth equation.
void DoShellSetup (xercesc::DOMDocument *p_oDoc)
 Does the setup for this behavior.

Protected Attributes

clGridBasemp_oStormLight
 "Storm Light" grid object
clGridBasemp_oStorm
 "Storm Damage" 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_fHiLightA
 High light growth equaiton "a" - sized number of behavior species.
float * mp_fHiLightB
 High light growth equaiton "b" - 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.
int m_iStormtimeCode
 Code for the "stormtime" data member of the "Storm Damage" grid.


Detailed Description

PR Storm Bi-Level Growth, version 1.0 This behavior was created for Puerto Rico, and is so bizarre that I have included the "PR" in the name to warn off unsuspecting folks.

This behavior increments growth using one of two equations, one for low light levels and one for high light levels.

The equation used for low light levels is:

Y = a + b * diam
where

The equation used for high light levels is:

H = a * diam * exp(-b * N)
where

Note that the high-light equation calculates height growth, while the low-light equation calculates diameter growth. If the high-light equation is used, the amount of height growth is transformed into an amount of diameter growth with the help of the clAllometry class. Because of this arrangement, this behavior refuses to act as a diam only incrementer.

This behavior gets its light levels from the "Storm Light" grid object produced by clStormLight. It gets the number of years since the last storm from the "Storm Damage" grid object produced by clStorm. Both of these grids, and thus the behaviors that create them, are required.

The name string is "prstormbilevelgrowthshell". In the parameter file, call "PR storm bilevel growth".

Copyright 2006 Charles D. Canham.

Author:
Lora E. Murphy

Edit history:
-----------------
February 20, 2006 - Created (LEM)

Constructor & Destructor Documentation

clPRStormBiLevelGrowth::clPRStormBiLevelGrowth ( clSimManager p_oSimManager  ) 

Constructor.

Sets the namestring.

clPRStormBiLevelGrowth::~clPRStormBiLevelGrowth (  ) 

Destructor.

Frees memory.


Member Function Documentation

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

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

First this retrieves the light level in the tree's grid cell. If it is above the threshold, the high-light equation used. If it is below the threshold, the low-light equation is used.

In the case of tree life-history-stage transitions due to high-light height growth, this isn't going to be too smart. It will calculate a new height, then back-calculate a diameter, then return the difference between the existing and new diamter.

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 clPRStormBiLevelGrowth::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;
  • the storm behavior is missing (no "Storm Damage" grid); or
  • the storm light behavior is missing (no "Storm Light" grid)

Reimplemented from clGrowthBase.


Member Data Documentation

"Storm Light" grid object

"Storm Damage" 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.

High light growth equaiton "a" - sized number of behavior species.

High light growth equaiton "b" - 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.

Code for the "stormtime" data member of the "Storm Damage" grid.


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

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