FIMS  v0.8.0
Loading...
Searching...
No Matches
recruitment_base.hpp
Go to the documentation of this file.
1
10#ifndef FIMS_POPULATION_DYNAMICS_RECRUITMENT_BASE_HPP
11#define FIMS_POPULATION_DYNAMICS_RECRUITMENT_BASE_HPP
12
13#include <cmath> // for using std::pow and M_PI
14
15#include "../../../common/fims_math.hpp" // for using fims_math::log()
16#include "../../../common/fims_vector.hpp"
17#include "../../../common/model_object.hpp"
18#include "../../../distributions/distributions.hpp"
19
20namespace fims_popdy {
21
27template <class Type>
29 static uint32_t id_g;
33 bool constrain_deviations = false;
45 int process_id = -999;
46 std::shared_ptr<fims_popdy::RecruitmentBase<Type>>
48 std::shared_ptr<fims_popdy::RecruitmentBase<Type>>
54
55 virtual ~RecruitmentBase() {}
56
61 void Prepare() {
62 // this->PrepareConstrainedDeviations();
64 0.0);
65 }
66
73 virtual const Type evaluate_mean(
74 const Type &spawners,
75 const Type &ssbzero) = 0; // need to add input parameter values
76
81 virtual const Type evaluate_process(size_t pos) = 0;
82
90 if (!this->constrain_deviations) {
91 return;
92 }
93
94 Type sum = static_cast<Type>(0.0);
95
96 for (size_t i = 0; i < this->log_recruit_devs.size(); i++) {
97 sum += this->log_recruit_devs[i];
98 }
99
100 for (size_t i = 0; i < this->log_recruit_devs.size(); i++) {
101 this->log_recruit_devs[i] -= sum / (this->log_recruit_devs.size());
102 }
103 }
104};
105
106template <class Type>
108} // namespace fims_popdy
109
110#endif /* FIMS_POPULATION_DYNAMICS_RECRUITMENT_BASE_HPP */
Definition fims_vector.hpp:27
size_type size() const
Returns the number of elements.
Definition fims_vector.hpp:273
The population dynamics of FIMS.
Definition catch_at_age.hpp:41
void clear_internal()
Clears the internal objects.
Definition rcpp_interface.hpp:279
FIMSObject struct that defines member types and returns the unique id.
Definition model_object.hpp:25
Base class for all recruitment functors.
Definition recruitment_base.hpp:28
virtual const Type evaluate_process(size_t pos)=0
Handle error in recruitment.
fims::Vector< Type > log_rzero
Definition recruitment_base.hpp:36
virtual const Type evaluate_mean(const Type &spawners, const Type &ssbzero)=0
Calculates the expected recruitment for a given spawning input.
static uint32_t id_g
Definition recruitment_base.hpp:29
void PrepareConstrainedDeviations()
Prepare constrained recruitment deviations. Based on ADMB sum-to-zero constraint implementation....
Definition recruitment_base.hpp:89
void Prepare()
Prepares the recruitment deviations vector.
Definition recruitment_base.hpp:61
bool estimate_log_recruit_devs
Definition recruitment_base.hpp:42
bool constrain_deviations
Definition recruitment_base.hpp:33
fims::Vector< Type > log_r
Definition recruitment_base.hpp:38
fims::Vector< Type > log_expected_recruitment
Definition recruitment_base.hpp:40
int process_id
Definition recruitment_base.hpp:45
std::shared_ptr< fims_popdy::RecruitmentBase< Type > > process
Definition recruitment_base.hpp:47
std::shared_ptr< fims_popdy::RecruitmentBase< Type > > recruitment
Definition recruitment_base.hpp:49
RecruitmentBase()
Constructor.
Definition recruitment_base.hpp:53
fims::Vector< Type > log_recruit_devs
Definition recruitment_base.hpp:31