00001 //--------------------------------------------------------------------------- 00002 00003 #ifndef NCIBAGrowthH 00004 #define NCIBAGrowthH 00005 //--------------------------------------------------------------------------- 00006 #include "GrowthBase.h" 00007 00008 class clSimManager; 00009 class clTree; 00010 class clTreePopulation; 00011 class DOMDocument; 00012 00077 class clNCIBAGrowth : virtual public clGrowthBase { 00078 //note: need the virtual keyword to avoid base class ambiguity. 00079 00080 public: 00081 00086 clNCIBAGrowth(clSimManager *p_oSimManager); 00087 00091 ~clNCIBAGrowth(); 00092 00102 float CalcDiameterGrowthValue(clTree *p_oTree, clTreePopulation *p_oPop, float fHeightGrowth); 00103 00126 void PreGrowthCalcs( clTreePopulation *p_oPop ); 00127 00140 void DoShellSetup(xercesc::DOMDocument *p_oDoc); 00141 00150 void SetNameData(char *cNameString); 00151 00152 protected: 00153 00157 short int **mp_iGrowthCodes; 00158 00162 float *mp_fCrowdingSlope; 00163 00167 float *mp_fCrowdingSteepness; 00168 00174 float *mp_fMaxCrowdingRadius; 00175 00178 float *mp_fMinimumNeighborDBH; 00179 00184 float *mp_fXb; 00185 00189 float *mp_fMaxPotentialValue; 00190 00194 float *mp_fX0; 00195 00200 float *mp_fGamma; 00201 00203 short int *mp_iIndexes; 00204 00206 short int *mp_iWhatBehaviorTypes; 00207 00209 float m_fMinSaplingHeight; 00210 00212 short int m_iNumBehaviorTypes; 00213 00216 short int m_iNumTotalSpecies; 00217 00228 void ValidateData(); 00229 00236 void GetGrowthCodes(); 00237 00246 float GetBasalAreas(clTree *p_oTarget, clTreePopulation *p_oPop); 00247 00254 void ReadParameterFile( xercesc::DOMDocument *p_oDoc ); 00255 00260 void AssembleUniqueTypes(); 00261 }; 00262 //--------------------------------------------------------------------------- 00263 #endif