Program Listing for File AnalyticalSpeciesAbundancesHandler.h¶
↰ Return to documentation for file (necsim/AnalyticalSpeciesAbundancesHandler.h
)
// This file is part of necsim project which is released under MIT license.
// See file **LICENSE.txt** or visit https://opensource.org/licenses/MIT) for full license details.
#ifndef ANALYICAL_SPECIES_ABUNDANCES_H
#define ANALYICAL_SPECIES_ABUNDANCES_H
#include "SpeciesAbundancesHandler.h"
#include "neutral_analytical.h"
#include "RNGController.h"
namespace na = neutral_analytical;
using namespace std;
namespace necsim
{
class AnalyticalSpeciesAbundancesHandler : public virtual SpeciesAbundancesHandler
{
protected:
unsigned long seen_no_individuals;
// Store all previous species ids in a map of cumulative numbers of individuals for searching for ids
map<unsigned long, unsigned long> ind_to_species;
public:
AnalyticalSpeciesAbundancesHandler();
~AnalyticalSpeciesAbundancesHandler() override = default;
void setup(shared_ptr<RNGController> random, const unsigned long &metacommunity_size,
const long double &speciation_rate, const unsigned long &local_community_size) override;
void generateSpeciesAbundances();
unsigned long getRandomSpeciesID() override;
unsigned long pickPreviousIndividual(const unsigned long &individual_id);
void addNewSpecies();
unsigned long getRandomAbundanceOfSpecies();
};
}
#endif //ANALYICAL_SPECIES_ABUNDANCES_H