LandscapeDNDC 1.37.0
output-physiology-subdaily.h
1
11#ifndef LM_OUTPUT_PHYSIOLOGY_SUBDAILY_H_
12#define LM_OUTPUT_PHYSIOLOGY_SUBDAILY_H_
13
14#include "mbe_legacyoutputmodel.h"
15#include "state/mbe_state.h"
16
17#include <vector>
18
19#define LMOD_OUTPUT_MODULE_BASE MBE_LegacyOutputModel
20#define LMOD_OUTPUT_MODULE_NAME OutputPhysiologySubdaily
21#define LMOD_OUTPUT_MODULE_ID "output:physiology:subdaily"
22#define LMOD_OUTPUT_MODULE_DESC "Physiology Subdaily Output"
23namespace ldndc {
24class substate_physiology_t;
25class substate_watercycle_t;
26class LDNDC_API LMOD_OUTPUT_MODULE_NAME : public LMOD_OUTPUT_MODULE_BASE
27{
28 LMOD_EXPORT_MODULE_INFO(LMOD_OUTPUT_MODULE_NAME,LMOD_OUTPUT_MODULE_ID,LMOD_OUTPUT_MODULE_DESC);
29 public:
30 LMOD_OUTPUT_MODULE_NAME(
31 MoBiLE_State *,
32 cbm::io_kcomm_t *,
33 timemode_e _timemode);
34
35 ~LMOD_OUTPUT_MODULE_NAME();
36
37
38 lerr_t configure( ldndc::config_file_t const *);
39
40 lerr_t initialize();
41 lerr_t solve();
42 lerr_t finalize();
43
44 lerr_t wake() { return LDNDC_ERR_OK; }
45 lerr_t sleep() { return LDNDC_ERR_OK; }
46
47 private:
48 lerr_t sink_handle_acquire_(
49 sink_handle_t & /*sink handle*/, int /*index*/);
50
51 private:
52 cbm::io_kcomm_t * io_kcomm;
53 substate_physiology_t const * phys;
54 substate_watercycle_t const * water;
55
56 MoBiLE_PlantVegetation * m_veg;
57 input_class_soillayers_t const * soillayers;
58
59 private:
60 lerr_t acquire_sinks_if_needed_();
61 std::vector< ldndc::sink_handle_t > snks_;
62 ldndc::sink_handle_t snk_sum_;
63
64 private:
65 typedef struct
66 {
67 ldndc_flt64_t vcAct25;
68 ldndc_flt64_t isoAct;
69 ldndc_flt64_t monoAct;
70 ldndc_flt64_t conductRel;
71 ldndc_flt64_t sla;
72 ldndc_flt64_t iso_emi_sum;
73 ldndc_flt64_t mono_emi_sum;
74 ldndc_flt64_t mono_s_emi_sum;
75 ldndc_flt64_t ovoc_emi_sum;
76
77 ldndc_flt64_t lai;
78
79
80 } foliage_sums_t;
81
82 void foliage_sums_( MoBiLE_Plant *, foliage_sums_t * /*buffer*/);
83
84 lerr_t m_writerecord( MoBiLE_Plant *,
85 ldndc_flt64_t * /*buffer*/, ldndc_flt64_t * /*average buffer*/);
86
87 struct output_physiology_daily_acc_t
88 {
89 double nh3_uptake;
90 double nh4_uptake;
91 double no3_uptake;
92 double don_uptake;
93 };
94 output_physiology_daily_acc_t acc;
95 void pop_accumulated_outputs();
96 void push_accumulated_outputs();
97};
98} /*namespace ldndc*/
99
100
101#undef LMOD_OUTPUT_MODULE_BASE
102#undef LMOD_OUTPUT_MODULE_NAME
103#undef LMOD_OUTPUT_MODULE_ID
104#undef LMOD_OUTPUT_MODULE_DESC
105
106
107#endif /* !LM_OUTPUT_PHYSIOLOGY_DAILY_H_ */
108
Spatially explicit groundwater model.
Definition: airchemistryput.h:15