SORTIE Core C++ Documentation
|
Storm Damage Applier - Version 1.1. More...
#include <StormDamageApplier.h>
Public Member Functions | |
clStormDamageApplier (clSimManager *p_oSimManager) | |
Constructor. More... | |
~clStormDamageApplier () | |
Destructor. More... | |
void | RegisterTreeDataMembers () |
Registers the "stm_dmg" tree data member. More... | |
void | GetData (xercesc::DOMDocument *p_oDoc) |
Does behavior setup. More... | |
void | Action () |
Applies storm damage to trees. 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... | |
clSimManager * | GetSimManager () |
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 Member Functions | |
void | GetParameterFileData (xercesc::DOMDocument *p_oDoc) |
Reads parameter file data. More... | |
void | FormatQueryString () |
Formats the string in m_cQuery. More... | |
Protected Member Functions inherited from clWorkerBase | |
void | AssembleFileCode (int iFileType, int iFileVersion, char *cCode) |
Creates the proper identifying filecode for an XML file. More... | |
Protected Attributes | |
clGrid * | mp_oStormDamageGrid |
Pointer to the "Storm Damage" grid. More... | |
char * | m_cQuery |
String to pass to clTreePopulation::Find() in order to get the trees to apply damage to. More... | |
double * | mp_fMinStormDBH |
The minimum DBH, in cm, for trees that can be damaged by storms. More... | |
double * | mp_fStmDmgInterceptMed |
Storm damage intercept for medium damage (a). More... | |
double * | mp_fStmDmgInterceptFull |
Storm damage intercept for complete damage (a). More... | |
double * | mp_fStmIntensityCoeff |
Storm intensity coefficient (b). More... | |
double * | mp_fStmDBHCoeff |
Storm DBH coefficient (d). More... | |
int ** | mp_iStmDmgCodes |
Return codes for the "stm_dmg" int tree data member. More... | |
int | m_iNumYearsToHeal |
Number of years damaged trees stay damaged. More... | |
int | m_iNumTypes |
Number of total types (despite the fact that this behavior won't deal with all of them). More... | |
int | m_iDmgIndexCode |
Return code for the "1dmg_index" float data member of the "Storm Damage" grid. 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... | |
stcSpeciesTypeCombo * | mp_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... | |
clSimManager * | mp_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... | |
Storm Damage Applier - Version 1.1.
The damage applier manages the population of trees that are storm-damaged. It adds new trees to the damaged population after storms have occurred, and removes trees from the damaged population (back to the healthy population) by keeping track of the time they have been damaged until a maximum has been reached. This behavior also keeps track of the damage category into which each tree falls (no damage, medium damage, and heavy damage).
Whether storms have occurred is assessed by clStorm. This behavior uses the values in the "Storm Damage" grid for storm severity, with 0 meaning that no storm has occurred.
A given tree's probability of damage in a given damage category is
where:
There is a minimum DBH for which to apply storms for each species. Set this to zero if storms apply to all trees.
This behavior will use a random number to determine what damage category a tree falls in. If rand <= P(d0), it's undamaged. If P(d0) < rand <= P(d1), it has medium damage. If P(d1) < rand <= 1, it has heavy damage.
If a tree is damaged, a flag is set with the damage category. Then a counter is set to count the time since damage. When the counter reaches the number of years that it takes a damaged tree to heal, the tree is undamaged once again.
If a live tree is already damaged and is damaged again (and survives again), it gets the most severe damage category that can apply to it and the damage counter is reset to the max time for tree healing again.
This behavior adds one tree data member: an int, "stm_dmg", which holds both the damage category and the amount of time left to heal. The possible damage category values are 0, 1, and 2 (no damage, medium damage, full damage). The value in stm_dmg will be x*1000 + count, where x is the damage category and count is the number of years since damage. So a full-damaged tree with 5 years on its counter has a stm_dmg value of 2005, and a medium-damaged tree with 8 years on its counter has a stm_dmg value of 1008. If a tree is undamaged, the value will be 0.
This behavior cannot be applied to seedlings. It can be applied to snags but they will be ignored. This is potentially a good tactic though, to allow clStormKiller to deal with snags.
The call string for this is "StormDamageApplier".
Edit history:
--------------—
October 20, 2011 - Wiped the slate clean for SORTIE 7.0 (LEM)
clStormDamageApplier::clStormDamageApplier | ( | clSimManager * | p_oSimManager | ) |
Constructor.
p_oSimManager | clSimManager object. |
clStormDamageApplier::~clStormDamageApplier | ( | ) |
Destructor.
|
virtual |
Applies storm damage to trees.
It uses the value in m_cQuery to get the trees to which this behavior applies. Then, for each tree, it will assess its damage based on the damage equation.
If a tree got no new damage but had existing damage, the healing time counter is reset to 0.
Reimplemented from clBehaviorBase.
|
protected |
Formats the string in m_cQuery.
This value will be used in Action() to pass to clTreePopulation::Find() in order to get the trees to act on.
|
virtual |
Does behavior setup.
It calls GetParameterFileData() to read in values from the parameter file. Then it calls FormatQueryString(). Then it gets a pointer to the "Storm Damage" grid.
p_oDoc | Parsed parameter file. |
modelErr | if the "Storm Damage" grid has not been created. |
Implements clWorkerBase.
|
protected |
Reads parameter file data.
p_oDoc | Parsed parameter file. |
modelErr | if the value for m_iNumYearsToHeal is not greater than 0. |
|
virtual |
Registers the "stm_dmg" tree data member.
modelErr | if this behavior has been applied to seedlings. |
Reimplemented from clBehaviorBase.
|
protected |
String to pass to clTreePopulation::Find() in order to get the trees to apply damage to.
This will instigate a species/type search for all the species and types to which this behavior applies.
|
protected |
Return code for the "1dmg_index" float data member of the "Storm Damage" grid.
|
protected |
Number of total types (despite the fact that this behavior won't deal with all of them).
|
protected |
Number of years damaged trees stay damaged.
From the parameter file.
|
protected |
The minimum DBH, in cm, for trees that can be damaged by storms.
Array size is total number of species. From the parameter file.
|
protected |
Storm DBH coefficient (d).
Array size is total number of species. From the parameter file.
|
protected |
Storm damage intercept for complete damage (a).
Array size is total number of species. From the parameter file.
|
protected |
Storm damage intercept for medium damage (a).
Array size is total number of species. From the parameter file.
|
protected |
Storm intensity coefficient (b).
Array size is total number of species. From the parameter file.
|
protected |
Return codes for the "stm_dmg" int tree data member.
This is the data member that this behavior is adding. Array index one is sized m_iNumTypes; array index two is sized total number of species.
|
protected |
Pointer to the "Storm Damage" grid.
This grid is created by clStorm.