15 vector<double>::iterator its = S + n_statevars_system;
16 vector<double>::iterator itr = dSdt + n_statevars_system;
18 for (
int s = 0; s<species_vec.size(); ++s){
20 cout <<
"calcRates(species = " << s <<
")\n";
25 double birthFlux = calcSpeciesBirthFlux(s,t) * pe;
26 spp->
set_ub(birthFlux/(gb+1e-20));
33 for (
int i=0; i<spp->
J; ++i){
34 double x = spp->
getX(i);
38 if (!use_log_densities) du *= spp->
getU(i);
59 cout <<
".......... add cohorts ...............\n";
60 updateEnv(current_time, state.begin(), rates.begin());
62 for (
int s = 0; s< species_vec.size(); ++s){
63 auto spp = species_vec[s];
66 double gb = spp->growthRate(-1, spp->xb, current_time, env);
67 double pe = spp->establishmentProbability(current_time, env);
68 if (spp->birth_flux_in < 0){
69 double birthFlux = calcSpeciesBirthFlux(s,current_time) * pe;
70 spp->set_ub(birthFlux/(gb+1e-20));
73 spp->calc_boundary_u(gb, pe);
76 spp->initBoundaryCohort(current_time, env);
80 resizeStateFromSpecies();
87 for (
auto& spp : species_vec){
88 if (spp->J > control.max_cohorts)
89 spp->removeDensestCohort();
92 resizeStateFromSpecies();
94 cout <<
"........................................\n";
virtual double growthRate(int i, double x, double t, void *env)=0
virtual double getU(int i)=0
virtual void set_ub(double _ub)=0
virtual double getX(int i)=0
virtual void getExtraRates(std::vector< double >::iterator &it)=0
virtual double establishmentProbability(double t, void *env)=0
virtual double mortalityRate(int i, double x, double t, void *env)=0
virtual double calc_boundary_u(double gb, double pe)=0
virtual std::vector< double > growthRateGradient(int i, double x, double t, void *env, double grad_dx)=0
void calcRates_CM(double t, std::vector< double >::iterator S, std::vector< double >::iterator dSdt)