LandscapeDNDC 1.37.0
output-soilchemistry-metrx.h
1
8#ifndef LM_OUTPUT_SOILCHEMISTRYMETRX_H_
9#define LM_OUTPUT_SOILCHEMISTRYMETRX_H_
10
11#include "mbe_legacymodel.h"
12
13#include "soilchemistry/metrx/output-soilchemistry-metrx-daily.h"
14#include "soilchemistry/metrx/output-soilchemistry-metrx-yearly.h"
15#include "soilchemistry/metrx/output-soilchemistry-metrx-layer-daily.h"
16#include "soilchemistry/metrx/output-soilchemistry-metrx-layer-yearly.h"
17#include "soilchemistry/metrx/output-soilchemistry-metrx-fluxes-layer-subdaily.h"
18#include "soilchemistry/metrx/output-soilchemistry-metrx-pools-layer-daily.h"
19#include "soilchemistry/metrx/output-soilchemistry-metrx-subdaily.h"
20
21#define LMOD_OUTPUT_MODULE_BASE MBE_LegacyModel
22#define LMOD_OUTPUT_MODULE_NAME OutputSoilchemistryMeTrX
23#define LMOD_OUTPUT_MODULE_ID "output:soilchemistry:metrx"
24#define LMOD_OUTPUT_MODULE_DESC "SoilchemistryMETRX Output"
25namespace ldndc {
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 enum writer_id_e
31 {
32 WRITER_DAILY,
33 WRITER_YEARLY,
34 WRITER_DAILY_LAYER,
35 WRITER_YEARLY_LAYER,
36 WRITER_FLUXES,
37 WRITER_POOLS,
38 WRITER_SUBDAILY,
39 WRITER_CNT
40 };
41
42 LMOD_OUTPUT_MODULE_NAME(
43 MoBiLE_State *,
44 cbm::io_kcomm_t *,
45 timemode_e _timemode);
46
47 ~LMOD_OUTPUT_MODULE_NAME();
48
49
50 lerr_t configure(
51 ldndc::config_file_t const *);
52
53 lerr_t initialize();
54
55 lerr_t solve();
56
57 lerr_t finalize();
58
59 lerr_t wake() { return LDNDC_ERR_OK; }
60
61 lerr_t sleep() { return LDNDC_ERR_OK; }
62
63
64 bool write_daily() const { return this->output_writer_daily.active(); }
65 lerr_t write_daily( ldndc_flt64_t * /*data*/);
66
67 bool write_yearly() const { return this->output_writer_yearly.active(); }
68 lerr_t write_yearly( ldndc_flt64_t * /*data*/);
69
70 bool write_layer_daily() const { return this->output_writer_layer_daily.active(); }
71 lerr_t write_layer_daily( unsigned int /*layer index*/, ldndc_flt64_t * /*data*/);
72
73 bool write_layer_yearly() const { return this->output_writer_layer_yearly.active(); }
74 lerr_t write_layer_yearly( unsigned int /*layer index*/, ldndc_flt64_t * /*data*/);
75
76 bool write_fluxes() const { return this->output_writer_fluxes.active(); }
77 lerr_t write_fluxes( unsigned int /*layer index*/, ldndc_flt64_t * /*data*/);
78
79 bool write_pools() const { return this->output_writer_pools.active(); }
80 lerr_t write_pools( unsigned int /*layer index*/, ldndc_flt64_t * /*data*/);
81
82 bool write_subdaily() const { return this->output_writer_subdaily.active(); }
83 lerr_t write_subdaily( ldndc_flt64_t * /*data*/);
84
85
86 size_t record_size( writer_id_e /*which writer*/) const;
87 size_t max_record_size() const;
88
89 private:
90 OutputSoilchemistryMeTrXDaily output_writer_daily;
91 OutputSoilchemistryMeTrXYearly output_writer_yearly;
92 public:
93 OutputSoilchemistryMeTrXLayerDaily output_writer_layer_daily;
94 OutputSoilchemistryMeTrXLayerYearly output_writer_layer_yearly;
95 OutputSoilchemistryMeTrXFluxes output_writer_fluxes;
96 OutputSoilchemistryMeTrXPools output_writer_pools;
97 OutputSoilchemistryMeTrXSubdaily output_writer_subdaily;
98 private:
99
100 lerr_t configure_output(
101 MBE_LegacyOutputModel * /*output module*/, ldndc::config_file_t const * /*configuration*/,
102 char const * /*option key*/);
103};
104
105} /*namespace ldndc*/
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#endif /* !LM_OUTPUT_SOILCHEMISTRYMETRX_H_ */
113
Spatially explicit groundwater model.
Definition: airchemistryput.h:15