1#ifndef SENESCENCE_COEFFICIENT_LOGISTIC_H
2#define SENESCENCE_COEFFICIENT_LOGISTIC_H
4#include "../framework/module.h"
5#include "../framework/state_map.h"
49double ksene(
double rate,
double alpha,
double beta,
double DVI);
55 state_map
const& input_quantities,
56 state_map* output_quantities)
60 DVI{get_input(input_quantities,
"DVI")},
61 alphaSeneStem{get_input(input_quantities,
"alphaSeneStem")},
62 alphaSeneLeaf{get_input(input_quantities,
"alphaSeneLeaf")},
63 betaSeneStem{get_input(input_quantities,
"betaSeneStem")},
64 betaSeneLeaf{get_input(input_quantities,
"betaSeneLeaf")},
65 rateSeneLeaf{get_input(input_quantities,
"rateSeneLeaf")},
66 rateSeneStem{get_input(input_quantities,
"rateSeneStem")},
67 alphaSeneRoot{get_input(input_quantities,
"alphaSeneRoot")},
68 alphaSeneRhizome{get_input(input_quantities,
"alphaSeneRhizome")},
69 betaSeneRoot{get_input(input_quantities,
"betaSeneRoot")},
70 betaSeneRhizome{get_input(input_quantities,
"betaSeneRhizome")},
71 rateSeneRoot{get_input(input_quantities,
"rateSeneRoot")},
72 rateSeneRhizome{get_input(input_quantities,
"rateSeneRhizome")},
75 kSeneStem_op{get_op(output_quantities,
"kSeneStem")},
76 kSeneLeaf_op{get_op(output_quantities,
"kSeneLeaf")},
77 kSeneRoot_op{get_op(output_quantities,
"kSeneRoot")},
78 kSeneRhizome_op{get_op(output_quantities,
"kSeneRhizome")}
83 static std::string
get_name() {
return "senescence_coefficient_logistic"; }
88 const double& alphaSeneStem;
89 const double& alphaSeneLeaf;
90 const double& betaSeneStem;
91 const double& betaSeneLeaf;
92 const double& rateSeneLeaf;
93 const double& rateSeneStem;
94 const double& alphaSeneRoot;
95 const double& alphaSeneRhizome;
96 const double& betaSeneRoot;
97 const double& betaSeneRhizome;
98 const double& rateSeneRoot;
99 const double& rateSeneRhizome;
102 double* kSeneStem_op;
103 double* kSeneLeaf_op;
104 double* kSeneRoot_op;
105 double* kSeneRhizome_op;
108 void do_operation() const override final;
140void senescence_coefficient_logistic::do_operation()
const
142 double kSeneStem =
ksene(rateSeneStem, alphaSeneStem, betaSeneStem, DVI);
143 double kSeneLeaf =
ksene(rateSeneLeaf, alphaSeneLeaf, betaSeneLeaf, DVI);
144 double kSeneRoot =
ksene(rateSeneRoot, alphaSeneRoot, betaSeneRoot, DVI);
145 double kSeneRhizome =
ksene(rateSeneRhizome, alphaSeneRhizome, betaSeneRhizome, DVI);
148 update(kSeneStem_op, kSeneStem);
149 update(kSeneLeaf_op, kSeneLeaf);
150 update(kSeneRoot_op, kSeneRoot);
151 update(kSeneRhizome_op, kSeneRhizome);
154double ksene(
double rate,
double alpha,
double beta,
double DVI)
156 double kSene = rate / (1.0 + exp(alpha + beta * DVI));
Calculates coefficients representing fraction of biomass senesced for each organ; coefficents are rep...
static string_vector get_outputs()
static string_vector get_inputs()
static std::string get_name()
senescence_coefficient_logistic(state_map const &input_quantities, state_map *output_quantities)
This is the standard BioCro module library; it includes the essential modules used in typical BioCro ...
double ksene(double rate, double alpha, double beta, double DVI)