8#ifndef LD_ROOTSYSTEM_H_
9#define LD_ROOTSYSTEM_H_
11#include "state/mbe_state.h"
12#include "physiology/ld_plantfunctions.h"
28 substate_soilchemistry_t
const &sc_,
29 input_class_siteparameters_t
const * m_param);
48 size_t _sl_cnt_litter,
51 double _rooting_depth,
56set_rooting_depth( input_class_soillayers_t
const * m_soillayers,
57 substate_soilchemistry_t
const * soilchem,
59 bool consider_texture =
false);
61struct LDNDC_API BaseRootSystemDNDC
64 ~BaseRootSystemDNDC() = 0;
71 virtual void reset( MoBiLE_Plant *) = 0;
78 root_development(
double ,
unsigned int &, MoBiLE_Plant *) = 0;
85 set_rooting_depth(
unsigned int &, MoBiLE_Plant *,
double,
86 double _max_rooting_depth = invalid_dbl) = 0;
93 update_deepest_rooted_soil_layer_index(
unsigned int &,
94 MoBiLE_Plant *,
double) = 0;
101 update_root_fraction_sigmoid(
108 MoBiLE_Plant * ) = 0;
115 update_root_fraction_exponential(
119 MoBiLE_Plant * ) = 0;
131 ldndc::growable_array < BaseRootSystemDNDC*, 1000, 1 > & ,
139 specific_root_length(
142 lvector_t< double > &) = 0;
153 lvector_t< double > ) = 0;
160 reduce_root_system_homogenously(
172 MoBiLE_Plant * ) = 0;
179 update_rootlength_meanSRL_allsl(
189 update_rootlength_meanSRL_allsl_individuallosses(
192 lvector_t< double > ) = 0;
198 update_roots_dynamic(
208 virtual lvector_t< double >
209 determine_root_restrictions_coarse_fragments(
216 virtual lvector_t< double >
217 determine_root_restrictions_soil_strength(
224 virtual lvector_t< double >
225 determine_root_restrictions_aeration(
228 MoBiLE_Plant * ) = 0;
234 virtual lvector_t< double >
235 determine_root_restrictions_temperature(
237 MoBiLE_Plant * ) = 0;
240 update_rooting_depth(
244 MoBiLE_Plant * ) = 0;
247 determine_target_rooting_depth_increase(
251 MoBiLE_Plant * ) = 0;
255 unsigned int _deepest_rooted_layer,
259 lvector_t< double > _no3_sl,
260 lvector_t< double > _no3_uptake_sl,
261 lvector_t< double > _nh4_sl,
262 lvector_t< double > _nh4_uptake_sl,
263 lvector_t< double > _don_sl,
264 lvector_t< double > _don_uptake_sl,
265 lvector_t< double > _temp_sl,
266 MoBiLE_Plant * ) = 0;
270struct LDNDC_API RootSystemDNDC :
public BaseRootSystemDNDC
277 input_class_soillayers_t
const * m_soillayers;
283 LD_PlantFunctions m_pf;
284 substate_soilchemistry_t & sc_;
285 substate_microclimate_t & mc_;
287 substate_physiology_t & ph_;
288 substate_watercycle_t & wc_;
290 MoBiLE_PlantVegetation * m_veg;
298 void reset( MoBiLE_Plant *);
305 root_development(
double ,
unsigned int &, MoBiLE_Plant *);
312 set_rooting_depth(
unsigned int &, MoBiLE_Plant *,
313 double,
double _max_rooting_depth = invalid_dbl);
320 update_deepest_rooted_soil_layer_index(
unsigned int &, MoBiLE_Plant *,
double);
327 update_root_fraction_sigmoid(
341 update_root_fraction_exponential(
357 ldndc::growable_array < BaseRootSystemDNDC*, 1000, 1 > &,
364 specific_root_length(
367 lvector_t< double > &);
378 lvector_t< double > );
385 reduce_root_system_homogenously(
403 update_rootlength_meanSRL_allsl(
412 update_rootlength_meanSRL_allsl_individuallosses(
415 lvector_t< double > );
422 update_roots_dynamic(
433 determine_root_restrictions_coarse_fragments(
440 determine_root_restrictions_soil_strength(
448 determine_root_restrictions_aeration(
458 determine_root_restrictions_temperature(
467 update_rooting_depth(
478 determine_target_rooting_depth_increase(
489 update_root_structure(
unsigned int & _root_q_vt, MoBiLE_Plant *);
493 unsigned int _deepest_rooted_layer,
497 lvector_t< double > _no3_sl,
498 lvector_t< double > _no3_uptake_sl,
499 lvector_t< double > _nh4_sl,
500 lvector_t< double > _nh4_uptake_sl,
501 lvector_t< double > _don_sl,
502 lvector_t< double > _don_uptake_sl,
503 lvector_t< double > _temp_sl,
Spatially explicit groundwater model.
Definition: airchemistryput.h:15
double root_density(double, double, double, bool)
Return root density either based on root length or mass.
Definition: ld_rootsystem.cpp:50
double get_clay_limitation(size_t _sl, double _water_avail, double _water_ref, substate_soilchemistry_t const &sc_, input_class_siteparameters_t const *m_param)
Restrains water availability due to clay content.
Definition: ld_rootsystem.cpp:27
void fineroots_biomass_distribution(size_t _sl_cnt_litter, size_t _sl_cnt_soil, double _ps, double _rooting_depth, double *_f_frt_sl, double const *_h_sl)
Definition: ld_rootsystem.cpp:100