00001 //--------------------------------------------------------------------------- 00002 00003 #ifndef AbsoluteGrowthH 00004 #define AbsoluteGrowthH 00005 //--------------------------------------------------------------------------- 00006 #include "MichMenGrowthBase.h" 00007 00056 //note: need the virtual keyword to avoid base class ambiguity. 00057 class clAbsoluteGrowth : virtual public clMichMenBase { 00058 00059 public: 00060 00065 clAbsoluteGrowth(clSimManager *p_oSimManager); 00066 00070 ~clAbsoluteGrowth(); 00071 00079 float CalcDiameterGrowthValue(clTree *p_oTree, clTreePopulation *p_oPop, float fHeightGrowth); 00080 00089 void SetNameData(char *cNameString); 00090 00099 void DoShellSetup(xercesc::DOMDocument *p_oDoc); 00100 00104 void RegisterTreeDataMembers(); 00105 00106 protected: 00109 float *mp_fLengthLastSuppFactor; 00110 00113 float *mp_fLengthCurrReleaseFactor; 00114 00117 float *mp_fGliThreshold; 00118 00120 float m_fMortRateAtSuppression; 00121 00123 float m_fNumberYearsPerTimestep; 00124 00126 int m_iYrsExceedThresholdBeforeSup; 00127 00130 int m_iMaxYears; 00131 00134 struct stcCodes { 00135 short int *p_iCodes, 00136 iType; 00137 } *mp_ylrCodes, 00138 *mp_ylsCodes; 00140 short int m_iNumBehaviorTypes; 00148 void CalculateSuppressionThresholds(xercesc::DOMDocument *p_oDoc, 00149 clTreePopulation *p_oPop); 00150 00166 float CalculateSuppressionFactor(clTree *p_oTree, const float &fGli); 00167 }; 00168 //--------------------------------------------------------------------------- 00169 #endif