Allometry.h

00001 //---------------------------------------------------------------------------
00002 
00003 #ifndef AllometryH
00004 #define AllometryH
00005 
00006 
00007 #include <math.h>
00008 #include "TreePopulation.h"
00009 
00029 class clAllometry {
00030 
00031   public:
00033   enum iHeightDiamFunction {
00034     standard, 
00035     linear, 
00036     reverse_linear, 
00037     power 
00038   };
00039 
00041   enum iCrownRadDiamFunction {
00042     standard_cr, 
00043     chapman_richards_cr 
00044   };
00045 
00047   enum iCrownHtDiamFunction {
00048     standard_ch, 
00049     chapman_richards_ch 
00050   };
00051 
00055   clAllometry();
00056 
00060   ~clAllometry();
00061 
00067   void GetData(xercesc::DOMDocument *p_oDoc, clTreePopulation *p_oPop);
00068 
00076   float GetMaxTreeHeight(int iSpecies);
00077 
00086   float CalcAdultHeight( const float &fDbh, const int &iSpecies );
00087 
00097   float CalcAdultDbh( float fHeight, const int &iSpecies );
00098 
00107   float CalcAdultCrownRadius( const float &fDbh, const int &iSpecies );
00108 
00117   float CalcAdultCrownHeight(float fHeight, const int &iSpecies);
00118 
00127   float CalcSaplingHeight(const float &fDbh, const int &iSpecies);
00128 
00138   float CalcSaplingDbh( float fHeight, const int &iSpecies );
00139 
00148   float CalcSaplingCrownRadius( const float &fDbh, const int &iSpecies );
00149 
00158   float CalcSaplingCrownHeight(float fHeight, const int &iSpecies);
00159 
00168   float CalcSeedlingHeight( float fDiam10, const int &iSpecies );
00169 
00179   float CalcSeedlingDiam10( float fHeight, const int &iSpecies );
00180 
00191   float ConvertDiam10ToDbh( float fDiam10, const int &iSpecies );
00192 
00203   float ConvertDbhToDiam10( const float &fDbh, const int &iSpecies );
00204 
00209   float GetMaxCrownRadius() {return m_fMaxCrownRad;};
00210 
00211   protected:
00212 
00214   typedef float (clAllometry::*Ptr2Allometry)(const float&, const int&);
00215 
00218   Ptr2Allometry* mp_AdultHeight;
00219 
00222   Ptr2Allometry* mp_AdultDiam;
00223 
00226   Ptr2Allometry* mp_AdultCrownRad;
00227 
00230   Ptr2Allometry* mp_AdultCrownHeight;
00231 
00234   Ptr2Allometry* mp_SaplingHeight;
00235 
00238   Ptr2Allometry* mp_SaplingDiam;
00239 
00242   Ptr2Allometry* mp_SaplingCrownRad;
00243 
00246   Ptr2Allometry* mp_SaplingCrownHeight;
00247 
00250   Ptr2Allometry* mp_SeedlingHeight;
00251 
00254   Ptr2Allometry* mp_SeedlingDiam;
00255 
00258   float *mp_fMaxTreeHeight;
00259 
00261   float *mp_fAsympCrownRad;
00262 
00264   float *mp_fCrownRadExp;
00265 
00268   float *mp_fDbhToDiam10Slope;
00269 
00272   float *mp_fDbhToDiam10Intercept;
00273 
00275   float *mp_fAsympCrownHeight;
00276 
00278   float *mp_fCrownHeightExp;
00279 
00282   float *mp_fSlopeHeightDiam10;
00283 
00285   float *mp_fSlopeAsympHeight;
00286 
00289   float *mp_fAdultLinearSlope;
00290 
00293   float *mp_fAdultLinearIntercept;
00294 
00297   float *mp_fAdultReverseLinearSlope;
00298 
00301   float *mp_fAdultReverseLinearIntercept;
00302 
00305   float *mp_fSaplingLinearSlope;
00306 
00309   float *mp_fSaplingLinearIntercept;
00310 
00313   float *mp_fSaplingReverseLinearSlope;
00314 
00317   float *mp_fSaplingReverseLinearIntercept;
00318 
00321   float *mp_fSeedlingLinearSlope;
00322 
00325   float *mp_fSeedlingLinearIntercept;
00326 
00329   float *mp_fSeedlingReverseLinearSlope;
00330 
00333   float *mp_fSeedlingReverseLinearIntercept;
00334 
00337   float *mp_fCRCrownRadIntercept;
00338 
00341   float *mp_fCRAsympCrownRad;
00342 
00345   float *mp_fCRCrownRadShape1;
00346 
00349   float *mp_fCRCrownRadShape2;
00350 
00353   float *mp_fCRCrownHtIntercept;
00354 
00357   float *mp_fCRAsympCrownHt;
00358 
00361   float *mp_fCRCrownHtShape1;
00362 
00365   float *mp_fCRCrownHtShape2;
00366 
00368   float *mp_fPowerA;
00369 
00371   float *mp_fPowerExpB;
00372 
00374   float m_fMaxStdCrownRad;
00375 
00377   float m_fMaxCrownRad;
00378 
00380   int m_iNumSpecies;
00381 
00382 
00395   float CalcStandardSapAdultHeight(const float &fDbh, const int &iSpecies);
00396 
00408   float CalcLinearAdultHeight(const float &fDbh, const int &iSpecies );
00409 
00421   float CalcReverseLinearAdultHeight(const float &fDbh, const int &iSpecies );
00422 
00434   float CalcLinearSaplingHeight(const float &fDbh, const int &iSpecies );
00435 
00448   float CalcReverseLinearSaplingHeight(const float &fDbh, const int &iSpecies );
00449 
00462   float CalcPowerSaplingHeight(const float &fDbh, const int &iSpecies );
00463 
00475   float CalcStandardSeedlingHeight( const float &fDiam10, const int &iSpecies );
00476 
00488   float CalcLinearSeedlingHeight(const float &fDiam10, const int &iSpecies );
00489 
00501   float CalcReverseLinearSeedlingHeight(const float &fDiam10, const int &iSpecies );
00502 
00514   float CalcStandardSapAdultDbh( const float &fHeight, const int &iSpecies );
00515 
00526   float CalcLinearAdultDbh(const float &fHeight, const int &iSpecies );
00527 
00539   float CalcReverseLinearAdultDbh(const float &fHeight, const int &iSpecies );
00540 
00551   float CalcLinearSaplingDbh(const float &fHeight, const int &iSpecies );
00552 
00564   float CalcReverseLinearSaplingDbh(const float &fHeight, const int &iSpecies );
00565 
00577   float CalcPowerSaplingDbh(const float &fHeight, const int &iSpecies );
00578 
00591   float CalcStandardSeedlingDiam10( const float &fHeight, const int &iSpecies );
00592 
00603   float CalcLinearSeedlingDiam10(const float &fHeight, const int &iSpecies );
00604 
00616   float CalcReverseLinearSeedlingDiam10(const float &fHeight, const int &iSpecies );
00617 
00629   float CalcStandardSapAdultCrownRad(const float &fDbh, const int &iSpecies);
00630 
00643   float CalcChapRichSapAdultCrownRad(const float &fDbh, const int &iSpecies);
00644 
00656   float CalcStandardSapAdultCrownHeight(const float &fHeight, const int &iSpecies);
00657 
00670   float CalcChapRichSapAdultCrownHeight(const float &fHeight, const int &iSpecies);
00671 }; //end of class clAllometry
00672 
00673 
00674 //---------------------------------------------------------------------------
00675 #endif

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