LandscapeDNDC 1.37.0
ld_enhanced_efficiency_nitrogen_fertilizers.h
1
10#ifndef LD_ENHANCEDEFFICIENCYNITROGENFERTILIZERS_H_
11#define LD_ENHANCEDEFFICIENCYNITROGENFERTILIZERS_H_
12
13#include "ldndc.h"
14#include "state/mbe_state.h"
15
16namespace ldndc {
17
18class LDNDC_API ControlledReleaseNitrogenFertilizer
19{
20 static const double T_REF;
21
22public:
23 ControlledReleaseNitrogenFertilizer( double /* controlled release q10 */,
24 double /* controlled release lag period */,
25 double /* controlled release t80 */,
26 double /* controlled release wfps factor */,
27 double /* maximum nitrification inhibition */,
28 double /* nitrification inhibition stability_1 */,
29 double /* nitrification inhibition stability_2 */,
30 double /* nitrification inhibition dilution */);
31 ~ControlledReleaseNitrogenFertilizer();
32
33 /**********************/
34 /* controlled release */
35 /**********************/
36
37 double const EEF_CONTROLLED_RELEASE_Q10;
38 double const EEF_CONTROLLED_RELEASE_LAG_PERIOD;
39 double const EEF_CONTROLLED_RELEASE_T80;
40 double const EEF_CONTROLLED_RELEASE_WFPS_FACTOR;
41
42 struct crnf_fertilizer
43 {
44 crnf_fertilizer( double /* amount */);
45 ~crnf_fertilizer();
46
47 double n_crnf;
48 double n_crnf_start;
49
50 //
51 double t_eff_crnf;
52 };
53
54 std::vector< crnf_fertilizer > crnf;
55
56public:
57 lerr_t
58 add_crnf( double /* amount */);
59
60 lerr_t
61 update_crnf( double /* water filled pore space */,
62 double /* temperature */,
63 double /* scaling due to time resolution */,
64 double /* scaling due to vertical distribution */);
65
66 double
67 get_crnf_teff_mean();
68
69 double
70 get_crnf_release( double /* amount */);
71
72 double
73 get_crnf_release_fraction( double);
74
75 double
76 get_crnf_release_fraction_mean();
77
78 /****************************/
79 /* nitrification inhibition */
80 /****************************/
81public:
82 lerr_t
83 add_urease_inhibitior( double /* amount */);
84
85 lerr_t
86 add_nitrification_inhibitior( double /* amount */);
87
88 lerr_t
89 update_urease_inhibition( double /* temperature */,
90 double /* total soil inhibitor */,
91 double & /* layer specific inhibitor */);
92
93 lerr_t
94 update_nitrification_inhibition( double /* temperature */,
95 double /* total soil inhibitor */,
96 double & /* layer specific inhibitor */);
97
98 double
99 get_nitrification_inhibition( double /* layer specific inhibitor */);
100
101 double
102 get_urease_inhibition( double /* layer specific inhibitor */);
103
104 double
105 get_ni_stability();
106
107 double
108 get_ui_stability();
109
110 double
111 get_ni_dilution( double /* layer specific inhibitor */);
112
113 double
114 get_ui_dilution( double /* layer specific inhibitor */);
115
116private:
117
118 double const EEF_MAXIMUM_NITRIFICATION_INHIBITION;
119 double const EEF_INHIBITION_STABILITY_1;
120 double const EEF_INHIBITION_STABILITY_2;
121 double const EEF_INHIBITION_DILUTION;
122
123 double cumulative_truncated_soil_temperature_ui; // [oC]
124 double cumulative_truncated_soil_temperature_ni; // [oC]
125
126 double ui_start; // [kg N m-2];
127 double ni_start; // [kg N m-2];
128};
129
130}
131
132#endif /* !LD_ENHANCEDEFFICIENCYNITROGENFERTILIZERS_H_ */
133
Spatially explicit groundwater model.
Definition: airchemistryput.h:15