LandscapeDNDC 1.37.0
output-soilchemistry-daily.h
1
11#ifndef LM_OUTPUT_SOILCHEMISTRY_DAILY_H_NEW_
12#define LM_OUTPUT_SOILCHEMISTRY_DAILY_H_NEW_
13
14#include "mbe_legacyoutputmodel.h"
15#include "state/mbe_state.h"
16
17#define LMOD_OUTPUT_MODULE_BASE MBE_LegacyOutputModel
18#define LMOD_OUTPUT_MODULE_NAME OutputSoilchemistryDaily
19#define LMOD_OUTPUT_MODULE_ID "output:soilchemistry:daily"
20#define LMOD_OUTPUT_MODULE_DESC "Soil Chemistry Daily Output"
21namespace ldndc {
22class substate_microclimate_t;
23class substate_physiology_t;
24class substate_watercycle_t;
25class LDNDC_API LMOD_OUTPUT_MODULE_NAME : public LMOD_OUTPUT_MODULE_BASE
26{
27 LMOD_EXPORT_MODULE_INFO(LMOD_OUTPUT_MODULE_NAME,LMOD_OUTPUT_MODULE_ID,LMOD_OUTPUT_MODULE_DESC);
28 public:
29 LMOD_OUTPUT_MODULE_NAME(
30 MoBiLE_State *,
31 cbm::io_kcomm_t *,
32 timemode_e _timemode);
33
34 ~LMOD_OUTPUT_MODULE_NAME();
35
36
37 lerr_t configure( ldndc::config_file_t const *);
38
39 lerr_t initialize();
40
41 lerr_t solve();
42
43 lerr_t finalize();
44
45 lerr_t wake() { return LDNDC_ERR_OK; }
46 lerr_t sleep() { return LDNDC_ERR_OK; }
47
48 private:
49 lerr_t dump_0( ldndc_flt64_t *);
50
51 private:
52 cbm::io_kcomm_t * io_kcomm;
53
54 input_class_soillayers_t const * soillayers_in;
55
56 substate_physiology_t const * phys;
57 MoBiLE_PlantVegetation * vegetation;
58 substate_soilchemistry_t const * soilchem;
59
60 private:
61 ldndc::sink_handle_t m_sink;
62
63 struct output_soilchemistry_daily_acc_t
64 {
65 double nh4_throughfall;
66 double no3_throughfall;
67
68 double doc_leach;
69 double don_leach;
70 double no3_leach;
71 double nh4_leach;
72
73 double ch4_emis;
74 double co2_emis_auto;
75 double co2_emis_hetero;
76 double no_emis;
77 double n2o_emis;
78 double n2_emis;
79 double nh3_emis;
80
81 double so4_leach;
82
83 double n2_fix_algae;
84 double n2_fix_bio;
85 double co2_fix;
86
87 double c_litter_above;
88 double n_litter_above;
89
90 double c_litter_below;
91 double n_litter_below;
92
93 double uptakeN;
94 double immoN;
95 double mineralN;
96 double nitrifyN;
97 double denitrifyN;
98 double denitrify_no2;
99 double denitrify_no;
100 double denitrify_n2o;
101 double chemoN;
102
103 double radon_emis;
104 };
105 output_soilchemistry_daily_acc_t acc;
106 void pop_accumulated_outputs();
107 void push_accumulated_outputs();
108};
109} /*namespace ldndc*/
110
111
112#undef LMOD_OUTPUT_MODULE_BASE
113#undef LMOD_OUTPUT_MODULE_NAME
114#undef LMOD_OUTPUT_MODULE_ID
115#undef LMOD_OUTPUT_MODULE_DESC
116
117
118#endif /* !LM_OUTPUT_SOILCHEMISTRY_DAILY_H_ */
119
Spatially explicit groundwater model.
Definition: airchemistryput.h:15