16#ifndef LM_SOILCHEMISTRY_DNDC2_H_
17#define LM_SOILCHEMISTRY_DNDC2_H_
19#include "mbe_legacymodel.h"
20#include "state/mbe_state.h"
22#include "ld_isotopes.h"
23#include "soilchemistry/ld_transport.h"
24#include "soilchemistry/ld_enhanced_efficiency_nitrogen_fertilizers.h"
26#include "eventhandler/fertilize/fertilize.h"
27#include "eventhandler/till/till.h"
29#include <input/event/events.h>
31class solver_tridiagonal_t;
35 class LDNDC_API SoilChemistryDNDC2 :
public MBE_LegacyModel
40 static const unsigned int NN;
43 static const double TNORM;
46 static const double HLIM;
49 static const double FRN2;
51 LMOD_EXPORT_MODULE_INFO(SoilChemistryDNDC2,
"soilchemistry:dndc2",
"Soilchemistry DNDC2");
58 ~SoilChemistryDNDC2();
60 lerr_t configure( ldndc::config_file_t
const *);
61 lerr_t register_ports( cbm::io_kcomm_t *);
65 lerr_t unregister_ports( cbm::io_kcomm_t *);
68 lerr_t sleep() {
return LDNDC_ERR_OK; }
69 lerr_t wake() {
return LDNDC_ERR_OK; }
72 cbm::io_kcomm_t * io_kcomm;
74 input_class_groundwater_t
const * gw_;
75 input_class_siteparameters_t
const & sipar_;
76 input_class_soillayers_t
const & sl_;
78 substate_surfacebulk_t & sb_;
79 substate_airchemistry_t & ac_;
80 substate_microclimate_t
const & mc_;
81 substate_physiology_t & ph_;
82 substate_soilchemistry_t & sc_;
83 substate_watercycle_t & wc_;
85 MoBiLE_PlantVegetation * m_veg;
87 CBM_Handle m_PlantHandle;
90 timemode_e
const timemode_;
92 unsigned int const INTERNAL_TIME_STEPS;
93 double const FTS_TOT_;
95 EventHandlerFertilize m_eventfertilize;
96 EventHandlerTill m_eventtill;
103 double * d_soil_eff_;
105 solver_tridiagonal_t * tdma_solver_;
106 Transport transport_;
108 double *waterflux_sl;
109 double *accumulated_waterflux_old_sl;
111 lvector_t< double > crb_l;
112 lvector_t< double > crb_r;
113 lvector_t< double > hdc_l;
114 lvector_t< double > hdc_r;
116 lvector_t< double > p_o2_sl;
117 lvector_t< double > fdeni;
118 lvector_t< double > day_co2;
119 lvector_t< double > co2_auto_sl;
120 lvector_t< double > anvf_old;
121 lvector_t< double > nitrify_n2o;
123 lvector_t< double > communicate_sl;
125 lvector_t< double > flux_chem_no_sl;
126 lvector_t< double > flux_chem_n2o_sl;
133 lvector_t< double > flux_record_sl;
136 lvector_t< double >
const &mc_temp_sl;
139 double const KLRAW_STUBBLE;
162 double const D_NO_SCALE;
163 double const D_N2O_SCALE;
164 double const D_O2_AIR_SCALE;
167 double const MUE_NO3;
170 double const MUE_NO2;
176 double const MUE_N2O;
183 double const GROUNDWATER_NUTRIENT_ACCESS_RATE;
186 lvector_t< double > D_eff_plant_sl;
187 lvector_t< double > D_eff_air_sl;
188 lvector_t< double > v_air_sl;
189 lvector_t< double > v_water_sl;
190 lvector_t< double > v_ice_sl;
191 lvector_t< double > delta_x;
192 lvector_t< double > interface_delta_x_air_sl;
193 lvector_t< double > soil_gas_advection_sl;
200 double day_no3_groundwater_access;
201 double year_no3_groundwater_access;
206 double day_mineral_litter;
207 double day_mineral_humus;
208 double day_mineral_microbes;
209 double day_mineral_aorg;
210 double day_mineral_humads;
214 lvector_t< double > co2_concentration_fl;
216 lvector_t< double > ch4_concentration_fl;
218 lvector_t< double > no_concentration_fl;
223 lerr_t SCDNDC2_step_initialize_();
224 lerr_t SCDNDC2_step_finalize_();
228 void SCDNDC2_urea_hydrolysis();
231 void SCDNDC2_autotrophic_respiration();
234 void SCDNDC2_littering();
237 void SCDNDC2_pertubation();
253 void SCDNDC2_distribute_among_litter_layers(
258 void SCDNDC2_nh4_clay_equilibrium();
261 void SCDNDC2_calc_sl_arrays();
264 void SCDNDC2_split_aorg();
267 void SCDNDC2_combine_aorg();
270 void SCDNDC2_litter_decomposition();
273 void SCDNDC2_humus_decomposition();
276 void SCDNDC2_microbial_dynamics();
279 void SCDNDC2_humads_decomposition();
282 void SCDNDC2_nh4_nh3_dynamics();
285 void SCDNDC2_nitrification();
288 void SCDNDC2_denitrification();
291 void SCDNDC2_no_oxidation();
294 void SCDNDC2_gas_diffusion();
297 void SCDNDC2_gas_diffusion_new();
300 void SCDNDC2_groundwater_access();
303 void SCDNDC2_leaching();
306 void SCDNDC2_o2_diffusion();
312 double SCDNDC2_temp_mois(
316 void SCDNDC2_decomp_litter(
321 double temp_mois_fact,
326 void SCDNDC2_wood_decomposition();
329 void SCDNDC2_nh4_nh3_equilibrium();
332 void SCDNDC2_nh3_volatilization();
335 void SCDNDC2_diffusion(
343 void SCDNDC2_conversion(
354 lvector_t< double > & ,
355 lvector_t< double > & ,
360 void SCDNDC2_chemodenitrification(
363 double SCDNDC2_get_fact_o2(
size_t );
365 double SCDNDC2_get_wfps(
372 lerr_t SCDNDC2_balance_check(
373 unsigned int ,
double * ,
double * );
374 double SCDNDC2_get_c_tot();
375 double SCDNDC2_get_n_tot();
383 SCDNDC2_check_for_negative_value(
Spatially explicit groundwater model.
Definition: airchemistryput.h:15