Downwards transport of solutes, litter and humus with percolation water.
31 if ( have_water_table &&
32 cbm::flt_greater_zero( infiltration))
34 ldndc_kassert( h_wl > 0.0);
36 accumulated_n_nh4_infiltration_leach_sl[0] -= nh4_an_sl[0] + sc_.coated_nh4_sl[0];
37 accumulated_n_nh3_infiltration_leach_sl[0] -= sc_.nh3_liq_sl[0];
38 accumulated_n_no_infiltration_leach_sl[0] -= an_no_liq_sl[0];
39 accumulated_n_n2o_infiltration_leach_sl[0] -= an_n2o_liq_sl[0];
40 accumulated_n_urea_infiltration_leach_sl[0] -= sc_.urea_sl[0];
41 accumulated_n_no3_infiltration_leach_sl[0] -= no3_an_sl[0];
42 accumulated_n_don_infiltration_leach_sl[0] -= don_an_sl[0];
44 double const leach_fact_sbl( cbm::bound_max( infiltration / h_wl, 0.99));
45 LEACH_DOWN( sb_.ch4_sbl[0], ch4_liq_sl[0], leach_fact_sbl);
46 LEACH_DOWN( sb_.o2_sbl[0], o2_liq_sl[0], leach_fact_sbl);
47 LEACH_DOWN( sb_.nh4_sbl[0], nh4_an_sl[0], leach_fact_sbl);
48 LEACH_DOWN( sb_.coated_nh4_sbl[0], sc_.coated_nh4_sl[0], leach_fact_sbl);
49 LEACH_DOWN( sb_.nh3_sbl[0], sc_.nh3_liq_sl[0], leach_fact_sbl);
50 LEACH_DOWN( sb_.no_sbl[0], an_no_liq_sl[0], leach_fact_sbl);
51 LEACH_DOWN( sb_.n2o_sbl[0], an_n2o_liq_sl[0], leach_fact_sbl);
52 LEACH_DOWN( sb_.urea_sbl[0], sc_.urea_sl[0], leach_fact_sbl);
53 LEACH_DOWN( sb_.no3_sbl[0], no3_an_sl[0], leach_fact_sbl);
54 LEACH_DOWN( sb_.don_sbl[0], don_an_sl[0], leach_fact_sbl);
55 LEACH_DOWN( sb_.doc_sbl[0], sc_.doc_sl[0], leach_fact_sbl);
56 LEACH_DOWN( sb_.co2_sbl[0], co2_liq_sl[0], leach_fact_sbl);
57 LEACH_DOWN( sb_.so4_sbl[0], sc_.so4_sl[0], leach_fact_sbl);
58 LEACH_DOWN( sb_.ni_sbl[0], sc_.ni_sl[0], leach_fact_sbl);
59 LEACH_DOWN( sb_.ui_sbl[0], sc_.ui_sl[0], leach_fact_sbl);
60 if ( have_radon_diffusion)
62 LEACH_DOWN( sb_.radon_sbl[0], radon_liq_sl[0], leach_fact_sbl);
65 accumulated_n_nh4_infiltration_leach_sl[0] += nh4_an_sl[0] + sc_.coated_nh4_sl[0];
66 accumulated_n_nh3_infiltration_leach_sl[0] += sc_.nh3_liq_sl[0];
67 accumulated_n_no_infiltration_leach_sl[0] += an_no_liq_sl[0];
68 accumulated_n_n2o_infiltration_leach_sl[0] += an_n2o_liq_sl[0];
69 accumulated_n_urea_infiltration_leach_sl[0] += sc_.urea_sl[0];
70 accumulated_n_no3_infiltration_leach_sl[0] += no3_an_sl[0];
71 accumulated_n_don_infiltration_leach_sl[0] += don_an_sl[0];
73 for (
size_t sbl = 1; sbl < sb_.surfacebulk_layer_cnt(); ++sbl)
75 size_t const sbl_plus( sbl - 1);
76 LEACH_DOWN( sb_.ch4_sbl[sbl], sb_.ch4_sbl[sbl_plus], leach_fact_sbl);
77 LEACH_DOWN( sb_.o2_sbl[sbl], sb_.o2_sbl[sbl_plus], leach_fact_sbl);
78 LEACH_DOWN( sb_.nh4_sbl[sbl], sb_.nh4_sbl[sbl_plus], leach_fact_sbl);
79 LEACH_DOWN( sb_.coated_nh4_sbl[sbl], sb_.coated_nh4_sbl[sbl_plus], leach_fact_sbl);
80 LEACH_DOWN( sb_.nh3_sbl[sbl], sb_.nh3_sbl[sbl_plus], leach_fact_sbl);
81 LEACH_DOWN( sb_.no_sbl[sbl], sb_.no_sbl[sbl_plus], leach_fact_sbl);
82 LEACH_DOWN( sb_.n2o_sbl[sbl], sb_.n2o_sbl[sbl_plus], leach_fact_sbl);
83 LEACH_DOWN( sb_.urea_sbl[sbl], sb_.urea_sbl[sbl_plus], leach_fact_sbl);
84 LEACH_DOWN( sb_.no3_sbl[sbl], sb_.no3_sbl[sbl_plus], leach_fact_sbl);
85 LEACH_DOWN( sb_.don_sbl[sbl], sb_.don_sbl[sbl_plus], leach_fact_sbl);
86 LEACH_DOWN( sb_.doc_sbl[sbl], sb_.doc_sbl[sbl_plus], leach_fact_sbl);
87 LEACH_DOWN( sb_.co2_sbl[sbl], sb_.co2_sbl[sbl_plus], leach_fact_sbl);
88 LEACH_DOWN( sb_.so4_sbl[sbl], sb_.so4_sbl[sbl_plus], leach_fact_sbl);
89 LEACH_DOWN( sb_.ni_sbl[sbl], sb_.ni_sbl[sbl_plus], leach_fact_sbl);
90 if ( have_radon_diffusion)
92 LEACH_DOWN( sb_.radon_sbl[sbl], sb_.radon_sbl[sbl_plus], leach_fact_sbl);
101 if ( cbm::flt_greater_zero( waterflux_sl[0]) &&
102 cbm::flt_greater_zero( v_water_sl[0]))
105 size_t const sl_plus( 1);
107 double const leach_fact( cbm::bound_min( 0.0, waterflux_sl[sl] / v_water_sl[sl]));
109 double const leach_fact_nh4( cbm::bound_max( leach_fact * sipar_.RETNH4(), 0.9999));
110 double const leach_fact_no3( cbm::bound_max( leach_fact * sipar_.RETNO3(), 0.9999));
111 double const leach_fact_doc( cbm::bound_max( leach_fact * sipar_.RETDOC(), 0.9999));
112 double const leach_fact_mic( cbm::bound_max( leach_fact * sipar_.METRX_RET_MICROBES(), 0.9999));
113 double const leach_fact_lit( cbm::bound_max( leach_fact * sipar_.METRX_RET_LITTER(), 0.9999));
114 double const leach_fact_hum( cbm::bound_max( leach_fact * sipar_.METRX_RET_HUMUS(), 0.9999));
115 double const leach_fact_dissolved_gases( cbm::bound_max( leach_fact, 0.9999));
117 if ( spinup_.spinup_stage( this->lclock()))
119 spinup_.loose_lit_1[sl] += leach_fact_lit;
120 spinup_.loose_lit_2[sl] += leach_fact_lit;
121 spinup_.loose_lit_3[sl] += leach_fact_lit;
123 spinup_.loose_aorg[sl] += leach_fact_mic;
125 spinup_.decompose_hum_1[sl] += leach_fact_hum;
126 spinup_.decompose_hum_2[sl] += leach_fact_hum;
127 spinup_.decompose_hum_3[sl] += leach_fact_hum;
129 spinup_.c_to_lit_1[sl_plus] += sc_.C_lit1_sl[sl] * leach_fact_lit;
130 spinup_.c_to_lit_2[sl_plus] += sc_.C_lit2_sl[sl] * leach_fact_lit;
131 spinup_.c_to_lit_3[sl_plus] += sc_.C_lit3_sl[sl] * leach_fact_lit;
133 spinup_.c_to_aorg[sl_plus] += sc_.C_aorg_sl[sl] * leach_fact_mic;
135 spinup_.c_to_humus_1_sl[sl_plus] += c_humus_1_sl[sl] * leach_fact_hum;
136 spinup_.c_to_humus_2_sl[sl_plus] += c_humus_2_sl[sl] * leach_fact_hum;
137 spinup_.c_to_humus_3_sl[sl_plus] += c_humus_3_sl[sl] * leach_fact_hum;
140 accumulated_n_aorg_leaching_sl[sl] += sc_.N_aorg_sl[sl] * leach_fact_mic;
141 LEACH_DOWN( sc_.C_aorg_sl[sl], sc_.C_aorg_sl[sl_plus], leach_fact_mic);
142 LEACH_DOWN( sc_.N_aorg_sl[sl], sc_.N_aorg_sl[sl_plus], leach_fact_mic);
144 transport_.leach_down_epsilon( sc_.C_micro1_sl[sl], sc_.C_micro1_sl[sl_plus], leach_fact_mic, MeTrX_get_micro_c_decay_max( sc_.C_micro1_sl[sl]));
145 transport_.leach_down_epsilon( sc_.C_micro2_sl[sl], sc_.C_micro2_sl[sl_plus], leach_fact_mic, MeTrX_get_micro_c_decay_max( sc_.C_micro2_sl[sl]));
146 transport_.leach_down_epsilon( sc_.C_micro3_sl[sl], sc_.C_micro3_sl[sl_plus], leach_fact_mic, MeTrX_get_micro_c_decay_max( sc_.C_micro3_sl[sl]));
148 if( n_micro_1_sl[sl] > MeTrX_get_micro_n_decay_max( n_micro_1_sl[sl]) )
150 accumulated_n_micro_leaching_sl[sl] += ( n_micro_1_sl[sl] - MeTrX_get_micro_n_decay_max( n_micro_1_sl[sl]) ) * leach_fact_mic;
152 if( n_micro_2_sl[sl] > MeTrX_get_micro_n_decay_max( n_micro_2_sl[sl]) )
154 accumulated_n_micro_leaching_sl[sl] += ( n_micro_2_sl[sl] - MeTrX_get_micro_n_decay_max( n_micro_2_sl[sl]) ) * leach_fact_mic;
156 if( n_micro_3_sl[sl] > MeTrX_get_micro_n_decay_max( n_micro_3_sl[sl]) )
158 accumulated_n_micro_leaching_sl[sl] += ( n_micro_3_sl[sl] - MeTrX_get_micro_n_decay_max( n_micro_3_sl[sl]) ) * leach_fact_mic;
160 transport_.leach_down_epsilon( n_micro_1_sl[sl], n_micro_1_sl[sl_plus], leach_fact_mic, MeTrX_get_micro_n_decay_max( n_micro_1_sl[sl]));
161 transport_.leach_down_epsilon( n_micro_2_sl[sl], n_micro_2_sl[sl_plus], leach_fact_mic, MeTrX_get_micro_n_decay_max( n_micro_2_sl[sl]));
162 transport_.leach_down_epsilon( n_micro_3_sl[sl], n_micro_3_sl[sl_plus], leach_fact_mic, MeTrX_get_micro_n_decay_max( n_micro_3_sl[sl]));
164 LEACH_DOWN( sc_.C_lit1_sl[sl], sc_.C_lit1_sl[sl_plus], leach_fact_lit);
165 LEACH_DOWN( sc_.C_lit2_sl[sl], sc_.C_lit2_sl[sl_plus], leach_fact_lit);
166 LEACH_DOWN( sc_.C_lit3_sl[sl], sc_.C_lit3_sl[sl_plus], leach_fact_lit);
168 accumulated_n_litter_leaching_sl[sl] += (sc_.N_lit1_sl[sl] + sc_.N_lit2_sl[sl] + sc_.N_lit3_sl[sl]) * leach_fact_lit;
169 LEACH_DOWN( sc_.N_lit1_sl[sl], sc_.N_lit1_sl[sl_plus], leach_fact_lit);
170 LEACH_DOWN( sc_.N_lit2_sl[sl], sc_.N_lit2_sl[sl_plus], leach_fact_lit);
171 LEACH_DOWN( sc_.N_lit3_sl[sl], sc_.N_lit3_sl[sl_plus], leach_fact_lit);
173 LEACH_DOWN( c_humus_1_sl[sl], c_humus_1_sl[sl_plus], leach_fact_hum);
174 LEACH_DOWN( c_humus_2_sl[sl], c_humus_2_sl[sl_plus], leach_fact_hum);
175 LEACH_DOWN( c_humus_3_sl[sl], c_humus_3_sl[sl_plus], leach_fact_hum);
177 accumulated_n_humus_1_leaching_sl[sl] += n_humus_1_sl[sl] * leach_fact_hum;
178 accumulated_n_humus_2_leaching_sl[sl] += n_humus_2_sl[sl] * leach_fact_hum;
179 accumulated_n_humus_3_leaching_sl[sl] += n_humus_3_sl[sl] * leach_fact_hum;
180 LEACH_DOWN( n_humus_1_sl[sl], n_humus_1_sl[sl_plus], leach_fact_hum);
181 LEACH_DOWN( n_humus_2_sl[sl], n_humus_2_sl[sl_plus], leach_fact_hum);
182 LEACH_DOWN( n_humus_3_sl[sl], n_humus_3_sl[sl_plus], leach_fact_hum);
184 accumulated_n_nh4_leaching_sl[sl] += (nh4_ae_sl[sl] + nh4_an_sl[sl] + sc_.coated_nh4_sl[sl]) * leach_fact_nh4;
185 accumulated_n_nh3_leaching_sl[sl] += sc_.nh3_liq_sl[sl] * leach_fact_doc;
186 accumulated_n_urea_leaching_sl[sl] += sc_.urea_sl[sl] * leach_fact_doc;
187 LEACH_DOWN( nh4_ae_sl[sl], nh4_ae_sl[sl_plus], leach_fact_nh4);
188 LEACH_DOWN( nh4_an_sl[sl], nh4_an_sl[sl_plus], leach_fact_nh4);
189 LEACH_DOWN( sc_.coated_nh4_sl[sl], sc_.coated_nh4_sl[sl_plus], leach_fact_nh4);
190 LEACH_DOWN( sc_.nh3_liq_sl[sl], sc_.nh3_liq_sl[sl_plus], leach_fact_doc);
191 LEACH_DOWN( sc_.urea_sl[sl], sc_.urea_sl[sl_plus], leach_fact_doc);
193 sc_.accumulated_n_no3_leaching_sl[sl] += (no3_ae_sl[sl] + no3_an_sl[sl]) * leach_fact_no3;
194 LEACH_DOWN( no3_ae_sl[sl], no3_ae_sl[sl_plus], leach_fact_no3);
195 LEACH_DOWN( no3_an_sl[sl], no3_an_sl[sl_plus], leach_fact_no3);
197 accumulated_n_don_leaching_sl[sl] += (don_ae_sl[sl] + don_an_sl[sl]) * leach_fact_doc;
198 LEACH_DOWN( don_ae_sl[sl], don_ae_sl[sl_plus], leach_fact_doc);
199 LEACH_DOWN( don_an_sl[sl], don_an_sl[sl_plus], leach_fact_doc);
200 LEACH_DOWN( sc_.doc_sl[sl], sc_.doc_sl[sl_plus], leach_fact_doc);
201 LEACH_DOWN( sc_.an_doc_sl[sl], sc_.an_doc_sl[sl_plus], leach_fact_doc);
202 LEACH_DOWN( ae_acetate_sl[sl], ae_acetate_sl[sl_plus], leach_fact_doc);
203 LEACH_DOWN( an_acetate_sl[sl], an_acetate_sl[sl_plus], leach_fact_doc);
205 accumulated_n_no_leaching_sl[sl] += (no_liq_sl[sl]+an_no_liq_sl[sl]) * leach_fact_dissolved_gases;
206 accumulated_n_n2o_leaching_sl[sl] += (n2o_liq_sl[sl]+an_n2o_liq_sl[sl]) * leach_fact_dissolved_gases;
207 LEACH_DOWN( no_liq_sl[sl], no_liq_sl[sl_plus], leach_fact_dissolved_gases);
208 LEACH_DOWN( an_no_liq_sl[sl], an_no_liq_sl[sl_plus], leach_fact_dissolved_gases);
209 LEACH_DOWN( n2o_liq_sl[sl], n2o_liq_sl[sl_plus], leach_fact_dissolved_gases);
210 LEACH_DOWN( an_n2o_liq_sl[sl], an_n2o_liq_sl[sl_plus], leach_fact_dissolved_gases);
212 LEACH_DOWN( ch4_liq_sl[sl], ch4_liq_sl[sl_plus], leach_fact_dissolved_gases);
213 LEACH_DOWN( co2_liq_sl[sl], co2_liq_sl[sl_plus], leach_fact_dissolved_gases);
214 LEACH_DOWN( o2_liq_sl[sl], o2_liq_sl[sl_plus], leach_fact_dissolved_gases);
216 LEACH_DOWN( sc_.so4_sl[sl], sc_.so4_sl[sl_plus], leach_fact_no3);
217 LEACH_DOWN( sc_.ni_sl[sl], sc_.ni_sl[sl_plus], leach_fact_doc);
218 LEACH_DOWN( sc_.ui_sl[sl], sc_.ui_sl[sl_plus], leach_fact_doc);
220 if ( have_radon_diffusion)
222 LEACH_DOWN( radon_liq_sl[sl], radon_liq_sl[sl_plus], leach_fact_dissolved_gases);
226 for(
size_t sl = 1; sl < sl_.soil_layer_cnt()-1; ++sl)
228 if ( cbm::flt_equal_zero( v_water_sl[sl]) ||
229 cbm::flt_equal_zero( waterflux_sl[sl]))
234 size_t sl_plus( sl + 1);
235 if ( cbm::flt_less( waterflux_sl[sl], 0.0))
241 double const leach_fact( std::abs( waterflux_sl[sl] / v_water_sl[sl]));
243 double const leach_fact_nh4( cbm::bound_max( leach_fact * sipar_.RETNH4(), 0.9999));
244 double const leach_fact_no3( cbm::bound_max( leach_fact * sipar_.RETNO3(), 0.9999));
245 double const leach_fact_doc( cbm::bound_max( leach_fact * sipar_.RETDOC(), 0.9999));
246 double const leach_fact_mic( cbm::bound_max( leach_fact * sipar_.METRX_RET_MICROBES(), 0.9999));
247 double const leach_fact_lit( cbm::bound_max( leach_fact * sipar_.METRX_RET_LITTER(), 0.9999));
248 double const leach_fact_hum( cbm::bound_max( leach_fact * sipar_.METRX_RET_HUMUS(), 0.9999));
249 double const leach_fact_dissolved_gases( cbm::bound_max( leach_fact, 0.9999));
251 if ( spinup_.spinup_stage( this->lclock()))
253 spinup_.loose_lit_1[sl] += leach_fact_lit;
254 spinup_.loose_lit_2[sl] += leach_fact_lit;
255 spinup_.loose_lit_3[sl] += leach_fact_lit;
257 spinup_.loose_aorg[sl] += leach_fact_mic;
259 spinup_.decompose_hum_1[sl] += leach_fact_hum;
260 spinup_.decompose_hum_2[sl] += leach_fact_hum;
261 spinup_.decompose_hum_3[sl] += leach_fact_hum;
263 spinup_.c_to_lit_1[sl_plus] += sc_.C_lit1_sl[sl] * leach_fact_lit;
264 spinup_.c_to_lit_2[sl_plus] += sc_.C_lit2_sl[sl] * leach_fact_lit;
265 spinup_.c_to_lit_3[sl_plus] += sc_.C_lit3_sl[sl] * leach_fact_lit;
267 spinup_.c_to_aorg[sl_plus] += sc_.C_aorg_sl[sl] * leach_fact_mic;
269 spinup_.c_to_humus_1_sl[sl_plus] += c_humus_1_sl[sl] * leach_fact_hum;
270 spinup_.c_to_humus_2_sl[sl_plus] += c_humus_2_sl[sl] * leach_fact_hum;
271 spinup_.c_to_humus_3_sl[sl_plus] += c_humus_3_sl[sl] * leach_fact_hum;
274 accumulated_n_aorg_leaching_sl[sl] += sc_.N_aorg_sl[sl] * leach_fact_mic;
275 LEACH_DOWN( sc_.C_aorg_sl[sl], sc_.C_aorg_sl[sl_plus], leach_fact_mic);
276 LEACH_DOWN( sc_.N_aorg_sl[sl], sc_.N_aorg_sl[sl_plus], leach_fact_mic);
278 LEACH_DOWN_EPSILON( sc_.C_micro1_sl[sl], sc_.C_micro1_sl[sl_plus], leach_fact_mic, MeTrX_get_micro_c_decay_max( sc_.C_micro1_sl[sl]));
279 LEACH_DOWN_EPSILON( sc_.C_micro2_sl[sl], sc_.C_micro2_sl[sl_plus], leach_fact_mic, MeTrX_get_micro_c_decay_max( sc_.C_micro2_sl[sl]));
280 LEACH_DOWN_EPSILON( sc_.C_micro3_sl[sl], sc_.C_micro3_sl[sl_plus], leach_fact_mic, MeTrX_get_micro_c_decay_max( sc_.C_micro3_sl[sl]));
282 if( n_micro_1_sl[sl] > MeTrX_get_micro_n_decay_max( n_micro_1_sl[sl]) )
284 accumulated_n_micro_leaching_sl[sl] += ( n_micro_1_sl[sl] - MeTrX_get_micro_n_decay_max( n_micro_1_sl[sl]) ) * leach_fact_mic;
286 if( n_micro_2_sl[sl] > MeTrX_get_micro_n_decay_max( n_micro_2_sl[sl]) )
288 accumulated_n_micro_leaching_sl[sl] += ( n_micro_2_sl[sl] - MeTrX_get_micro_n_decay_max( n_micro_2_sl[sl]) ) * leach_fact_mic;
290 if( n_micro_3_sl[sl] > MeTrX_get_micro_n_decay_max( n_micro_3_sl[sl]) )
292 accumulated_n_micro_leaching_sl[sl] += ( n_micro_3_sl[sl] - MeTrX_get_micro_n_decay_max( n_micro_3_sl[sl]) ) * leach_fact_mic;
294 LEACH_DOWN_EPSILON( n_micro_1_sl[sl], n_micro_1_sl[sl_plus], leach_fact_mic, MeTrX_get_micro_n_decay_max( n_micro_1_sl[sl]));
295 LEACH_DOWN_EPSILON( n_micro_2_sl[sl], n_micro_2_sl[sl_plus], leach_fact_mic, MeTrX_get_micro_n_decay_max( n_micro_2_sl[sl]));
296 LEACH_DOWN_EPSILON( n_micro_3_sl[sl], n_micro_3_sl[sl_plus], leach_fact_mic, MeTrX_get_micro_n_decay_max( n_micro_3_sl[sl]));
298 LEACH_DOWN( sc_.C_lit1_sl[sl], sc_.C_lit1_sl[sl_plus], leach_fact_lit);
299 LEACH_DOWN( sc_.C_lit2_sl[sl], sc_.C_lit2_sl[sl_plus], leach_fact_lit);
300 LEACH_DOWN( sc_.C_lit3_sl[sl], sc_.C_lit3_sl[sl_plus], leach_fact_lit);
302 accumulated_n_litter_leaching_sl[sl] += (sc_.N_lit1_sl[sl]+sc_.N_lit2_sl[sl]+sc_.N_lit3_sl[sl]) * leach_fact_lit;
303 LEACH_DOWN( sc_.N_lit1_sl[sl], sc_.N_lit1_sl[sl_plus], leach_fact_lit);
304 LEACH_DOWN( sc_.N_lit2_sl[sl], sc_.N_lit2_sl[sl_plus], leach_fact_lit);
305 LEACH_DOWN( sc_.N_lit3_sl[sl], sc_.N_lit3_sl[sl_plus], leach_fact_lit);
307 LEACH_DOWN( c_humus_1_sl[sl], c_humus_1_sl[sl_plus], leach_fact_hum);
308 LEACH_DOWN( c_humus_2_sl[sl], c_humus_2_sl[sl_plus], leach_fact_hum);
309 LEACH_DOWN( c_humus_3_sl[sl], c_humus_3_sl[sl_plus], leach_fact_hum);
311 accumulated_n_humus_1_leaching_sl[sl] += n_humus_1_sl[sl] * leach_fact_hum;
312 accumulated_n_humus_2_leaching_sl[sl] += n_humus_2_sl[sl] * leach_fact_hum;
313 accumulated_n_humus_3_leaching_sl[sl] += n_humus_3_sl[sl] * leach_fact_hum;
314 LEACH_DOWN( n_humus_1_sl[sl], n_humus_1_sl[sl_plus], leach_fact_hum);
315 LEACH_DOWN( n_humus_2_sl[sl], n_humus_2_sl[sl_plus], leach_fact_hum);
316 LEACH_DOWN( n_humus_3_sl[sl], n_humus_3_sl[sl_plus], leach_fact_hum);
318 accumulated_n_nh4_leaching_sl[sl] += (nh4_ae_sl[sl] + nh4_an_sl[sl] + sc_.coated_nh4_sl[sl]) * leach_fact_nh4;
319 accumulated_n_nh3_leaching_sl[sl] += sc_.nh3_liq_sl[sl] * leach_fact_doc;
320 accumulated_n_urea_leaching_sl[sl] += sc_.urea_sl[sl] * leach_fact_doc;
321 LEACH_DOWN( nh4_ae_sl[sl], nh4_ae_sl[sl_plus], leach_fact_nh4);
322 LEACH_DOWN( nh4_an_sl[sl], nh4_an_sl[sl_plus], leach_fact_nh4);
323 LEACH_DOWN( sc_.coated_nh4_sl[sl], sc_.coated_nh4_sl[sl_plus], leach_fact_nh4);
324 LEACH_DOWN( sc_.nh3_liq_sl[sl], sc_.nh3_liq_sl[sl_plus], leach_fact_doc);
325 LEACH_DOWN( sc_.urea_sl[sl], sc_.urea_sl[sl_plus], leach_fact_doc);
327 sc_.accumulated_n_no3_leaching_sl[sl] += (no3_ae_sl[sl]+no3_an_sl[sl]) * leach_fact_no3;
328 LEACH_DOWN( no3_ae_sl[sl], no3_ae_sl[sl_plus], leach_fact_no3);
329 LEACH_DOWN( no3_an_sl[sl], no3_an_sl[sl_plus], leach_fact_no3);
331 accumulated_n_don_leaching_sl[sl] += (don_ae_sl[sl] + don_an_sl[sl]) * leach_fact_doc;
332 LEACH_DOWN( don_ae_sl[sl], don_ae_sl[sl_plus], leach_fact_doc);
333 LEACH_DOWN( don_an_sl[sl], don_an_sl[sl_plus], leach_fact_doc);
334 LEACH_DOWN( sc_.doc_sl[sl], sc_.doc_sl[sl_plus], leach_fact_doc);
335 LEACH_DOWN( sc_.an_doc_sl[sl], sc_.an_doc_sl[sl_plus], leach_fact_doc);
336 LEACH_DOWN( ae_acetate_sl[sl], ae_acetate_sl[sl_plus], leach_fact_doc);
337 LEACH_DOWN( an_acetate_sl[sl], an_acetate_sl[sl_plus], leach_fact_doc);
339 accumulated_n_no_leaching_sl[sl] += (no_liq_sl[sl]+an_no_liq_sl[sl]) * leach_fact_dissolved_gases;
340 accumulated_n_n2o_leaching_sl[sl] += (n2o_liq_sl[sl]+an_n2o_liq_sl[sl]) * leach_fact_dissolved_gases;
341 LEACH_DOWN( no_liq_sl[sl], no_liq_sl[sl_plus], leach_fact_dissolved_gases);
342 LEACH_DOWN( an_no_liq_sl[sl], an_no_liq_sl[sl_plus], leach_fact_dissolved_gases);
343 LEACH_DOWN( n2o_liq_sl[sl], n2o_liq_sl[sl_plus], leach_fact_dissolved_gases);
344 LEACH_DOWN( an_n2o_liq_sl[sl], an_n2o_liq_sl[sl_plus], leach_fact_dissolved_gases);
346 LEACH_DOWN( ch4_liq_sl[sl], ch4_liq_sl[sl_plus], leach_fact_dissolved_gases);
347 LEACH_DOWN( co2_liq_sl[sl], co2_liq_sl[sl_plus], leach_fact_dissolved_gases);
348 LEACH_DOWN( o2_liq_sl[sl], o2_liq_sl[sl_plus], leach_fact_dissolved_gases);
350 LEACH_DOWN( sc_.so4_sl[sl], sc_.so4_sl[sl_plus], leach_fact_no3);
351 LEACH_DOWN( sc_.ni_sl[sl], sc_.ni_sl[sl_plus], leach_fact_doc);
352 LEACH_DOWN( sc_.ui_sl[sl], sc_.ui_sl[sl_plus], leach_fact_doc);
354 if ( have_radon_diffusion)
356 LEACH_DOWN( radon_liq_sl[sl], radon_liq_sl[sl_plus], leach_fact_dissolved_gases);
360 size_t sl( sl_.soil_layer_cnt()-1);
362 if ( cbm::flt_greater_zero( v_water_sl[sl]))
364 if ( cbm::flt_greater_zero( waterflux_sl[sl]))
366 double dummy_out( 0.0);
368 double const leach_fact( waterflux_sl[sl] / v_water_sl[sl]);
370 double const leach_fact_nh4( cbm::bound_max( leach_fact * sipar_.RETNH4(), 0.9999));
371 double const leach_fact_no3( cbm::bound_max( leach_fact * sipar_.RETNO3(), 0.9999));
372 double const leach_fact_doc( cbm::bound_max( leach_fact * sipar_.RETDOC(), 0.9999));
373 double const leach_fact_mic( cbm::bound_max( leach_fact * sipar_.METRX_RET_MICROBES(), 0.9999));
374 double const leach_fact_lit( cbm::bound_max( leach_fact * sipar_.METRX_RET_LITTER(), 0.9999));
375 double const leach_fact_hum( cbm::bound_max( leach_fact * sipar_.METRX_RET_HUMUS(), 0.9999));
376 double const leach_fact_dissolved_gases( cbm::bound_max( leach_fact, 0.9999));
378 if ( spinup_.spinup_stage( this->lclock()))
380 spinup_.loose_lit_1[sl] += leach_fact_lit;
381 spinup_.loose_lit_2[sl] += leach_fact_lit;
382 spinup_.loose_lit_3[sl] += leach_fact_lit;
384 spinup_.loose_aorg[sl] += leach_fact_mic;
386 spinup_.decompose_hum_1[sl] += leach_fact_hum;
387 spinup_.decompose_hum_2[sl] += leach_fact_hum;
388 spinup_.decompose_hum_3[sl] += leach_fact_hum;
391 accumulated_n_aorg_leaching_sl[sl] += sc_.N_aorg_sl[sl] * leach_fact_mic;
392 LEACH_DOWN( sc_.C_aorg_sl[sl], sc_.accumulated_doc_leach, leach_fact_mic);
393 LEACH_DOWN( sc_.N_aorg_sl[sl], sc_.accumulated_don_leach, leach_fact_mic);
395 LEACH_DOWN_EPSILON( sc_.C_micro1_sl[sl], sc_.accumulated_doc_leach, leach_fact_mic, MeTrX_get_micro_c_decay_max( sc_.C_micro1_sl[sl]));
396 LEACH_DOWN_EPSILON( sc_.C_micro2_sl[sl], sc_.accumulated_doc_leach, leach_fact_mic, MeTrX_get_micro_c_decay_max( sc_.C_micro2_sl[sl]));
397 LEACH_DOWN_EPSILON( sc_.C_micro3_sl[sl], sc_.accumulated_doc_leach, leach_fact_mic, MeTrX_get_micro_c_decay_max( sc_.C_micro3_sl[sl]));
399 if( n_micro_1_sl[sl] > MeTrX_get_micro_n_decay_max( n_micro_1_sl[sl]) )
401 accumulated_n_micro_leaching_sl[sl] += ( n_micro_1_sl[sl] - MeTrX_get_micro_n_decay_max( n_micro_1_sl[sl]) ) * leach_fact_mic;
403 if( n_micro_2_sl[sl] > MeTrX_get_micro_n_decay_max( n_micro_2_sl[sl]) )
405 accumulated_n_micro_leaching_sl[sl] += ( n_micro_2_sl[sl] - MeTrX_get_micro_n_decay_max( n_micro_2_sl[sl]) ) * leach_fact_mic;
407 if( n_micro_3_sl[sl] > MeTrX_get_micro_n_decay_max( n_micro_3_sl[sl]) )
409 accumulated_n_micro_leaching_sl[sl] += ( n_micro_3_sl[sl] - MeTrX_get_micro_n_decay_max( n_micro_3_sl[sl]) ) * leach_fact_mic;
411 LEACH_DOWN_EPSILON( n_micro_1_sl[sl], sc_.accumulated_don_leach, leach_fact_mic, MeTrX_get_micro_n_decay_max( n_micro_1_sl[sl]));
412 LEACH_DOWN_EPSILON( n_micro_2_sl[sl], sc_.accumulated_don_leach, leach_fact_mic, MeTrX_get_micro_n_decay_max( n_micro_2_sl[sl]));
413 LEACH_DOWN_EPSILON( n_micro_3_sl[sl], sc_.accumulated_don_leach, leach_fact_mic, MeTrX_get_micro_n_decay_max( n_micro_3_sl[sl]));
415 LEACH_DOWN( sc_.C_lit1_sl[sl], sc_.accumulated_doc_leach, leach_fact_lit);
416 LEACH_DOWN( sc_.C_lit2_sl[sl], sc_.accumulated_doc_leach, leach_fact_lit);
417 LEACH_DOWN( sc_.C_lit3_sl[sl], sc_.accumulated_doc_leach, leach_fact_lit);
419 accumulated_n_litter_leaching_sl[sl] += (sc_.N_lit1_sl[sl]+sc_.N_lit2_sl[sl]+sc_.N_lit3_sl[sl]) * leach_fact_lit;
420 LEACH_DOWN( sc_.N_lit1_sl[sl], sc_.accumulated_don_leach, leach_fact_lit);
421 LEACH_DOWN( sc_.N_lit2_sl[sl], sc_.accumulated_don_leach, leach_fact_lit);
422 LEACH_DOWN( sc_.N_lit3_sl[sl], sc_.accumulated_don_leach, leach_fact_lit);
424 LEACH_DOWN( c_humus_1_sl[sl], sc_.accumulated_doc_leach, leach_fact_hum);
425 LEACH_DOWN( c_humus_2_sl[sl], sc_.accumulated_doc_leach, leach_fact_hum);
426 LEACH_DOWN( c_humus_3_sl[sl], sc_.accumulated_doc_leach, leach_fact_hum);
428 accumulated_n_humus_1_leaching_sl[sl] += n_humus_1_sl[sl] * leach_fact_hum;
429 accumulated_n_humus_2_leaching_sl[sl] += n_humus_2_sl[sl] * leach_fact_hum;
430 accumulated_n_humus_3_leaching_sl[sl] += n_humus_3_sl[sl] * leach_fact_hum;
431 LEACH_DOWN( n_humus_1_sl[sl], sc_.accumulated_don_leach, leach_fact_hum);
432 LEACH_DOWN( n_humus_2_sl[sl], sc_.accumulated_don_leach, leach_fact_hum);
433 LEACH_DOWN( n_humus_2_sl[sl], sc_.accumulated_don_leach, leach_fact_hum);
435 accumulated_n_nh4_leaching_sl[sl] += (nh4_ae_sl[sl] + nh4_an_sl[sl] + sc_.coated_nh4_sl[sl]) * leach_fact_nh4;
436 accumulated_n_nh3_leaching_sl[sl] += sc_.nh3_liq_sl[sl] * leach_fact_doc;
437 accumulated_n_urea_leaching_sl[sl] += sc_.urea_sl[sl] * leach_fact_doc;
438 LEACH_DOWN( nh4_ae_sl[sl], sc_.accumulated_nh4_leach, leach_fact_nh4);
439 LEACH_DOWN( nh4_an_sl[sl], sc_.accumulated_nh4_leach, leach_fact_nh4);
440 LEACH_DOWN( sc_.coated_nh4_sl[sl], sc_.accumulated_nh4_leach, leach_fact_nh4);
441 LEACH_DOWN( sc_.nh3_liq_sl[sl], day_leach_nh3, leach_fact_doc);
442 LEACH_DOWN( sc_.urea_sl[sl], day_leach_urea, leach_fact_doc);
444 sc_.accumulated_n_no3_leaching_sl[sl] += (no3_ae_sl[sl]+no3_an_sl[sl]) * leach_fact_no3;
445 LEACH_DOWN( no3_ae_sl[sl], sc_.accumulated_no3_leach, leach_fact_no3);
446 LEACH_DOWN( no3_an_sl[sl], sc_.accumulated_no3_leach, leach_fact_no3);
448 accumulated_n_don_leaching_sl[sl] += (don_ae_sl[sl] + don_an_sl[sl]) * leach_fact_doc;
449 LEACH_DOWN( don_ae_sl[sl], sc_.accumulated_don_leach, leach_fact_doc);
450 LEACH_DOWN( don_an_sl[sl], sc_.accumulated_don_leach, leach_fact_doc);
451 LEACH_DOWN( sc_.doc_sl[sl], sc_.accumulated_doc_leach, leach_fact_doc);
452 LEACH_DOWN( sc_.an_doc_sl[sl], sc_.accumulated_doc_leach, leach_fact_doc);
453 LEACH_DOWN( ae_acetate_sl[sl], sc_.accumulated_doc_leach, leach_fact_doc);
454 LEACH_DOWN( an_acetate_sl[sl], sc_.accumulated_doc_leach, leach_fact_doc);
456 accumulated_n_no_leaching_sl[sl] += (no_liq_sl[sl]+an_no_liq_sl[sl]) * leach_fact_dissolved_gases;
457 accumulated_n_n2o_leaching_sl[sl] += (n2o_liq_sl[sl]+an_n2o_liq_sl[sl]) * leach_fact_dissolved_gases;
458 LEACH_DOWN( no_liq_sl[sl], day_leach_no, leach_fact_dissolved_gases);
459 LEACH_DOWN( an_no_liq_sl[sl], day_leach_no, leach_fact_dissolved_gases);
460 LEACH_DOWN( n2o_liq_sl[sl], day_leach_n2o, leach_fact_dissolved_gases);
461 LEACH_DOWN( an_n2o_liq_sl[sl], day_leach_n2o, leach_fact_dissolved_gases);
462 LEACH_DOWN( o2_liq_sl[sl], day_leach_o2, leach_fact_dissolved_gases);
464 LEACH_DOWN( ch4_liq_sl[sl], subdaily_ch4_leach[subdaily_time_step_], leach_fact_dissolved_gases);
465 LEACH_DOWN( co2_liq_sl[sl], subdaily_co2_leach[subdaily_time_step_], leach_fact_dissolved_gases);
467 LEACH_DOWN( sc_.so4_sl[sl], sc_.accumulated_so4_leach, leach_fact_no3);
468 LEACH_DOWN( sc_.ni_sl[sl], dummy_out, leach_fact_doc);
469 LEACH_DOWN( sc_.ui_sl[sl], dummy_out, leach_fact_doc);
471 if ( have_radon_diffusion)
473 LEACH_DOWN( radon_liq_sl[sl], day_leach_radon, leach_fact_dissolved_gases);
476 else if ( cbm::flt_less( waterflux_sl[sl], 0.0))
478 size_t sl_plus( sl - 1);
480 double const leach_fact( -1.0 * waterflux_sl[sl] / v_water_sl[sl]);
482 double const leach_fact_nh4( cbm::bound_max( leach_fact * sipar_.RETNH4(), 0.9999));
483 double const leach_fact_no3( cbm::bound_max( leach_fact * sipar_.RETNO3(), 0.9999));
484 double const leach_fact_doc( cbm::bound_max( leach_fact * sipar_.RETDOC(), 0.9999));
485 double const leach_fact_mic( cbm::bound_max( leach_fact * sipar_.METRX_RET_MICROBES(), 0.9999));
486 double const leach_fact_lit( cbm::bound_max( leach_fact * sipar_.METRX_RET_LITTER(), 0.9999));
487 double const leach_fact_hum( cbm::bound_max( leach_fact * sipar_.METRX_RET_HUMUS(), 0.9999));
488 double const leach_fact_dissolved_gases( cbm::bound_max( leach_fact, 0.9999));
490 if ( spinup_.spinup_stage( this->lclock()))
492 spinup_.loose_lit_1[sl] += leach_fact_lit;
493 spinup_.loose_lit_2[sl] += leach_fact_lit;
494 spinup_.loose_lit_3[sl] += leach_fact_lit;
496 spinup_.loose_aorg[sl] += leach_fact_mic;
498 spinup_.decompose_hum_1[sl] += leach_fact_hum;
499 spinup_.decompose_hum_2[sl] += leach_fact_hum;
500 spinup_.decompose_hum_3[sl] += leach_fact_hum;
502 spinup_.c_to_lit_1[sl_plus] += sc_.C_lit1_sl[sl] * leach_fact_lit;
503 spinup_.c_to_lit_2[sl_plus] += sc_.C_lit2_sl[sl] * leach_fact_lit;
504 spinup_.c_to_lit_3[sl_plus] += sc_.C_lit3_sl[sl] * leach_fact_lit;
506 spinup_.c_to_aorg[sl_plus] += sc_.C_aorg_sl[sl] * leach_fact_mic;
508 spinup_.c_to_humus_1_sl[sl_plus] += c_humus_1_sl[sl] * leach_fact_hum;
509 spinup_.c_to_humus_2_sl[sl_plus] += c_humus_2_sl[sl] * leach_fact_hum;
510 spinup_.c_to_humus_3_sl[sl_plus] += c_humus_3_sl[sl] * leach_fact_hum;
513 accumulated_n_aorg_leaching_sl[sl] += sc_.N_aorg_sl[sl] * leach_fact_mic;
514 LEACH_DOWN( sc_.C_aorg_sl[sl], sc_.C_aorg_sl[sl_plus], leach_fact_mic);
515 LEACH_DOWN( sc_.N_aorg_sl[sl], sc_.N_aorg_sl[sl_plus], leach_fact_mic);
517 LEACH_DOWN_EPSILON( sc_.C_micro1_sl[sl], sc_.C_micro1_sl[sl_plus], leach_fact_mic, MeTrX_get_micro_c_decay_max( sc_.C_micro1_sl[sl]));
518 LEACH_DOWN_EPSILON( sc_.C_micro2_sl[sl], sc_.C_micro2_sl[sl_plus], leach_fact_mic, MeTrX_get_micro_c_decay_max( sc_.C_micro2_sl[sl]));
519 LEACH_DOWN_EPSILON( sc_.C_micro3_sl[sl], sc_.C_micro3_sl[sl_plus], leach_fact_mic, MeTrX_get_micro_c_decay_max( sc_.C_micro3_sl[sl]));
521 if( n_micro_1_sl[sl] > MeTrX_get_micro_n_decay_max( n_micro_1_sl[sl]) )
523 accumulated_n_micro_leaching_sl[sl] += ( n_micro_1_sl[sl] - MeTrX_get_micro_n_decay_max( n_micro_1_sl[sl]) ) * leach_fact_mic;
525 if( n_micro_2_sl[sl] > MeTrX_get_micro_n_decay_max( n_micro_2_sl[sl]) )
527 accumulated_n_micro_leaching_sl[sl] += ( n_micro_2_sl[sl] - MeTrX_get_micro_n_decay_max( n_micro_2_sl[sl]) ) * leach_fact_mic;
529 if( n_micro_3_sl[sl] > MeTrX_get_micro_n_decay_max( n_micro_3_sl[sl]) )
531 accumulated_n_micro_leaching_sl[sl] += ( n_micro_3_sl[sl] - MeTrX_get_micro_n_decay_max( n_micro_3_sl[sl]) ) * leach_fact_mic;
533 LEACH_DOWN_EPSILON( n_micro_1_sl[sl], n_micro_1_sl[sl_plus], leach_fact_mic, MeTrX_get_micro_n_decay_max( n_micro_1_sl[sl]));
534 LEACH_DOWN_EPSILON( n_micro_2_sl[sl], n_micro_1_sl[sl_plus], leach_fact_mic, MeTrX_get_micro_n_decay_max( n_micro_2_sl[sl]));
535 LEACH_DOWN_EPSILON( n_micro_3_sl[sl], n_micro_1_sl[sl_plus], leach_fact_mic, MeTrX_get_micro_n_decay_max( n_micro_3_sl[sl]));
537 LEACH_DOWN( sc_.C_lit1_sl[sl], sc_.C_lit1_sl[sl_plus], leach_fact_lit);
538 LEACH_DOWN( sc_.C_lit2_sl[sl], sc_.C_lit2_sl[sl_plus], leach_fact_lit);
539 LEACH_DOWN( sc_.C_lit3_sl[sl], sc_.C_lit3_sl[sl_plus], leach_fact_lit);
541 accumulated_n_litter_leaching_sl[sl] += (sc_.N_lit1_sl[sl]+sc_.N_lit2_sl[sl]+sc_.N_lit3_sl[sl]) * leach_fact_lit;
542 LEACH_DOWN( sc_.N_lit1_sl[sl], sc_.N_lit1_sl[sl_plus], leach_fact_lit);
543 LEACH_DOWN( sc_.N_lit2_sl[sl], sc_.N_lit2_sl[sl_plus], leach_fact_lit);
544 LEACH_DOWN( sc_.N_lit3_sl[sl], sc_.N_lit3_sl[sl_plus], leach_fact_lit);
546 LEACH_DOWN( c_humus_1_sl[sl], c_humus_1_sl[sl_plus], leach_fact_hum);
547 LEACH_DOWN( c_humus_2_sl[sl], c_humus_2_sl[sl_plus], leach_fact_hum);
548 LEACH_DOWN( c_humus_3_sl[sl], c_humus_3_sl[sl_plus], leach_fact_hum);
550 accumulated_n_humus_1_leaching_sl[sl] += n_humus_1_sl[sl] * leach_fact_hum;
551 accumulated_n_humus_2_leaching_sl[sl] += n_humus_2_sl[sl] * leach_fact_hum;
552 accumulated_n_humus_3_leaching_sl[sl] += n_humus_3_sl[sl] * leach_fact_hum;
553 LEACH_DOWN( n_humus_1_sl[sl], n_humus_1_sl[sl_plus], leach_fact_hum);
554 LEACH_DOWN( n_humus_2_sl[sl], n_humus_2_sl[sl_plus], leach_fact_hum);
555 LEACH_DOWN( n_humus_2_sl[sl], n_humus_3_sl[sl_plus], leach_fact_hum);
557 accumulated_n_nh4_leaching_sl[sl] += (nh4_ae_sl[sl] + nh4_an_sl[sl] + sc_.coated_nh4_sl[sl]) * leach_fact_nh4;
558 accumulated_n_nh3_leaching_sl[sl] += sc_.nh3_liq_sl[sl] * leach_fact_doc;
559 accumulated_n_urea_leaching_sl[sl] += sc_.urea_sl[sl] * leach_fact_doc;
560 LEACH_DOWN( nh4_ae_sl[sl], nh4_ae_sl[sl_plus], leach_fact_nh4);
561 LEACH_DOWN( nh4_an_sl[sl], nh4_an_sl[sl_plus], leach_fact_nh4);
562 LEACH_DOWN( sc_.coated_nh4_sl[sl], sc_.coated_nh4_sl[sl_plus], leach_fact_nh4);
563 LEACH_DOWN( sc_.nh3_liq_sl[sl], sc_.nh3_liq_sl[sl_plus], leach_fact_doc);
564 LEACH_DOWN( sc_.urea_sl[sl], sc_.urea_sl[sl_plus], leach_fact_doc);
566 sc_.accumulated_n_no3_leaching_sl[sl] += (no3_ae_sl[sl]+no3_an_sl[sl]) * leach_fact_no3;
567 LEACH_DOWN( no3_ae_sl[sl], no3_ae_sl[sl_plus], leach_fact_no3);
568 LEACH_DOWN( no3_an_sl[sl], no3_an_sl[sl_plus], leach_fact_no3);
570 accumulated_n_don_leaching_sl[sl] += (don_ae_sl[sl] + don_an_sl[sl]) * leach_fact_doc;
571 LEACH_DOWN( don_ae_sl[sl], don_ae_sl[sl_plus], leach_fact_doc);
572 LEACH_DOWN( don_an_sl[sl], don_an_sl[sl_plus], leach_fact_doc);
573 LEACH_DOWN( sc_.doc_sl[sl], sc_.doc_sl[sl_plus], leach_fact_doc);
574 LEACH_DOWN( sc_.an_doc_sl[sl], sc_.an_doc_sl[sl_plus], leach_fact_doc);
575 LEACH_DOWN( ae_acetate_sl[sl], ae_acetate_sl[sl_plus], leach_fact_doc);
576 LEACH_DOWN( an_acetate_sl[sl], an_acetate_sl[sl_plus], leach_fact_doc);
578 accumulated_n_no_leaching_sl[sl] += (no_liq_sl[sl]+an_no_liq_sl[sl]) * leach_fact_dissolved_gases;
579 accumulated_n_n2o_leaching_sl[sl] += (n2o_liq_sl[sl]+an_n2o_liq_sl[sl]) * leach_fact_dissolved_gases;
580 LEACH_DOWN( no_liq_sl[sl], no_liq_sl[sl_plus], leach_fact_dissolved_gases);
581 LEACH_DOWN( an_no_liq_sl[sl], an_no_liq_sl[sl_plus], leach_fact_dissolved_gases);
582 LEACH_DOWN( n2o_liq_sl[sl], n2o_liq_sl[sl_plus], leach_fact_dissolved_gases);
583 LEACH_DOWN( an_n2o_liq_sl[sl], an_n2o_liq_sl[sl_plus], leach_fact_dissolved_gases);
584 LEACH_DOWN( o2_liq_sl[sl], o2_liq_sl[sl_plus], leach_fact_dissolved_gases);
586 LEACH_DOWN( ch4_liq_sl[sl], ch4_liq_sl[sl_plus], leach_fact_dissolved_gases);
587 LEACH_DOWN( co2_liq_sl[sl], co2_liq_sl[sl_plus], leach_fact_dissolved_gases);
589 LEACH_DOWN( sc_.so4_sl[sl], sc_.so4_sl[sl_plus], leach_fact_no3);
590 LEACH_DOWN( sc_.ni_sl[sl], sc_.ni_sl[sl_plus], leach_fact_doc);
591 LEACH_DOWN( sc_.ui_sl[sl], sc_.ui_sl[sl_plus], leach_fact_doc);
593 if ( have_radon_diffusion)
595 LEACH_DOWN( radon_liq_sl[sl], radon_liq_sl[sl_plus], leach_fact_dissolved_gases);