LandscapeDNDC 1.37.0
Loading...
Searching...
No Matches
synth-groundwater.h
1
8
9#ifndef LDNDC_DATASYNTH_GROUNDWATER_H_
10#define LDNDC_DATASYNTH_GROUNDWATER_H_
11
12#include "synthesizers/synth-base-streamdata.h"
13#include "groundwater/groundwatertypes.h"
14#include "time/cbm_date.h"
15
16
17#define SYNTH_GROUNDWATER_REC_SIZE SYNTH_REC_SIZE_(groundwater)
18
19#define SYNTH_GROUNDWATER_REC_S_DECL_GET(__reg__,__item__) SYNTH_REC_DECL_GET_(groundwater,__reg__,s,__item__)
20#define SYNTH_GROUNDWATER_REC_D_DECL_GET(__reg__,__item__) SYNTH_REC_DECL_GET_(groundwater,__reg__,d,__item__)
21
22#define SYNTH_GROUNDWATER_REC_S_DECL_GET_AND_CHK_VALID(__reg__,__item__) SYNTH_REC_DECL_GET_AND_CHK_VALID_(groundwater,__reg__,s,__item__)
23#define SYNTH_GROUNDWATER_REC_D_DECL_GET_AND_CHK_VALID(__reg__,__item__) SYNTH_REC_DECL_GET_AND_CHK_VALID_(groundwater,__reg__,d,__item__)
24
25#define SYNTH_GROUNDWATER_INVALIDATE_BUFFER(__buf__) SYNTH_INVALIDATE_BUFFER_(groundwater,__buf__)
26
27#define SYNTH_GROUNDWATER_CHK_MATCHING(__item__) SYNTH_CHK_MATCHING_(groundwater,__item__)
28
29#define SYNTH_GROUNDWATER_CALL_LOOP_TEST_AND_SET(__item__) SYNTH_CALL_LOOP_TEST_AND_SET_(groundwater,__item__)
30#define SYNTH_GROUNDWATER_RETURN_SUCCESS(__item__) SYNTH_RETURN_SUCCESS_(groundwater,__item__)
31
32#define SYNTH_GROUNDWATER_RECORD_ITEM_COMMON_DECL(__class__,__item_enum__) SYNTH_RECORD_ITEM_COMMON_DECL_(groundwater,__class__,__item_enum__)
33
34
35template < typename, unsigned int >
36class lvector_t;
37
38namespace ldndc{ namespace groundwater{ namespace synth
39{
40typedef record::item_type record_item_t;
41struct scratch_t : public ldndc::synth::streamdata_scratch_base_t< streamdata_info_t >
42{
43 lerr_t initialize(
44 groundwater_info_t const * /* boundary info */,
45 ltime_t const * /* input date */,
46 ltime_t const * /* output date */);
47
48 lerr_t configure(
49 groundwater_info_t const * /* boundary info */,
50 ldate_t const * /* current date */,
51 unsigned int /* current target subday */);
52};
53
54struct CBM_API item_base_t : public ldndc::synth::streamdata_item_base_t< streamdata_info_t, scratch_t >
55{
56};
57
58
59class CBM_API lsynth_groundwater_t : public ldndc::synth::streamdata_synth_base_t< streamdata_info_t >
60{
61 public:
62 lsynth_groundwater_t();
63 lsynth_groundwater_t(
64 groundwater_info_t const * /* groundwater meta info */,
65 ltime_t const * /* input date */,
66 ltime_t const * /* output date */);
67
68 virtual ~lsynth_groundwater_t();
69
74 lerr_t configure(
75 ldate_t const * /* target date */,
76 unsigned int = ldndc::invalid_t< unsigned int >::value /* target subday */);
77
82 lerr_t synthesize_record(
83 record_item_t const * /* subday data buffer (input) */, record_item_t * /* subday data buffer (output) */,
84 record_item_t const * /* day data buffer (input) */, record_item_t * /* day data buffer (output) */,
85
86 ldate_t const * /* current date */,
87
88 lvector_t< unsigned int, 1 > * = NULL /* modification count */);
89
97 lerr_t check_record(
98 record_item_t const * /* subday data buffer (input) */,
99 record_item_t const * /* day data buffer (input) */) const;
100
101 inline
102 unsigned int subday()
103 const
104 {
105 return this->scratch_.subday;
106 }
107
108 inline
109 unsigned int time_resolution_inout()
110 const
111 {
112 return this->scratch_.t_res_inout;
113 }
114
115 private:
116 groundwater_info_t info_;
117 scratch_t scratch_;
118};
119extern item_base_t const * groundwater_synthesizers[record::RECORD_SIZE];
120} /* namespace synth */
121} /* namespace groundwater */
122} /* namespace ldndc */
123
124
125#endif /* !LDNDC_DATASYNTH_GROUNDWATER_H_ */
126
Spatially explicit groundwater model.
Definition airchemistryput.h:15