00001 //--------------------------------------------------------------------------- 00002 // WeibullSnagMort 00003 //--------------------------------------------------------------------------- 00004 #if !defined(WeibullSnagMort_H) 00005 #define WeibullSnagMort_H 00006 00007 #include "MortalityBase.h" 00039 class clWeibullSnagMort : virtual public clMortalityBase { 00040 //note: need the virtual keyword to avoid base class ambiguity. 00041 00042 public: 00043 00047 clWeibullSnagMort(clSimManager *p_oSimManager); 00048 00052 ~clWeibullSnagMort(); 00053 00064 void DoShellSetup(xercesc::DOMDocument *p_oDoc); 00065 00079 bool DoMort(clTree *p_oTree, const float &fDbh, const short int &iSpecies); 00080 00081 protected: 00082 00083 float ***mp_fProbabilityOfDeath; 00086 float **mp_fAParameter; 00088 float **mp_fBParameter; 00090 float **mp_fSnagSizeClasses; 00094 float m_fNumYearsPerTimestep; 00095 short int *mp_iAgeCodes; 00097 short int *mp_iIndexes; 00100 short int m_iMaxPrecalcAge; 00102 short int m_iNumSizeClasses; 00122 void ReadParameterFile(xercesc::DOMDocument *p_oDoc); 00123 00129 void FillDeathProbArray(); 00130 00149 float CalculateDeathProbability(int iSizeClass, int iSpecies, int iAge); 00150 00155 void GetAgeCodes(); 00156 00162 void ValidateTypes(); 00163 }; 00164 00165 //--------------------------------------------------------------------------- 00166 #endif // WeibullSnagMort_H