LandscapeDNDC 1.37.0
vocniinemets.h
1
8#ifndef LM_PHYSIOLOGY_VOCNIINEMETS_H_
9#define LM_PHYSIOLOGY_VOCNIINEMETS_H_
10
11#include "mbe_legacymodel.h"
12#include "state/mbe_state.h"
13
14namespace ldndc {
15
16class LDNDC_API PhysiologyVOCNIINEMETS : public MBE_LegacyModel
17{
18 LMOD_EXPORT_MODULE_INFO(PhysiologyVOCNIINEMETS,"physiology:vocniinemets","Physiology VOCNIINEMETS");
19
20 /*** module specific constants ***/
21
23 static double const SCALINGCONSTJ;
25 static double const DELTASJ;
27 static double const DELTAHAJ;
29 static double const DELTAHDJ;
31 static double const COST;
33 static double const P1_IS;
35 static double const P2_IS;
37 static double const P3_IS;
39 static double const P1_MT;
41 static double const P2_MT;
43 static double const P3_MT;
45 static double const TEMP0;
47 static double const PPFD0;
48
49 public:
50 PhysiologyVOCNIINEMETS( MoBiLE_State *,
51 cbm::io_kcomm_t *, timemode_e);
52
53 ~PhysiologyVOCNIINEMETS();
54
55 lerr_t configure(
56 ldndc::config_file_t const *);
57
58 lerr_t initialize();
59
60 lerr_t solve();
61
62 lerr_t finalize() { return LDNDC_ERR_OK; }
63
64 lerr_t sleep() { return LDNDC_ERR_OK; }
65 lerr_t wake() { return LDNDC_ERR_OK; }
66
67 private:
68
69 input_class_setup_t const & m_setup;
70 /* required state components */
71 substate_airchemistry_t * ac;
72 substate_microclimate_t * mc;
73 substate_physiology_t * phys;
74
75 MoBiLE_PlantVegetation * m_veg;
76
77 struct emi_isoprene_t {};
78 struct emi_monoterpene_t {};
79 struct niinemets_coeff_t
80 {
81 size_t foliage_layer;
82
83 /* relation between light in a canopy layer and light above the canopy */
84 double qefirad;
85
86 double DELTAS;
87 double DELTAHA;
88 double DELTAHD;
89 double P1;
90 double P2;
91 double P3;
92 double scale_EMI;
93 double emiBasal;
94
95 bool is_iso;
96
97 niinemets_coeff_t(
98 emi_isoprene_t, MoBiLE_Plant const &);
99 niinemets_coeff_t(
100 emi_monoterpene_t, MoBiLE_Plant const &);
101 };
102 double getNiinemetsScalingCoefficient(
103 niinemets_coeff_t const *, MoBiLE_Plant const &) const;
104
105
106 struct niinemets_iso_t
107 {
108 /* isoprene emission under standard conditions (umolC gDW-1 s-1) */
109 double isoBasal;
110 /* isoprene emission (umol m-2 s-1) */
111 double isoEph;
112
113 niinemets_iso_t();
114 };
115 struct niinemets_mono_t
116 {
117 /* monoterpene emission under standard conditions (umolC gDW-1 s-1) */
118 double monoBasal;
119 /* monoterpene emission (umol m-2 s-1) */
120 double monoEph;
121
122 niinemets_mono_t();
123 };
124
125 void niinemetsIsoprene(
126 niinemets_iso_t *, niinemets_coeff_t *, MoBiLE_Plant &) const;
127 void niinemetsMonoterpene(
128 niinemets_mono_t *, niinemets_coeff_t *, MoBiLE_Plant &) const;
129 double niinemetsEmission(
130 niinemets_coeff_t *, MoBiLE_Plant &) const;
131
132 void step_init();
133};
134} /*namespace ldndc*/
135
136#endif /* !LM_PHYSIOLOGY_VOCNIINEMETS_H_ */
137
Spatially explicit groundwater model.
Definition: airchemistryput.h:15