LandscapeDNDC 1.37.0
output-surrogate-yearly.h
1
9#ifndef LM_OUTPUT_SURROGATE_YEARLY_H_NEW_
10#define LM_OUTPUT_SURROGATE_YEARLY_H_NEW_
11
12#include "mbe_legacyoutputmodel.h"
13#include "state/mbe_state.h"
14
15#define LMOD_OUTPUT_MODULE_BASE MBE_LegacyOutputModel
16#define LMOD_OUTPUT_MODULE_NAME OutputSurrogateYearly
17#define LMOD_OUTPUT_MODULE_ID "output:surrogate:yearly"
18#define LMOD_OUTPUT_MODULE_DESC "SURROGATE Yearly Output"
19namespace ldndc {
20class substate_physiology_t;
21class substate_watercycle_t;
22class LDNDC_API LMOD_OUTPUT_MODULE_NAME : public LMOD_OUTPUT_MODULE_BASE
23{
24 LMOD_EXPORT_MODULE_INFO(LMOD_OUTPUT_MODULE_NAME,LMOD_OUTPUT_MODULE_ID,LMOD_OUTPUT_MODULE_DESC);
25 public:
26 LMOD_OUTPUT_MODULE_NAME(
27 MoBiLE_State *,
28 cbm::io_kcomm_t *,
29 timemode_e _timemode);
30
31 ~LMOD_OUTPUT_MODULE_NAME();
32
33
34 lerr_t configure( ldndc::config_file_t const *);
35
36 lerr_t initialize();
37
38 lerr_t solve();
39
40 lerr_t finalize();
41
42 lerr_t wake() { return LDNDC_ERR_OK; }
43 lerr_t sleep() { return LDNDC_ERR_OK; }
44
45 private:
46 lerr_t dump_0(
47 ldndc_flt64_t *);
48
49 private:
50 cbm::io_kcomm_t * io_kcomm;
51
52 input_class_soillayers_t const * soillayers_in;
53
54 substate_physiology_t const * phys;
55 substate_soilchemistry_t const * soilchem;
56 substate_watercycle_t const * water;
57 MoBiLE_PlantVegetation * m_veg;
58
59 private:
60 ldndc::sink_handle_t m_sink;
61 double c_soil_old;
62
63 struct output_surrogate_yearly_acc_t
64 {
65 double no3_leach;
66 double n2o_emis;
67 double c_exp_harvest;
68 double c_poolchange;
69 };
70 output_surrogate_yearly_acc_t acc;
71 void pop_accumulated_outputs();
72 void push_accumulated_outputs();
73 void accumulate_daily_outputs();
74 void update_daily_outputs();
75
76};
77} /*namespace ldndc*/
78
79
80#undef LMOD_OUTPUT_MODULE_BASE
81#undef LMOD_OUTPUT_MODULE_NAME
82#undef LMOD_OUTPUT_MODULE_ID
83#undef LMOD_OUTPUT_MODULE_DESC
84
85
86#endif
Spatially explicit groundwater model.
Definition: airchemistryput.h:15