NCIBase.h

00001 //---------------------------------------------------------------------------
00002 // NCIBase
00003 //---------------------------------------------------------------------------
00004 #if !defined(NCIBase_H)
00005   #define NCIBase_H
00006 
00007 class clTree;
00008 class clTreePopulation;
00009 class clPlot;
00010 
00112 class clNCIBase {
00113 
00114   protected:
00115 
00120   clNCIBase();
00121 
00125   ~clNCIBase();
00126 
00134   void DoNCISetup(clTreePopulation *p_oPop, int iNumBehaviorSpecies);
00135 
00139   float **mp_fLambda;
00140 
00145   float *mp_fAlpha;
00146 
00151   float *mp_fBeta;
00152 
00157   float *mp_fCrowdingSlope;
00158 
00163   float *mp_fCrowdingSteepness;
00164 
00167   float *mp_fMinimumNeighborDBH;
00168 
00173   float *mp_fXb;
00174 
00178   float *mp_fMaxPotentialValue;
00179 
00184   float *mp_fX0;
00185 
00190   float *mp_fShadingCoefficient;
00191 
00195   float *mp_fShadingExponent;
00196 
00203   float *mp_fMedDamageEta;
00204 
00211   float *mp_fFullDamageEta;
00212 
00217   float *mp_fGamma;
00218 
00223   float *mp_fMedDamageStormEff;
00224 
00229   float *mp_fFullDamageStormEff;
00230 
00236   float *mp_fMaxCrowdingRadius;
00237 
00240   float m_fDbhDivisor;
00241 
00247   short int **mp_iDamageCodes;
00248 
00253   short int **mp_iLightCodes;
00254 
00257   short int *mp_iIndexes;
00258 
00260   float m_fMinSaplingHeight;
00261 
00264   short int m_iNumTotalSpecies;
00265 
00268   short int m_iNumBehSpecies;
00269 
00271   bool m_bIncludeSnags;
00272 
00274   typedef float (clNCIBase::*Ptr2ShadingEffect)(clTree *);
00275 
00279   Ptr2ShadingEffect* mp_ShadingEffect;
00280 
00282   typedef float (clNCIBase::*Ptr2CalculateNCI)(clTree *, clTreePopulation *, clPlot *);
00283 
00286   Ptr2CalculateNCI* mp_NCI;
00287 
00289   typedef float (clNCIBase::*Ptr2CrowdingEffect)(const float&, const float&, const int&);
00290 
00294   Ptr2CrowdingEffect* mp_CrowdingEffect;
00295 
00296 
00299   float (clNCIBase::*DamageEffect)(clTree *);
00300 
00347   void SetFunctionPointers();
00348 
00365   float CalculateShadingEffect(clTree *p_oTree);
00366 
00373   float CalculateNoShadingEffect(clTree *p_oTree) {return 1.0;};
00374 
00391   float CalculateShadingEffectNoExp(clTree *p_oTree);
00392 
00415   float CalculateCrowdingEffect(const float &fDbh, const float &fNCI, const int &iSpecies);
00416 
00438   float CalculateCrowdingEffectNoExp(const float &fDbh, const float &fNCI, const int &iSpecies);
00439 
00458   float CalculateCrowdingEffectNoDbh(const float &fDbh, const float &fNCI, const int &iSpecies);
00459 
00478   float CalculateCrowdingEffectSimple(const float &fDbh, const float &fNCI, const int &iSpecies);
00479 
00492   float CalculateNCI(clTree *p_oTree, clTreePopulation *p_oPop, clPlot *p_oPlot);
00493 
00505   float CalculateNCINoEta(clTree *p_oTree, clTreePopulation *p_oPop, clPlot *p_oPlot);
00506 
00520   float CalculateNCINoDivisor(clTree *p_oTree, clTreePopulation *p_oPop, clPlot *p_oPlot);
00521 
00533   float CalculateNCINoEtaNoDivisor(clTree *p_oTree, clTreePopulation *p_oPop, clPlot *p_oPlot);
00534 
00541   float CalculateNoDamageEffect(clTree *p_oTree) {return 1.0;};
00542 
00552   float CalculateDamageEffect(clTree *p_oTree);
00553 };
00554 //---------------------------------------------------------------------------
00555 #endif // NCIBase_H

Generated on Thu Jan 26 13:44:34 2006 for SORTIE Core C++ Documentation by  doxygen 1.4.6-NO