SORTIE Core C++ Documentation
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
clStormDamageApplier Class Reference

Storm Damage Applier - Version 1.1. More...

#include <StormDamageApplier.h>

Inheritance diagram for clStormDamageApplier:
clBehaviorBase clWorkerBase

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...
 
clSimManagerGetSimManager ()
 
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

clGridmp_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...
 
stcSpeciesTypeCombomp_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...
 
clSimManagermp_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...
 

Detailed Description

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

P(i) = exp(ai + b*c*DBH^d) / (1+exp(ai + b*c*DBH^d))

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)

Constructor & Destructor Documentation

◆ clStormDamageApplier()

clStormDamageApplier::clStormDamageApplier ( clSimManager p_oSimManager)

Constructor.

Parameters
p_oSimManagerclSimManager object.

◆ ~clStormDamageApplier()

clStormDamageApplier::~clStormDamageApplier ( )

Destructor.

Member Function Documentation

◆ Action()

void clStormDamageApplier::Action ( )
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.

◆ FormatQueryString()

void clStormDamageApplier::FormatQueryString ( )
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.

◆ GetData()

void clStormDamageApplier::GetData ( xercesc::DOMDocument *  p_oDoc)
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.

Parameters
p_oDocParsed parameter file.
Exceptions
modelErrif the "Storm Damage" grid has not been created.

Implements clWorkerBase.

◆ GetParameterFileData()

void clStormDamageApplier::GetParameterFileData ( xercesc::DOMDocument *  p_oDoc)
protected

Reads parameter file data.

Parameters
p_oDocParsed parameter file.
Exceptions
modelErrif the value for m_iNumYearsToHeal is not greater than 0.

◆ RegisterTreeDataMembers()

void clStormDamageApplier::RegisterTreeDataMembers ( )
virtual

Registers the "stm_dmg" tree data member.

Exceptions
modelErrif this behavior has been applied to seedlings.

Reimplemented from clBehaviorBase.

Member Data Documentation

◆ m_cQuery

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

◆ m_iDmgIndexCode

int clStormDamageApplier::m_iDmgIndexCode
protected

Return code for the "1dmg_index" float data member of the "Storm Damage" grid.

◆ m_iNumTypes

int clStormDamageApplier::m_iNumTypes
protected

Number of total types (despite the fact that this behavior won't deal with all of them).

◆ m_iNumYearsToHeal

int clStormDamageApplier::m_iNumYearsToHeal
protected

Number of years damaged trees stay damaged.

From the parameter file.

◆ mp_fMinStormDBH

double* clStormDamageApplier::mp_fMinStormDBH
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.

◆ mp_fStmDBHCoeff

double* clStormDamageApplier::mp_fStmDBHCoeff
protected

Storm DBH coefficient (d).

Array size is total number of species. From the parameter file.

◆ mp_fStmDmgInterceptFull

double* clStormDamageApplier::mp_fStmDmgInterceptFull
protected

Storm damage intercept for complete damage (a).

Array size is total number of species. From the parameter file.

◆ mp_fStmDmgInterceptMed

double* clStormDamageApplier::mp_fStmDmgInterceptMed
protected

Storm damage intercept for medium damage (a).

Array size is total number of species. From the parameter file.

◆ mp_fStmIntensityCoeff

double* clStormDamageApplier::mp_fStmIntensityCoeff
protected

Storm intensity coefficient (b).

Array size is total number of species. From the parameter file.

◆ mp_iStmDmgCodes

int** clStormDamageApplier::mp_iStmDmgCodes
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.

◆ mp_oStormDamageGrid

clGrid* clStormDamageApplier::mp_oStormDamageGrid
protected

Pointer to the "Storm Damage" grid.

This grid is created by clStorm.


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