9#ifndef LDNDC_DATASYNTH_AIRCHEMISTRY_H_
10#define LDNDC_DATASYNTH_AIRCHEMISTRY_H_
12#include "synthesizers/synth-base-streamdata.h"
13#include "airchemistry/airchemistrytypes.h"
14#include "time/cbm_date.h"
17#define SYNTH_AIRCHEMISTRY_REC_SIZE SYNTH_REC_SIZE_(airchemistry)
19#define SYNTH_AIRCHEMISTRY_REC_S_DECL_GET(__reg__,__item__) SYNTH_REC_DECL_GET_(airchemistry,__reg__,s,__item__)
20#define SYNTH_AIRCHEMISTRY_REC_D_DECL_GET(__reg__,__item__) SYNTH_REC_DECL_GET_(airchemistry,__reg__,d,__item__)
22#define SYNTH_AIRCHEMISTRY_REC_S_DECL_GET_AND_CHK_VALID(__reg__,__item__) SYNTH_REC_DECL_GET_AND_CHK_VALID_(airchemistry,__reg__,s,__item__)
23#define SYNTH_AIRCHEMISTRY_REC_D_DECL_GET_AND_CHK_VALID(__reg__,__item__) SYNTH_REC_DECL_GET_AND_CHK_VALID_(airchemistry,__reg__,d,__item__)
25#define SYNTH_AIRCHEMISTRY_INVALIDATE_BUFFER(__buf__) SYNTH_INVALIDATE_BUFFER_(airchemistry,__buf__)
27#define SYNTH_AIRCHEMISTRY_CHK_MATCHING(__item__) SYNTH_CHK_MATCHING_(airchemistry,__item__)
29#define SYNTH_AIRCHEMISTRY_CALL_LOOP_TEST_AND_SET(__item__) SYNTH_CALL_LOOP_TEST_AND_SET_(airchemistry,__item__)
30#define SYNTH_AIRCHEMISTRY_RETURN_SUCCESS(__item__) SYNTH_RETURN_SUCCESS_(airchemistry,__item__)
32#define SYNTH_AIRCHEMISTRY_RECORD_ITEM_COMMON_DECL(__class__,__item_enum__) SYNTH_RECORD_ITEM_COMMON_DECL_(airchemistry,__class__,__item_enum__)
35#define NH4_FRAC (0.635)
36#define NO3_FRAC (1.0 - NH4_FRAC)
38template <
typename,
unsigned int >
41namespace ldndc{
namespace airchemistry{
namespace synth
43typedef record::item_type record_item_t;
44struct scratch_t :
public ldndc::synth::streamdata_scratch_base_t< streamdata_info_t >
47 airchemistry_info_t
const * ,
52 airchemistry_info_t
const * ,
57struct CBM_API item_base_t :
public ldndc::synth::streamdata_item_base_t< streamdata_info_t, scratch_t >
62class CBM_API lsynth_airchemistry_t :
public ldndc::synth::streamdata_synth_base_t< streamdata_info_t >
65 lsynth_airchemistry_t();
66 lsynth_airchemistry_t(
67 airchemistry_info_t
const * ,
71 virtual ~lsynth_airchemistry_t();
79 unsigned int = ldndc::invalid_t< unsigned int >::value );
85 lerr_t synthesize_record(
86 record_item_t
const * , record_item_t * ,
87 record_item_t
const * , record_item_t * ,
91 lvector_t< unsigned int, 1 > * = NULL );
101 record_item_t
const * ,
102 record_item_t
const * )
const;
105 unsigned int subday()
108 return this->scratch_.subday;
112 unsigned int time_resolution_inout()
115 return this->scratch_.t_res_inout;
119 airchemistry_info_t info_;
122extern item_base_t
const * airchemistry_synthesizers[record::RECORD_SIZE];
Spatially explicit groundwater model.
Definition airchemistryput.h:15