clNCIMort Class Reference

NCI Mortality - Version 2.0. More...

#include <NCIMort.h>

Inheritance diagram for clNCIMort:

clMortalityBase clNCIBase clBehaviorBase clWorkerBase

List of all members.

Public Member Functions

 clNCIMort (clSimManager *p_oSimManager)
 Constructor.
 ~clNCIMort ()
 Destructor.
whyDead DoMort (clTree *p_oTree, const float &fDbh, const short int &iSpecies)
 Determines mortality for a tree.
void DoShellSetup (xercesc::DOMDocument *p_oDoc)
 Performs behavior setup.
void PreMortCalcs (clTreePopulation *p_oPop)
 Performs calculations before any trees have been killed.

Protected Member Functions

void ValidateData ()
 Makes sure all input data is valid.
void ReadParameterFile (xercesc::DOMDocument *p_oDoc)
 Reads data from the parameter file.
void GetTreeMemberCodes ()
 Gets the return codes for needed tree data members.
void FormatQuery ()
 Populates m_cQuery with the query for getting NCI trees.

Protected Attributes

short int ** mp_iDeadCodes
 Return codes for the "dead" tree int data member variable.
float m_fNumberYearsPerTimestep
 Number of years per timestep.
char * m_cQuery
 Query string to get NCI trees.


Detailed Description

NCI Mortality - Version 2.0.

This is a mortality shell object which applies an NCI (neighborhood competition index) function to assess probability of survival.

The function for annual survival probability:

Survival probability = Max Probability * Damage Effect * Size Effect * Crowding Effect * Shading Effect

All NCI calculations are performed according to clNCIBase.

The annual survival probability is compounded for multi-year timesteps by taking it to the X power, where X is the number of years per timestep.

This is a generic behavior. It is expected that not all terms in the equation will be used. A user can turn off some of the terms by setting key parameters to 0 or 1. To be efficient, this behavior looks for this and has several alternate function forms to avoid extra math. It calls the correct function form through function pointers, which it sets during setup.

The namestring for this class is "ncimortshell". The parameter file call string is "NCI Mortality".

This behavior adds a new boolean data member called "NCI Mort". This holds the result of the mortality calculation that happens before the main mortality process. This is so neighbors that die this timestep aren't artificially excluded from the NCI calculation.

This behavior can only be applied to saplings and adults.

If the user is using damage parameters, this behavior must be used in conjunction with the storm damage behavior. If the user is using shading, then this must be used in conjunction with a light behavior.

Copyright 2003 Charles D. Canham.

Author:
Lora E. Murphy

Edit history:
-----------------
October 4, 2004 - Created (LEM)
March 14, 2005 - Generalized the NCI function, removed all references to "Puerto Rico", and updated to version 2.0. (LEM)
April 5, 2005 - Added pre-mortality calculation for NCI. Version 2.0 retained because it had not yet been released. (LEM)
February 5, 2008 - Changed ValidateData to not require crowding effect (LEM)
February 8, 2008 - Changed mortality flags from simple booleans to reason codes (LEM)

Constructor & Destructor Documentation

clNCIMort::clNCIMort ( clSimManager p_oSimManager  ) 

Constructor.

Parameters:
p_oSimManager Sim Manager object.

clNCIMort::~clNCIMort (  ) 

Destructor.

Frees memory.


Member Function Documentation

whyDead clNCIMort::DoMort ( clTree p_oTree,
const float &  fDbh,
const short int &  iSpecies 
) [virtual]

Determines mortality for a tree.

Parameters:
p_oTree Tree being evaluated.
fDbh DBH of tree being evaluated.
iSpecies Species of tree being evaluated.
Returns:
natural if the tree is to die, notdead if it lives.

Implements clMortalityBase.

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

Performs behavior setup.

First, ReadParameterFile() is called to read the parameter file's data. Then ValidateData() is called to validate the data. Then GetTreeMemberCodes() is called to get tree data return codes.

Parameters:
p_oDoc DOM tree of parsed input tree.

Reimplemented from clMortalityBase.

void clNCIMort::PreMortCalcs ( clTreePopulation p_oPop  )  [virtual]

Performs calculations before any trees have been killed.

This finds all trees to which this behavior applies and performs their NCI calculations. Then, having done all that work, this function goes ahead and assesses the tree's mortality. Whether it lives or dies is then stashed in the "NCI Mort" bool tree data member.

Parameters:
p_oPop Tree population.

Reimplemented from clMortalityBase.

void clNCIMort::ValidateData (  )  [protected]

Makes sure all input data is valid.

The following must all be true:

  • Max. radius of Crowding Effects must be > 0
  • Max probability of survival for each species must be 0-1
  • X0 (Size effect mode) for each species must not = 0
  • Xb (Size effect variance) for each species must not = 0
  • Eta for each species for each damage category beyond undamaged must be between 0 and 1
  • Storm Effect parameters for each species for each damage category beyond undamaged must be between 0 and 1
  • Minimum neighbor DBH must not be less than 0
Exceptions:
modelErr if any of the above conditions are not met.

void clNCIMort::ReadParameterFile ( xercesc::DOMDocument *  p_oDoc  )  [protected]

Reads data from the parameter file.

Parameters:
p_oDoc DOM tree of parsed input tree.
Exceptions:
modelErr if this behavior has been applied to any types except sapling and adult.

void clNCIMort::GetTreeMemberCodes (  )  [protected]

Gets the return codes for needed tree data members.

This declares and populates the mp_iDamageCodes array with the return codes for the "stm_dmg" tree int data member, and does the same for the mp_iLightCodes array and the "Light" tree float data member for any species which uses the shading effect (shading coefficient != 0).

Exceptions:
modelErr if a light code comes back -1 for any species which uses the shading effect.

void clNCIMort::FormatQuery (  )  [protected]

Populates m_cQuery with the query for getting NCI trees.


Member Data Documentation

short int** clNCIMort::mp_iDeadCodes [protected]

Return codes for the "dead" tree int data member variable.

Array size is number of species by number of tree types (even if not every species and type is represented).

Number of years per timestep.

From sim manager

char* clNCIMort::m_cQuery [protected]

Query string to get NCI trees.


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

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