LandscapeDNDC 1.37.0
output-watercycle-layer-daily.h
1
10#ifndef LM_OUTPUT_WATERCYCLE_LAYER_DAILY_H_
11#define LM_OUTPUT_WATERCYCLE_LAYER_DAILY_H_
12
13#include "mbe_legacyoutputmodel.h"
14#include "state/mbe_state.h"
15
16/* if defined, watercycle daily output exhibits request API */
17//#define OutputWatercycleLayerDaily_HAVE_request_api
18#ifdef OutputWatercycleLayerDaily_HAVE_request_api
19# include "kernel/kcomm.h"
20struct lmessage_t;
21struct lreply_t;
22#endif
23
24#define LMOD_OUTPUT_MODULE_BASE MBE_LegacyOutputModel
25#define LMOD_OUTPUT_MODULE_NAME OutputWatercycleLayerDaily
26#define LMOD_OUTPUT_MODULE_ID "output:watercycle-layer:daily"
27#define LMOD_OUTPUT_MODULE_DESC "Water Cycle Daily Output (Layers)"
28namespace ldndc {
29class LDNDC_API LMOD_OUTPUT_MODULE_NAME : public LMOD_OUTPUT_MODULE_BASE
30{
31 LMOD_EXPORT_MODULE_INFO(LMOD_OUTPUT_MODULE_NAME,LMOD_OUTPUT_MODULE_ID,LMOD_OUTPUT_MODULE_DESC);
32 public:
33 LMOD_OUTPUT_MODULE_NAME(
34 MoBiLE_State *,
35 cbm::io_kcomm_t *,
36 timemode_e _timemode);
37
38 ~LMOD_OUTPUT_MODULE_NAME();
39
40
41 lerr_t configure( ldndc::config_file_t const *);
42
43 lerr_t initialize();
44
45 lerr_t solve();
46
47 lerr_t finalize();
48
49 lerr_t wake() { return LDNDC_ERR_OK; }
50 lerr_t sleep() { return LDNDC_ERR_OK; }
51
52 private:
53 lerr_t execute();
54 lerr_t dump_0( ldndc_flt64_t * /*buffer*/);
55
56 private:
57 cbm::io_kcomm_t * io_kcomm;
58#ifdef OutputWatercycleLayerDaily_HAVE_request_api
59 ldndc::kcomm_t kcomm;
60 public:
61 lerr_t process_message( lmessage_t const *, lreply_t *);
62 private:
63#endif
64
65 input_class_soillayers_t const * soillayers_;
66 input_class_setup_t const * setup_;
67 substate_soilchemistry_t const * sc;
68 substate_physiology_t const * ph;
69 substate_watercycle_t const * wc;
70
71 MoBiLE_PlantVegetation * m_veg;
72
73 private:
74
75 ldndc::sink_handle_t m_sink;
76
77 struct output_watercycle_cum_acc_t
78 {
79 double infiltration_cum;
80 double * waterflux_cum_sl;
81 double * wateruptake_cum_sl;
82 };
83 output_watercycle_cum_acc_t acc;
84
85 void pop_accumulated_outputs();
86 void push_accumulated_outputs();
87
88 /* configuration options: */
89 /* foliage, surface and soil layer selection */
90 struct conf_t
91 {
92 bool write_foliage:1;
93 bool foliage_all:1;
94
95 bool write_surface:1;
96
97 bool write_soil:1;
98 bool soil_all:1;
99
100 bool bypass_mobile:1;
101 };
102 struct conf_t rc;
103};
104} /*namespace ldndc*/
105
106
107#undef LMOD_OUTPUT_MODULE_BASE
108#undef LMOD_OUTPUT_MODULE_NAME
109#undef LMOD_OUTPUT_MODULE_ID
110#undef LMOD_OUTPUT_MODULE_DESC
111
112
113#endif /* !LM_OUTPUT_WATERCYCLE_LAYER_DAILY_H_ */
114
Spatially explicit groundwater model.
Definition: airchemistryput.h:15