28class LDNDC_API SoilChemistryMeTrX :
public MBE_LegacyModel
35 static const double SURFACE_DEPTH;
37 LMOD_EXPORT_MODULE_INFO(SoilChemistryMeTrX,
"soilchemistry:metrx",
"Soilchemistry MeTrX");
44 ~SoilChemistryMeTrX();
46 lerr_t configure( ldndc::config_file_t
const *);
47 lerr_t register_ports( cbm::io_kcomm_t *);
53 lerr_t unregister_ports( cbm::io_kcomm_t *);
56 lerr_t sleep() {
return LDNDC_ERR_OK; }
57 lerr_t wake() {
return LDNDC_ERR_OK; }
60 cbm::io_kcomm_t * io_kcomm;
62 input_class_groundwater_t
const * gw_;
63 input_class_siteparameters_t
const & sipar_;
64 input_class_soillayers_t
const & sl_;
65 input_class_setup_t
const & se_;
67 substate_surfacebulk_t & sb_;
68 substate_airchemistry_t & ac_;
70 substate_microclimate_t
const & mc_;
71 substate_physiology_t & ph_;
72 substate_soilchemistry_t & sc_;
73 substate_watercycle_t & wc_;
75 MoBiLE_PlantVegetation * m_veg;
77 SubscribedEvent<LD_EventHandlerQueue> m_FertilizeEvents;
78 SubscribedEvent<LD_EventHandlerQueue> m_IrrigationEvents;
79 SubscribedEvent<LD_EventHandlerQueue> m_ManureEvents;
80 SubscribedEvent<LD_EventHandlerQueue> m_PlantEvents;
81 SubscribedEvent<LD_EventHandlerQueue> m_TillEvents;
84 ControlledReleaseNitrogenFertilizer crnf_;
86 timemode_e
const timemode_;
88 OutputSoilchemistryMeTrX output_writer_;
89 ldndc_flt64_t * output_data_;
91 int const TOTAL_TIME_STEPS;
92 int const INTERNAL_TIME_STEPS;
93 double const FTS_TOT_;
97 double const M_C_SCALE;
98 double const M_2C_SCALE;
99 double const M_N_SCALE;
100 double const M_2H_SCALE;
101 double const M_2N_SCALE;
102 double const M_O_SCALE;
103 double const M_2O_SCALE;
104 double const M_FE_SCALE;
106 double const N_O2_RATIO_NITRIFICATION;
107 double const ACETATE_RATIO_FERM_SYN;
109 double const H2_MOL_CH4_KG_CONVERSION;
110 double const H2_KG_CH4_KG_CONVERSION;
111 double const H2_KG_CH4_MOL_CONVERSION;
113 double const FE3_ACETATE_REDUCTION_RATIO;
114 double const FE3_HYDROGEN_REDUCTION_RATIO;
116 double const O2_CONVERSION_FOR_CH4_OX;
118 double const NO3_MOLAR_MAX_FE_RED;
119 double const FE3_MOLAR_MAX_CH4_PROD;
120 double const O2_FE2_RATIO;
122 double const MICRO_C_MIN;
124 double const MC_MO2_RATIO;
125 double const RGAS_M_O2_BAR_PA;
127 double const K_HU_DOC;
129 double const K_DC_AORG;
130 double const K_HU_AORG_HUM1;
131 double const K_HU_AORG_HUM2;
133 double const K_DC_SOL;
134 double const K_HU_SOL;
136 double const K_DC_CEL;
137 double const K_HU_CEL;
139 double const K_DC_LIG;
140 double const K_HU_LIG;
142 double const K_DC_HUM1;
143 double const K_HU_HUM1;
145 double const K_DC_HUM2;
146 double const K_HU_HUM2;
148 double const K_DC_HUM3;
149 double const KR_DENIT_CHEMO;
151 double const K_FRAG_STUBBLE;
152 double const K_FRAG_ALGAE;
153 double const K_FRAG_RAW_LITTER;
154 double const K_FRAG_WOOD;
156 double const KMM_O2_ROOT_RESPIRATION;
158 double const MUE_MAX_C_MICRO_1;
159 double const MUE_MAX_C_MICRO_2;
160 double const MUE_MAX_C_MICRO_3;
162 double const METRX_MUEMAX_C_CH4_PROD;
163 double const METRX_MUEMAX_H2_CH4_PROD;
164 double const METRX_MUEMAX_C_CH4_OX_HA;
165 double const METRX_MUEMAX_C_CH4_OX_LA;
167 double const METRX_MUEMAX_C_FE_RED;
168 double const METRX_KR_OX_FE;
170 double const MUE_MAX_N_ASSI;
172 double const PH_SURFACE_WATER;
175 double const A_MAX_ALGAE;
176 double const A_MAX_MICRO_1;
177 double const A_MAX_MICRO_2;
178 double const A_MAX_MICRO_3;
180 double const METRX_F_DENIT_N2_MIN;
181 double const METRX_F_DENIT_N2_DELTA;
183 double const D_NO_WATER_SCALE;
184 double const D_N2O_WATER_SCALE;
185 double const D_O2_WATER_SCALE;
186 double const D_CO2_WATER_SCALE;
187 double const D_CH4_WATER_SCALE;
188 double const D_NH3_WATER_SCALE;
189 double const D_NH4_WATER_SCALE;
190 double const D_NO3_WATER_SCALE;
191 double const D_NO2_WATER_SCALE;
192 double const D_DOC_WATER_SCALE;
194 double const D_O2_AIR_SCALE;
195 double const D_N2_AIR_SCALE;
196 double const D_N2O_AIR_SCALE;
197 double const D_NO_AIR_SCALE;
198 double const D_CH4_AIR_SCALE;
199 double const D_CO2_AIR_SCALE;
200 double const D_NH3_AIR_SCALE;
201 double const D_RADON_AIR_SCALE;
203 double const METRX_V_EBULLITION;
204 double const GROUNDWATER_NUTRIENT_ACCESS_RATE;
206 size_t SL_SURFACE_DISTRIBUTION;
207 double SL_SURFACE_DISTRIBUTION_INVERSE;
210 double const *mc_wind;
213 double const *mc_temp_atm;
214 lvector_t< double >
const &mc_temp_sl;
217 double *waterflux_sl;
218 double *accumulated_waterflux_old_sl;
222 double accumulated_infiltration_old;
226 PublishedField<double> StubbleCarbon;
235 cbm::string_t freeze_thaw_method;
236 bool have_surface_bulk;
237 bool have_canopy_transport;
238 bool have_river_connection;
239 bool have_litter_height_change;
240 cbm::string_t d_eff_method;
241 bool have_radon_diffusion;
242 double spinup_delta_c;
243 double spinup_delta_c_depth;
245 cbm::string_t anvf_method;
247 bool have_plant_diffusion;
248 bool have_water_table;
257 double *o2_concentration;
258 lvector_t< double > ts_co2_concentration_fl;
259 lvector_t< double > ts_ch4_concentration_fl;
260 lvector_t< double > ts_no_concentration_fl;
261 lvector_t< double > ts_radon_concentration_fl;
262 lvector_t< double > nh3_fl;
268 double tot_c_balance_1;
269 double tot_n_balance_1;
276 double day_no3_groundwater_access;
279 double day_min_n_decomp;
280 double day_min_n_aorg;
281 double day_min_n_mic_1;
282 double day_min_n_mic_2;
283 double day_min_n_mic_3;
286 double day_assi_n_mic_1;
287 double day_assi_n_mic_2;
288 double day_assi_n_mic_3;
289 double day_assi_c_mic_1;
290 double day_assi_c_mic_2;
291 double day_assi_c_mic_3;
294 double day_nit_nh4_no2;
295 double day_nit_no2_no;
296 double day_nit_no2_n2o;
299 double day_denit_no3_no2;
300 double day_denit_no2_no;
301 double day_denit_no2_n2o;
302 double day_denit_no2_n2;
303 double day_denit_no_n2o;
304 double day_denit_no_n2;
305 double day_denit_n2o_n2;
306 double day_chemodenit_no2_no;
309 double day_co2_prod_mic_1_growth;
310 double day_co2_prod_mic_1_maintenance;
311 double day_co2_prod_mic_2;
312 double day_co2_prod_mic_3_acetate_prod;
313 double day_co2_prod_mic_3_acetate_cons;
314 double day_co2_prod_ch4_prod;
315 double day_co2_prod_ch4_cons;
319 double day_leach_n2o;
322 double day_leach_nh3;
323 double day_leach_urea;
324 double day_leach_radon;
327 double accumulated_c_litter_above_old;
328 double accumulated_c_litter_below_old;
330 double dC_root_exsudates;
331 double dC_litter_algae;
334 double day_decomp_c_lit_1;
335 double day_decomp_c_lit_2;
336 double day_decomp_c_lit_3;
337 double day_decomp_n_lit_1;
338 double day_decomp_n_lit_2;
339 double day_decomp_n_lit_3;
340 lvector_t< double > day_decomp_c_hum_1_sl;
341 lvector_t< double > day_decomp_c_hum_2_sl;
342 lvector_t< double > day_decomp_c_hum_3_sl;
343 lvector_t< double > day_decay_c_mic_sl;
344 double day_decomp_n_hum_1;
345 double day_decomp_n_hum_2;
346 double day_decomp_n_hum_3;
349 lvector_t< double > day_c_humify_doc_hum_2_sl;
350 lvector_t< double > day_c_humify_sol_hum_1_sl;
351 lvector_t< double > day_c_humify_cel_hum_1_sl;
352 lvector_t< double > day_c_humify_lig_hum_1_sl;
353 lvector_t< double > day_c_humify_lig_hum_2_sl;
354 lvector_t< double > day_c_humify_mic_hum_1_sl;
355 lvector_t< double > day_c_humify_mic_hum_2_sl;
356 lvector_t< double > day_c_humify_hum_1_hum_2_sl;
357 lvector_t< double > day_c_humify_hum_2_hum_3_sl;
360 double day_n_fix_algae;
361 double day_c_fix_algae;
364 double day_doc_prod_decomp_litter;
365 double day_doc_prod_decomp_humus;
366 double day_doc_prod_decomp_aorg;
373 enum atm_eq_liq{ nh3_atm_eq_liq, o2_atm_eq_liq, co2_atm_eq_liq, ch4_atm_eq_liq, n2o_atm_eq_liq, no_atm_eq_liq, radon_atm_eq_liq };
375 size_t subdaily_time_step_;
378 lvector_t< double > co2_auto_sl;
379 lvector_t< double > co2_hetero_sl;
381 lvector< double > cn_hum_1_sl;
382 lvector< double > cn_hum_2_sl;
383 lvector< double > cn_hum_3_sl;
385 lvector< double > freeze_thaw_fact_sl;
386 lvector< double > litter_type_fact_sl;
389 lvector_t< double > day_acetate_cons_fe3_sl;
390 lvector_t< double > day_h2_c_eq_cons_fe3_sl;
391 lvector_t< double > day_fe2_oxidation_sl;
394 lvector_t< double > day_nitrify_n2o_sl;
395 lvector_t< double > day_nit_no2_no3_sl;
398 lvector_t< double > cn_opt_mic_sl;
401 lvector_t< double > h2_sl;
403 lvector_t< double > o2_liq_sl;
404 lvector_t< double > o2_gas_sl;
405 lvector_t< double > o2_consumption_sl;
407 lvector_t< double > ae_acetate_sl;
408 lvector_t< double > an_acetate_sl;
410 lvector_t< double > ch4_liq_sl;
411 lvector_t< double > ch4_gas_sl;
412 lvector_t< double > co2_liq_sl;
413 lvector_t< double > co2_gas_sl;
415 lvector_t< double > nh4_ae_sl;
416 lvector_t< double > nh4_an_sl;
418 lvector_t< double > don_ae_sl;
419 lvector_t< double > don_an_sl;
421 lvector_t< double > no3_ae_sl;
422 lvector_t< double > no3_an_sl;
424 lvector_t< double > doc_ice_sl;
425 lvector_t< double > acetate_ice_sl;
426 lvector_t< double > no3_ice_sl;
427 lvector_t< double > nh4_ice_sl;
428 lvector_t< double > don_ice_sl;
430 lvector_t< double > n2o_liq_sl;
431 lvector_t< double > n2o_gas_sl;
432 lvector_t< double > an_n2o_liq_sl;
433 lvector_t< double > an_n2o_gas_sl;
434 lvector_t< double > n2_gas_sl;
436 lvector_t< double > no_liq_sl;
437 lvector_t< double > no_gas_sl;
438 lvector_t< double > an_no_liq_sl;
439 lvector_t< double > an_no_gas_sl;
441 lvector_t< double > radon_liq_sl;
442 lvector_t< double > radon_gas_sl;
444 lvector_t< double > c_microbial_necromass_sl;
445 lvector_t< double > n_microbial_necromass_sl;
447 lvector_t< double > c_humus_1_sl;
448 lvector_t< double > c_humus_2_sl;
449 lvector_t< double > c_humus_3_sl;
451 lvector_t< double > n_humus_1_sl;
452 lvector_t< double > n_humus_2_sl;
453 lvector_t< double > n_humus_3_sl;
455 lvector_t< double > n_micro_1_sl;
456 lvector_t< double > n_micro_2_sl;
457 lvector_t< double > n_micro_3_sl;
461 lvector_t< double > D_eff_air_fl;
462 lvector_t< double > D_eff_air_sl;
463 lvector_t< double > D_eff_water_sl;
464 lvector_t< double > D_eff_dailyturbation_sl;
465 lvector_t< double > D_eff_plant_sl;
467 lvector_t< double > interface_air_sl;
468 lvector_t< double > interface_delta_x_air_sl;
469 lvector_t< double > interface_delta_x_water_sl;
470 lvector_t< double > interface_delta_x_soil_sl;
472 lvector_t< double > delta_x;
473 lvector_t< double > pore_connectivity_sl;
476 double ph_delta_pab_wl;
477 double ph_delta_urea_wl;
479 lvector_t< double > ph_delta_urea_sl;
481 lvector_t< double > soil_gas_advection_sl;
482 lvector_t< double > v_water_sl;
483 lvector_t< double > v_air_sl;
484 lvector_t< double > v_ice_sl;
486 lvector_t< double > communicate_sl;
487 lvector_t< double > communicate_fsl;
488 lvector_t< double > day_denit_factor_c_sl;
489 lvector_t< double > day_denit_factor_n_sl;
492 lvector_t< double > day_ch4_production_hydrogen_sl;
493 lvector_t< double > day_ch4_production_acetate_sl;
494 lvector_t< double > day_ch4_oxidation_sl;
495 double day_ch4_oxidation_la;
496 double day_ch4_oxidation_ha;
498 lvector< double > subdaily_ch4_bubbling;
499 lvector< double > subdaily_ch4_plant;
500 lvector< double > subdaily_ch4_soil;
501 lvector< double > subdaily_ch4_water;
503 lvector< double > subdaily_ch4_leach;
504 lvector< double > subdaily_ch4_prod;
505 lvector< double > subdaily_ch4_ox;
506 lvector< double > subdaily_ch4_content;
508 lvector< double > subdaily_co2_bubbling;
509 lvector< double > subdaily_co2_plant;
510 lvector< double > subdaily_co2_soil;
511 lvector< double > subdaily_co2_water;
512 lvector< double > subdaily_co2_leach;
515 lvector< double > subdaily_acetate_prod;
516 lvector< double > subdaily_doc_prod;
518 lvector< double > subdaily_o2_bubbling;
519 lvector< double > subdaily_o2_plant;
520 lvector< double > subdaily_o2_soil;
521 lvector< double > subdaily_o2_water;
523 lvector< double > subdaily_n2o_bubbling;
524 lvector< double > subdaily_n2o_plant;
525 lvector< double > subdaily_n2o_soil;
526 lvector< double > subdaily_n2o_water;
528 lvector< double > subdaily_no_bubbling;
529 lvector< double > subdaily_no_plant;
530 lvector< double > subdaily_no_soil;
531 lvector< double > subdaily_no_water;
533 lvector< double > subdaily_nh3_bubbling;
534 lvector< double > subdaily_nh3_plant;
535 lvector< double > subdaily_nh3_soil;
536 lvector< double > subdaily_nh3_water;
538 lvector< double > subdaily_plant_o2_cons;
539 lvector< double > subdaily_flood_o2_conc;
540 lvector< double > subdaily_algae_o2_prod;
542 lvector< double > subdaily_radon_soil;
543 lvector< double > subdaily_radon_plant;
544 lvector< double > subdaily_radon_water;
546 lvector< double > day_doc_prod_sl;
547 lvector< double > day_acetate_prod_sl;
548 lvector< double > day_h2_c_eq_prod_sl;
550 lvector< double > plant_o2_consumption_sl;
552 lvector< double > accumulated_n_nh4_throughfall_sl;
553 lvector< double > accumulated_n_no3_throughfall_sl;
554 lvector< double > accumulated_n_nh4_throughfall_sbl;
555 lvector< double > accumulated_n_no3_throughfall_sbl;
556 double accumulated_n_nh4_throughfall_old;
557 double accumulated_n_no3_throughfall_old;
560 lvector< double > accumulated_n_to_living_plant_and_algae_from_extern_sl;
562 lvector< double > accumulated_n_algae_nh4_uptake_sbl;
563 lvector< double > accumulated_n_algae_no3_uptake_sbl;
564 lvector< double > accumulated_n_algae_nh3_uptake_sbl;
566 lvector< double > accumulated_n_litter_from_plants_below_rawlitter_sl;
567 lvector< double > accumulated_n_litter_from_plants_below_wood_sl;
568 double accumulated_n_litter_from_plants_above_rawlitter;
569 double accumulated_n_litter_from_plants_above_wood;
570 double accumulated_n_litter_from_plants_above_stubble;
571 lvector< double > accumulated_n_aboveground_raw_litter_fragmentation_sl;
572 lvector< double > accumulated_n_belowground_raw_litter_fragmentation_sl;
573 lvector< double > accumulated_n_litter_from_algae_sl;
574 lvector< double > accumulated_n_litter_from_dung_sl;
575 lvector< double > accumulated_n_urea_from_dung_sl;
577 double accumulated_n_export_harvest_cutting_grazing;
578 double accumulated_n_export_harvest_old;
579 double accumulated_c_litter_wood_above_old;
581 lvector< double > accumulated_n_nh4_fertilization_sl;
582 lvector< double > accumulated_n_no3_fertilization_sl;
583 lvector< double > accumulated_n_nh3_fertilization_sl;
584 lvector< double > accumulated_n_don_fertilization_sl;
585 lvector< double > accumulated_n_urea_fertilization_sl;
586 lvector< double > accumulated_n_litter_fertilization_sl;
587 lvector< double > accumulated_n_aorg_fertilization_sl;
588 lvector< double > accumulated_n_nh4_fertilization_sbl;
589 lvector< double > accumulated_n_no3_fertilization_sbl;
590 lvector< double > accumulated_n_nh3_fertilization_sbl;
591 lvector< double > accumulated_n_urea_fertilization_sbl;
593 lvector< double > accumulated_n_surface_litter_incorporation_via_tilling_sl;
594 lvector< double > accumulated_n_litter_tilling_sl;
595 lvector< double > accumulated_n_aorg_tilling_sl;
596 lvector< double > accumulated_n_humus_1_tilling_sl;
597 lvector< double > accumulated_n_humus_2_tilling_sl;
598 lvector< double > accumulated_n_humus_3_tilling_sl;
599 lvector< double > accumulated_n_no3_tilling_sl;
600 lvector< double > accumulated_n_no2_tilling_sl;
601 lvector< double > accumulated_n_no_tilling_sl;
602 lvector< double > accumulated_n_n2o_tilling_sl;
603 lvector< double > accumulated_n_urea_tilling_sl;
604 lvector< double > accumulated_n_don_tilling_sl;
605 lvector< double > accumulated_n_nh4_tilling_sl;
606 lvector< double > accumulated_n_nh3_tilling_sl;
607 lvector< double > accumulated_n_microbes_tilling_sl;
609 lvector< double > accumulated_n_humus_1_spinup_sl;
610 lvector< double > accumulated_n_humus_2_spinup_sl;
611 lvector< double > accumulated_n_humus_3_spinup_sl;
612 lvector< double > accumulated_n_surface_litter_spinup_sl;
613 lvector< double > accumulated_n_litter_spinup_sl;
615 lvector< double > accumulated_n_urea_nh4_hydrolysis_sl;
616 lvector< double > accumulated_n_urea_nh4_hydrolysis_sbl;
618 lvector< double > accumulated_n_nh4_assimilation_sl;
619 lvector< double > accumulated_n_no3_assimilation_sl;
620 lvector< double > accumulated_n_don_assimilation_sl;
622 lvector< double > accumulated_n_nh4_nh3_conversion_sl;
623 lvector< double > accumulated_n_nh3_nh4_conversion_sl;
624 lvector< double > accumulated_n_nh4_nh3_conversion_sbl;
625 lvector< double > accumulated_n_nh3_nh4_conversion_sbl;
627 lvector< double > accumulated_n_micro_leaching_sl;
628 lvector< double > accumulated_n_aorg_leaching_sl;
629 lvector< double > accumulated_n_litter_leaching_sl;
630 lvector< double > accumulated_n_humus_1_leaching_sl;
631 lvector< double > accumulated_n_humus_2_leaching_sl;
632 lvector< double > accumulated_n_humus_3_leaching_sl;
633 lvector< double > accumulated_n_nh4_leaching_sl;
634 lvector< double > accumulated_n_nh3_leaching_sl;
635 lvector< double > accumulated_n_don_leaching_sl;
636 lvector< double > accumulated_n_urea_leaching_sl;
637 lvector< double > accumulated_n_no_leaching_sl;
638 lvector< double > accumulated_n_n2o_leaching_sl;
640 lvector< double > accumulated_n_urea_liq_diffusion_sl;
641 lvector< double > accumulated_n_nh3_liq_diffusion_sl;
642 lvector< double > accumulated_n_nh4_liq_diffusion_sl;
643 lvector< double > accumulated_n_no3_liq_diffusion_sl;
645 lvector< double > accumulated_n_nh4_infiltration_phys_sl;
646 lvector< double > accumulated_n_nh3_infiltration_phys_sl;
647 lvector< double > accumulated_n_urea_infiltration_phys_sl;
648 lvector< double > accumulated_n_no3_infiltration_phys_sl;
649 lvector< double > accumulated_n_don_infiltration_phys_sl;
650 lvector< double > accumulated_n_aorg_infiltration_phys_sl;
652 lvector< double > accumulated_n_nh4_infiltration_leach_sl;
653 lvector< double > accumulated_n_nh3_infiltration_leach_sl;
654 lvector< double > accumulated_n_urea_infiltration_leach_sl;
655 lvector< double > accumulated_n_no3_infiltration_leach_sl;
656 lvector< double > accumulated_n_don_infiltration_leach_sl;
657 lvector< double > accumulated_n_no_infiltration_leach_sl;
658 lvector< double > accumulated_n_n2o_infiltration_leach_sl;
660 lvector< double > accumulated_n_nh4_infiltration_liqdif_sl;
661 lvector< double > accumulated_n_nh3_infiltration_liqdif_sl;
662 lvector< double > accumulated_n_urea_infiltration_liqdif_sl;
663 lvector< double > accumulated_n_no3_infiltration_liqdif_sl;
665 lvector< double > accumulated_c_ch4_bubbling_sl;
666 lvector< double > accumulated_c_ch4_bubbling_sbl;
668 lvector< double > accumulated_n_nh3_bubbling_sl;
669 lvector< double > accumulated_n_no_bubbling_sl;
670 lvector< double > accumulated_n_n2o_bubbling_sl;
671 lvector< double > accumulated_n_nh3_bubbling_sbl;
672 lvector< double > accumulated_n_no_bubbling_sbl;
673 lvector< double > accumulated_n_n2o_bubbling_sbl;
675 lvector< double > accumulated_n_nh3_dissolution_sbl;
676 lvector< double > accumulated_n_no_dissolution_sbl;
677 lvector< double > accumulated_n_n2o_dissolution_sbl;
679 lvector< double > accumulated_n_nh3_phys_diffusion_sl;
680 lvector< double > accumulated_n_no_phys_diffusion_sl;
681 lvector< double > accumulated_n_n2o_phys_diffusion_sl;
682 lvector< double > accumulated_n_nh3_gas_diffusion_sl;
683 lvector< double > accumulated_n_no_gas_diffusion_sl;
684 lvector< double > accumulated_n_n2o_gas_diffusion_sl;
686 lvector< double > accumulated_n_micro_perturbation_sl;
687 lvector< double > accumulated_n_aorg_perturbation_sl;
688 lvector< double > accumulated_n_litter_perturbation_sl;
689 lvector< double > accumulated_n_humus_1_perturbation_sl;
690 lvector< double > accumulated_n_humus_2_perturbation_sl;
691 lvector< double > accumulated_n_humus_3_perturbation_sl;
693 lvector< double > accumulated_n_nh4_no2_nitrification_sl;
694 lvector< double > accumulated_n_nh4_no_nitrification_sl;
695 lvector< double > accumulated_n_nh4_n2o_nitrification_sl;
696 lvector< double > accumulated_n_no2_no3_nitrification_sl;
698 lvector< double > accumulated_n_no3_no2_denitrification_sl;
699 lvector< double > accumulated_n_no3_no_denitrification_sl;
700 lvector< double > accumulated_n_no3_n2o_denitrification_sl;
701 lvector< double > accumulated_n_no3_n2_denitrification_sl;
702 lvector< double > accumulated_n_no2_no_denitrification_sl;
703 lvector< double > accumulated_n_no2_n2o_denitrification_sl;
704 lvector< double > accumulated_n_no2_n2_denitrification_sl;
705 lvector< double > accumulated_n_no_n2o_denitrification_sl;
706 lvector< double > accumulated_n_no_n2_denitrification_sl;
707 lvector< double > accumulated_n_n2o_n2_denitrification_sl;
709 lvector< double > accumulated_n_no2_chemodenitrification_sl;
711 lvector< double > accumulated_n_mic_naorg_decay_sl;
712 lvector< double > accumulated_n_mic_nh4_mineral_sl;
713 lvector< double > accumulated_n_mic_don_dissolve_sl;
715 lvector< double > accumulated_n_aorg_nh4_mineral_sl;
716 lvector< double > accumulated_n_aorg_don_dissolve_sl;
718 lvector< double > accumulated_n_humus_1_don_dissolve_sl;
719 lvector< double > accumulated_n_humus_1_nh4_mineral_sl;
720 lvector< double > accumulated_n_humus_2_don_dissolve_sl;
721 lvector< double > accumulated_n_humus_2_nh4_mineral_sl;
722 lvector< double > accumulated_n_humus_3_don_dissolve_sl;
723 lvector< double > accumulated_n_humus_3_nh4_mineral_sl;
725 lvector< double > accumulated_n_litter_don_dissolve_sl;
726 lvector< double > accumulated_n_litter_nh4_mineral_sl;
728 lvector< double > accumulated_n_don_humus_1_humify_sl;
729 lvector< double > accumulated_n_don_humus_2_humify_sl;
730 lvector< double > accumulated_n_don_humus_3_humify_sl;
731 lvector< double > accumulated_n_litter_humus_1_humify_sl;
733 lvector< double > accumulated_c_root_exsudates_old_sl;
735 lvector_t< double > ranvf_sl;
736 lvector_t< double > cumulative_freezing_degree_days_sl;
737 lvector_t< double > cfdd_turnover_sl;
739#ifdef METRX_ANVF_TYPES
740 lvector_t< double > anvf_pnet_sl;
741 lvector_t< double > anvf_dndccan_sl;
742 lvector_t< double > anvf_nloss_sl;
749 SpinUp(
size_t _y,
size_t _sl_cnt) : spinup_type_( 0),
751 executed_months_( 0),
753 c_to_humus_1_sl( _sl_cnt, 0.0),
754 c_to_humus_2_sl( _sl_cnt, 0.0),
755 c_to_humus_3_sl( _sl_cnt, 0.0),
756 humify_humus_1_to_humus_2_sl( _sl_cnt, 0.0),
757 humify_humus_2_to_humus_3_sl( _sl_cnt, 0.0),
758 decompose_hum_1( _sl_cnt, 0.0),
759 decompose_hum_2( _sl_cnt, 0.0),
760 decompose_hum_3( _sl_cnt, 0.0),
762 loose_lit_1( _sl_cnt, 0.0),
763 loose_lit_2( _sl_cnt, 0.0),
764 loose_lit_3( _sl_cnt, 0.0),
766 c_to_lit_1( _sl_cnt, 0.0),
767 c_to_lit_2( _sl_cnt, 0.0),
768 c_to_lit_3( _sl_cnt, 0.0),
770 loose_aorg( _sl_cnt, 0.0),
771 c_to_aorg( _sl_cnt, 0.0),
773 c_humus_1_temp_sl( _sl_cnt, 0.0),
774 c_humus_2_temp_sl( _sl_cnt, 0.0),
775 c_humus_3_temp_sl( _sl_cnt, 0.0),
777 c_litter_1_temp_sl( _sl_cnt, 0.0),
778 c_litter_2_temp_sl( _sl_cnt, 0.0),
779 c_litter_3_temp_sl( _sl_cnt, 0.0),
781 n_litter_1_temp_sl( _sl_cnt, 0.0),
782 n_litter_2_temp_sl( _sl_cnt, 0.0),
783 n_litter_3_temp_sl( _sl_cnt, 0.0),
785 c_aorg_temp_sl( _sl_cnt, 0.0),
786 n_aorg_temp_sl( _sl_cnt, 0.0),
788 cn_humus_2_temp_sl( _sl_cnt, 0.0),
789 cn_humus_3_temp_sl( _sl_cnt, 0.0),
794 this->set_spinup_years( _y);
802 void reset(
bool _reset_litter =
true)
804 c_to_humus_1_sl = 0.0;
805 c_to_humus_2_sl = 0.0;
806 c_to_humus_3_sl = 0.0;
807 humify_humus_1_to_humus_2_sl = 0.0;
808 humify_humus_2_to_humus_3_sl = 0.0;
809 decompose_hum_1 = 0.0;
810 decompose_hum_2 = 0.0;
811 decompose_hum_3 = 0.0;
830 inline size_t spinup_type()
const
832 return this->spinup_type_;
835 inline size_t spinup_months()
const
837 return this->spinup_years_ * 12;
840 inline size_t spinup_years()
const
842 return this->spinup_years_;
851 void set_spinup_type(
size_t _t)
853 this->spinup_type_ = _t;
856 void set_spinup_years(
size_t _y)
858 this->spinup_years_ = _y;
859 if ( this->spinup_years_ > 0)
861 this->execute_ =
true;
865 size_t simulated_years( cbm::sclock_t
const *)
const;
867 bool spinup_stage( cbm::sclock_t
const *)
const;
869 bool execute_spinup( cbm::sclock_t
const *);
872 size_t spinup_years_;
873 size_t executed_months_;
881 lvector< double > c_to_humus_1_sl;
882 lvector< double > c_to_humus_2_sl;
883 lvector< double > c_to_humus_3_sl;
885 lvector< double > humify_humus_1_to_humus_2_sl;
886 lvector< double > humify_humus_2_to_humus_3_sl;
888 lvector< double > decompose_hum_1;
889 lvector< double > decompose_hum_2;
890 lvector< double > decompose_hum_3;
892 lvector< double > loose_lit_1;
893 lvector< double > loose_lit_2;
894 lvector< double > loose_lit_3;
896 lvector< double > c_to_lit_1;
897 lvector< double > c_to_lit_2;
898 lvector< double > c_to_lit_3;
900 lvector< double > loose_aorg;
901 lvector< double > c_to_aorg;
903 lvector< double > c_humus_1_temp_sl;
904 lvector< double > c_humus_2_temp_sl;
905 lvector< double > c_humus_3_temp_sl;
907 lvector< double > c_litter_1_temp_sl;
908 lvector< double > c_litter_2_temp_sl;
909 lvector< double > c_litter_3_temp_sl;
911 lvector< double > n_litter_1_temp_sl;
912 lvector< double > n_litter_2_temp_sl;
913 lvector< double > n_litter_3_temp_sl;
915 lvector< double > c_aorg_temp_sl;
916 lvector< double > n_aorg_temp_sl;
918 lvector< double > cn_humus_2_temp_sl;
919 lvector< double > cn_humus_3_temp_sl;
938 MeTrX_write_output();
946 MeTrX_write_output_daily();
954 MeTrX_write_output_yearly();
962 MeTrX_write_output_layer_daily();
970 MeTrX_write_output_layer_yearly();
978 MeTrX_write_output_fluxes();
986 MeTrX_write_output_pools();
994 MeTrX_write_output_subdaily();
1002 MeTrX_write_rates();
1045 MeTrX_reset_subdaily();
1053 MeTrX_reset_daily();
1069 MeTrX_check_for_negative_value(
1084 MeTrX_balance_check(
1152 radon_emanation_coeff(
1178 lvector< double > &accumulated_litter_sl);
1189 MeTrX_liq_diffusion_scale(
double &_out, lvector_t< double > &_scale);
1224 MeTrX_ebullition_transfer(
1306 MeTrX_get_mineral_efficiency(
1314 MeTrX_get_micro_c_decay_max(
1322 MeTrX_get_micro_n_decay_max(
1330 MeTrX_dead_microbial_biomass_allocation(
1341 MeTrX_execute_c_growth(
1352 MeTrX_execute_co2_prod(
1362 MeTrX_execute_n_assimilation(
1471 MeTrX_get_fact_ph_som_turnover(
size_t const &);
1481 MeTrX_get_fact_clay_decomp(
size_t const &);
1483 MeTrX_get_fact_clay_humify(
size_t const &);
1485 MeTrX_get_fact_t_mic(
size_t const &);
1487 MeTrX_get_fact_m_mic(
size_t const &);
1489 MeTrX_get_fact_tm_mic(
size_t const &);
1501 inline double MeTrX_get_fact_mm(
double const &_conc,
1504 return _conc / (_k + _conc);
1512 double const &_k_mm)
1514 return _k_mm * sc_.h_sl[_sl];
1538 MeTrX_get_atm_eq_liq( atm_eq_liq
const &,
1547 MeTrX_receive_state();
1564 MeTrX_dissolution_soil(
double const &,
1574 MeTrX_update_soil_discretization(
bool);
1577 MeTrX_forest_ecosytem();