16#ifndef LM_SOILCHEMISTRY_SOILDNDC_H_
17#define LM_SOILCHEMISTRY_SOILDNDC_H_
19#include "mbe_legacymodel.h"
20#include "state/mbe_state.h"
22#include "ld_isotopes.h"
24#include "soilchemistry/dndc/output-soilchemistry-dndc.h"
26#include "soilchemistry/ld_transport.h"
27#include "soilchemistry/ld_enhanced_efficiency_nitrogen_fertilizers.h"
29#include "eventhandler/fertilize/fertilize.h"
30#include "eventhandler/till/till.h"
32#include <input/event/events.h>
34class solver_tridiagonal_t;
38 class LDNDC_API SoilchemistryDNDC :
public MBE_LegacyModel
43 static const unsigned int NN;
46 static const double TNORM;
49 static const double HLIM;
52 static const double FRN2;
54 LMOD_EXPORT_MODULE_INFO(SoilchemistryDNDC,
"soilchemistry:soilchemistrydndc",
"Soilchemistry SoilchemistryDNDC");
63 lerr_t configure( ldndc::config_file_t
const *);
64 lerr_t register_ports( cbm::io_kcomm_t *);
68 lerr_t unregister_ports( cbm::io_kcomm_t *);
71 lerr_t sleep() {
return LDNDC_ERR_OK; }
72 lerr_t wake() {
return LDNDC_ERR_OK; }
75 cbm::io_kcomm_t * io_kcomm;
77 input_class_groundwater_t
const * gw_;
78 input_class_siteparameters_t
const & sipar_;
79 input_class_soillayers_t
const & sl_;
81 substate_surfacebulk_t & sb_;
82 substate_airchemistry_t & ac_;
83 substate_microclimate_t
const & mc_;
84 substate_physiology_t & ph_;
85 substate_soilchemistry_t & sc_;
86 substate_watercycle_t & wc_;
88 MoBiLE_PlantVegetation * m_veg;
90 CBM_Handle m_PlantHandle;
93 timemode_e
const timemode_;
95 OutputSoilchemistryDNDC output_writer;
96 ldndc_flt64_t * output_buffer;
98 unsigned int const INTERNAL_TIME_STEPS;
99 double const FTS_TOT_;
101 EventHandlerFertilize m_eventfertilize;
102 EventHandlerTill m_eventtill;
107 double * d_soil_eff_;
109 solver_tridiagonal_t * tdma_solver_;
110 Transport transport_;
112 double *waterflux_sl;
113 double *accumulated_waterflux_old_sl;
115 lvector_t< double > crb_l;
116 lvector_t< double > crb_r;
117 lvector_t< double > hdc_l;
118 lvector_t< double > hdc_r;
120 lvector_t< double > p_o2_sl;
121 lvector_t< double > fdeni;
122 lvector_t< double > day_co2;
123 lvector_t< double > co2_auto_sl;
124 lvector_t< double > anvf_old;
125 lvector_t< double > nitrify_n2o;
127 lvector_t< double > communicate_sl;
134 lvector_t< double > flux_record_sl;
137 lvector_t< double >
const &mc_temp_sl;
140 double const KLRAW_STUBBLE;
163 double const D_NO_SCALE;
164 double const D_N2O_SCALE;
165 double const D_O2_AIR_SCALE;
168 double const MUE_NO3;
171 double const MUE_NO2;
177 double const MUE_N2O;
184 double const GROUNDWATER_NUTRIENT_ACCESS_RATE;
187 lvector_t< double > D_eff_plant_sl;
188 lvector_t< double > D_eff_air_sl;
189 lvector_t< double > v_air_sl;
190 lvector_t< double > v_water_sl;
191 lvector_t< double > v_ice_sl;
192 lvector_t< double > delta_x;
193 lvector_t< double > interface_delta_x_air_sl;
194 lvector_t< double > soil_gas_advection_sl;
201 double day_no3_groundwater_access;
202 double year_no3_groundwater_access;
207 double day_mineral_litter;
208 double day_mineral_humus;
209 double day_mineral_microbes;
210 double day_mineral_aorg;
211 double day_mineral_humads;
213 double day_denitrify_no3_growth;
214 double day_denitrify_no3_maintenance;
216 double day_denitrify_no2_growth;
217 double day_denitrify_no2_maintenance;
219 double day_denitrify_no_growth;
220 double day_denitrify_no_maintenance;
222 double day_denitrify_n2o_growth;
223 double day_denitrify_n2o_maintenance;
226 lvector_t< double > co2_concentration_fl;
228 lvector_t< double > ch4_concentration_fl;
230 lvector_t< double > no_concentration_fl;
235 lerr_t SCDNDC2_step_initialize_();
236 lerr_t SCDNDC2_step_finalize_();
243 SCDNDC2_write_output();
245 SCDNDC2_write_output_daily();
248 void SCDNDC2_urea_hydrolysis();
251 void SCDNDC2_autotrophic_respiration();
254 void SCDNDC2_littering();
257 void SCDNDC2_pertubation();
273 void SCDNDC2_distribute_among_litter_layers(
278 void SCDNDC2_nh4_clay_equilibrium();
281 void SCDNDC2_split_aorg();
284 void SCDNDC2_combine_aorg();
287 void SCDNDC2_litter_decomposition();
290 void SCDNDC2_humus_decomposition();
293 void SCDNDC2_microbial_dynamics();
296 void SCDNDC2_humads_decomposition();
299 void SCDNDC2_nh4_nh3_dynamics();
302 void SCDNDC2_nitrification();
305 void SCDNDC2_denitrification();
308 void SCDNDC2_gas_diffusion();
311 void SCDNDC2_groundwater_access();
314 void SCDNDC2_leaching();
317 void SCDNDC2_o2_diffusion();
323 double SCDNDC2_temp_mois(
327 void SCDNDC2_decomp_litter(
332 double temp_mois_fact,
337 void SCDNDC2_wood_decomposition();
340 void SCDNDC2_nh4_nh3_equilibrium();
343 void SCDNDC2_nh3_volatilization();
346 void SCDNDC2_diffusion(
354 void SCDNDC2_conversion(
369 double &_assi_chem_from,
371 double &_denit_growth,
372 double &_denit_main);
375 void SCDNDC2_chemodenitrification(
379 double SCDNDC2_get_fact_o2(
size_t );
381 double SCDNDC2_get_wfps(
388 lerr_t SCDNDC2_balance_check(
389 unsigned int ,
double * ,
double * );
390 double SCDNDC2_get_c_tot();
391 double SCDNDC2_get_n_tot();
399 SCDNDC2_check_for_negative_value(
Spatially explicit groundwater model.
Definition: airchemistryput.h:15