00001
00002
00003 #ifndef DisperseOrgH
00004 #define DisperseOrgH
00005
00006 #include <xercesc/dom/dom.hpp>
00007 class clDisperseBase;
00008 class xercesc::DOMDocument;
00009 class clSimManager;
00010 class clTreePopulation;
00011 class clGridBase;
00012 class clModelMath;
00013
00046 class clDisperseOrg {
00047 public:
00048
00052 ~clDisperseOrg();
00053
00060 clDisperseOrg(clDisperseBase *p_oHookedShell);
00061
00068 void DoDisperse();
00069
00082 void DoSetup(clSimManager *p_oSimManager, xercesc::DOMDocument *p_oDoc);
00083
00084 protected:
00085
00087 clGridBase *mp_oSeedsGrid;
00088
00093 clDisperseBase **mp_oDispObjects;
00094
00095 float
00099 *mp_fRandParameter;
00100
00101 short int *mp_iCodes;
00104 int m_iNumDispObjects;
00105 int m_iTotalSpecies;
00108 enum seedAdjustment {
00109 deterministic,
00110 poisson,
00111 lognormal,
00112 normal,
00113 negative_binomial
00114 } m_iSeedDistributionMethod;
00116 bool m_bHooked;
00125 void GetDisperseObjects(clSimManager *p_oSimManager);
00126
00137 void GetParameterFileData(clSimManager *p_oSimManager, xercesc::DOMDocument *p_oDoc);
00138
00144 void GetSeedGridObject(clSimManager *p_oSimManager);
00145
00150 void AdjustSeedNumbers();
00151
00159 float DeterministicAdjust(float fNumber, int iSpecies);
00160
00168 float NormalAdjust(float fNumber, int iSpecies);
00169
00177 float LognormalAdjust(float fNumber, int iSpecies);
00178
00186 float PoissonAdjust(float fNumber, int iSpecies);
00187
00195 float NegativeBinomialAdjust(float fNumber, int iSpecies);
00196
00201 void SetFunctionPointer();
00202
00204 float (clDisperseOrg::*Adjust)(float fNumber, int iSpecies);
00205
00206 };
00207
00208 #endif