LandscapeDNDC 1.37.0
vocbim.h
1
24#ifndef LM_PHYSIOLOGY_VOCBIM_H_
25#define LM_PHYSIOLOGY_VOCBIM_H_
26
27#include "mbe_legacymodel.h"
28#include "state/mbe_state.h"
29
30namespace ldndc {
31
32class LDNDC_API PhysiologyVOCBIM : public MBE_LegacyModel
33{
34 LMOD_EXPORT_MODULE_INFO(PhysiologyVOCBIM,"physiology:vocbim","Physiology VOCBIM");
35
36 /*** module specific constants ***/
37
38 /* time step for emission calculations (s) */
39 static const double TSSEC;
40
41 /* BVOC parameters */
42
44 static double const KM_TP;
46 static double const LOSS_RATE;
48 static double const TP_LRATE;
50 static double const ADP_LRATE;
52 static double const NAD_LRATE;
54 static double const TREF;
56 static double const BETA;
58 static double const JEFF;
60 static double const TPU;
62 static double const DFOL;
64 static double const FCHL;
66 static double const FPGA;
68 static double const KM_DXPS_PEP;
70 static double const KM_DXPS_PGA;
72 static double const KM_DXPR_NADPH;
74 static double const KM_DXPR_DXP;
76 static double const KM_IDPS;
78 static double const KM_GGDPS_GDP;
80 static double const KM_GGDPS_IDP;
82 static double const KM_IDPI;
84 static double const KEQ_IDPI;
86 static double const CT_IDP;
88 static double const DS_IDP;
90 static double const HA_IDP;
92 static double const CT_GDP;
94 static double const DS_GDP;
96 static double const HA_GDP;
97
98 public:
99 PhysiologyVOCBIM(
100 MoBiLE_State *,
101 cbm::io_kcomm_t *,
102 timemode_e);
103
104 ~PhysiologyVOCBIM();
105
106 lerr_t configure(
107 ldndc::config_file_t const *);
108
109 lerr_t initialize();
110
111 lerr_t solve();
112
113 lerr_t finalize() { return LDNDC_ERR_OK; }
114
115 lerr_t sleep() { return LDNDC_ERR_OK; }
116 lerr_t wake() { return LDNDC_ERR_OK; }
117
118 private:
119 /* required state components */
120 substate_microclimate_t * mc;
121 substate_physiology_t * phys;
122 MoBiLE_PlantVegetation * m_veg;
123 input_class_setup_t const * m_setup;
124
125 struct vmax_t
126 {
127 /* vmax for DXP synthesis at 30 oC (umol L-1 s-1) */
128 double VMAX_DXPS;
129 /* vmax for DXP reduction at 30 oC (umol L-1 s-1) */
130 double VMAX_DXPR;
131 /* vmax for IDP synthesis at 30 oC (umol L-1 s-1) */
132 double VMAX_IDPS;
133 /* vmax for IDP isomerisation at 30 oC (umol L-1 s-1) */
134 double VMAX_IDPI;
135 /* vmax for GDP synthesis at 30 oC (umol L-1 s-1) */
136 double VMAX_GDPS;
137 /* vmax for GGDP synthesis at 30 oC (umol L-1 s-1) */
138 double VMAX_GGDPS;
139
140 vmax_t();
141 vmax_t(
142 MoBiLE_Plant const & /*species*/);
143 void set_from_species(
144 MoBiLE_Plant const & /*species*/);
145 };
146
147 lerr_t CalcCellChemistry(
148 MoBiLE_Plant * /*species*/, size_t /*foliage layer*/);
149
150 lerr_t CalcNSLeafEmission(
151 MoBiLE_Plant * /*species*/,
152 vmax_t const *, size_t /*foliage layer*/);
153
154 lerr_t CalcSLeafEmission(
155 MoBiLE_Plant * /*species*/, size_t /*foliage layer*/);
156
157 struct bvoc_emission_t
158 {
159 // temperature at timstep ts
160 double temp_n;
161
162 /* isoprene synthase activity (umol L-1 s-1) */
163 double vis_act;
164 /* monoterpene synthase activity (umol L-1 s-1) */
165 double vmt_act;
166
167 double dxp_na[MoBiLE_MaximumAgeClasses];
168 double mep_na[MoBiLE_MaximumAgeClasses];
169 double idp_na[MoBiLE_MaximumAgeClasses];
170 double dmadp_na[MoBiLE_MaximumAgeClasses];
171 double gdp_na[MoBiLE_MaximumAgeClasses];
172
173 double pep_poolL;
174 double pga_poolL;
175 double atp_poolL;
176 double nad_poolL;
177
178 /* rate of isoprene and monoterpene volatization (umol L-1 ts-1)
179 * (set in CalcBVOCEmission)
180 */
181 double iso;
182 double mon;
183 };
184 lerr_t CalcBVOCEmission(
185 bvoc_emission_t *,
186 vmax_t const *,
187 MoBiLE_Plant * /*species*/,
188 int /*age class*/);
189
190 void step_init();
191};
192} /*namespace ldndc*/
193
194#endif /* !LM_PHYSIOLOGY_VOCBIM_H_ */
195
Spatially explicit groundwater model.
Definition: airchemistryput.h:15