10 vector<double>::iterator its = S + n_statevars_system;
11 vector<double>::iterator itr = dSdt + n_statevars_system;
13 for (
int s = 0; s < species_vec.size(); ++s){
16 double pi0 = spp->
getX(spp->
J-1);
17 double N0 = spp->
getU(spp->
J-1);
25 double mb = m_mx[0], mortGrad = m_mx[1], gb = g_gx[0], growthGrad = g_gx[1];
30 birthFlux = calcSpeciesBirthFlux(s,t) * pe;
37 for (
int i=0; i<spp->
J-1; ++i){
50 double dN0 = -mb*N0 - mortGrad*pi0 + birthFlux;
51 double dpi0 = gb*N0 + growthGrad*pi0 - mb*pi0;
72 for (
auto spp : species_vec){
75 double pi0 = spp->getX(spp->J-1);
76 double N0 = spp->getU(spp->J-1);
79 double x0 = spp->xb + pi0/(N0+1e-12);
80 spp->setX(spp->J-1, x0);
81 spp->setU(spp->J-1, N0);
84 spp->initBoundaryCohort(current_time, env);
88 spp->setX(spp->J-1, 0);
89 spp->setU(spp->J-1, 0);
93 resizeStateFromSpecies();
101 for (
auto spp : species_vec){
102 spp->removeDeadCohorts(control.ebt_ucut);
105 resizeStateFromSpecies();
106 copyCohortsToState();
virtual double growthRate(int i, double x, double t, void *env)=0
virtual double getU(int i)=0
void removeDeadCohorts_EBT()
virtual double getX(int i)=0
virtual std::vector< double > mortalityRateGradient(int i, double x, double t, void *env, double grad_dx)=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_EBT(double t, std::vector< double >::iterator S, std::vector< double >::iterator dSdt)