LandscapeDNDC
1.36.0
|
updates air chemistry subday and day buffers More...
Classes | |
class | EcHy |
Watercycle model EcosystemHydrology - EcHy. More... | |
struct | mobile_module_info_t |
structure representing module information from MoBiLE's setup module list block More... | |
class | mobile_modules_info_t |
structure manages module list information More... | |
class | MoBiLE_Substate |
abstract) base class for all simulation system state compartments More... | |
struct | module_option_register_t |
supported options shall be registered before referencing them More... | |
class | PhysiologyPlaMox |
Plamox. More... | |
class | PhysiologyVOCBIM |
This gas exchange module calculates emission of biogenetic volatile organic compounds. More... | |
class | SoilChemistryMeTrX |
Biogeochemical model MeTrx. More... | |
class | WatercycleDNDC |
Watercycle model WatercycleDNDC. More... | |
Typedefs | |
typedef speciesparameters::speciesparameters_set_t | MoBiLE_PlantParameters |
Enumerations | |
enum | lmodule_flag_e { LMOD_FLAG_NONE = 0u, LMOD_FLAG_CONTROL = 1u << 0, LMOD_FLAG_USER = 1u << 1, LMOD_FLAG_SYSTEM = 1u << 2, LMOD_FLAG_INITIALIZER = 1u << 3, LMOD_FLAG_FINALIZER = 1u << 4, LMOD_FLAG_MAINTENANCE = 1u << 5, LMOD_FLAG_OUTPUT = 1u << 6, LMOD_FLAG_TEST_MODULE = 1u << 7 } |
enum | { LSUB_FLAG_NONE = 0u } |
enum | |
Lower bounds for number of foliage layers. | |
enum | stomatalconductance_method_e |
Stomatal conductance methods. | |
enum | { CPOOL_VL, CPOOL_L, CPOOL_R, CPOOL_B } |
Order of carbon pools in array passed to allocate_litter. More... | |
Functions | |
lerr_t | assign_soillayer_porosity (double &_porosity_without_stones, int const &_nd_stratum, double const &_depth, double const &_c_org_without_stones, double const &_bulk_density_without_stones, const ldndc::site::input_class_site_t *_site, const ldndc::soillayers::input_class_soillayers_t *_soillayers, const ldndc::soilparameters::input_class_soilparameters_t *_soilparameters, bool _info=false) |
lerr_t | assign_soillayer_field_capacity_and_wilting_point (double &_wcmax_without_stones, double &_wcmin_without_stones, double _wfps_max, double _wfps_min, double _porosity_without_stones, int const &_nd_stratum, double const &_depth, const ldndc::site::input_class_site_t *_site, const ldndc::soillayers::input_class_soillayers_t *_soillayers, const ldndc::soilparameters::input_class_soilparameters_t *_soilparameters, bool _vg_prio=false, bool _info=false) |
double | resistance_aero_abovecanopy (double const &, double const &) |
returns boundary layer resistance above canopy | |
double | resistance_aero_incanopy (double const &, double const &, double const &) |
returns boundary layer resistance within canopy | |
double | crown_shape_parameter (double _length, double lref, double ps) |
Returns a crown shape parameter which is modified by canopy length. More... | |
void | canopy_biomass_distribution (size_t const _fl_cnt_max, size_t const _fl_cnt, double const _ps, double const _h_bottom, double const _h_top, double const *_h_fl, double *_fFol_fl) |
Foliage biomass distribution vertically across canopy. More... | |
void | canopy_lai_distribution (double _sla_min, double _sla_max, double _height_max, double _height_min, double _mFol, double const *_fFol_fl, double const *_h_fl, double *_lai_fl, double *_sla_fl, size_t _foliage_layer_cnt, size_t _foliage_layer_cnt_max) |
Leaf area distribution vertically across the whole canopy. More... | |
void | estimate_single_layer_biomass (double const _ps, double const _h_bottom, double const _h_top, double _lw, double &_fract, double _h_cum_bottom, double _h_cum_top) |
Vertical biomass estimation. More... | |
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) |
double | get_optimum_sap_wood_biomass (MoBiLE_Plant *_p) |
double | get_sapwood_foliage_ratio (MoBiLE_Plant *_p) |
double | sapwood_foliage_area_ratio (double _height, double _qsf_p1, double _qsf_p2) |
double | stomatal_conductance_ballberry_1987 (double, double, double, double) |
Stomatal conductance according to Berry, Woodward and Ball 1987. | |
double | stomatal_conductance_leuning_1990 (double, double, double, double, double) |
Stomatal conductance according to Leuning 1990. | |
double | stomatal_conductance_leuning_1995_a (double, double, double, double, double, double, double) |
Stomatal conductance according to Leuning 1995. | |
double | stomatal_conductance_eller_2020 (double, double, double, double, double, double, double, double, double, double, double) |
Stomatal conductance according to Eller et al. 2020. | |
double | potential_wood_transpiration (soillayers::input_class_soillayers_t const &, double _vpd, double _carbon_uptake, double _f_area, double _wuecmax, double _wuecmin, lvector_t< double > _h_sl, lvector_t< double > _wc, lvector_t< double > _wc_min, lvector_t< double > _wc_max) |
Returns potential transpiration in [m] for trees. | |
double | potential_crop_transpiration (double _co2, double _carbon_uptake, double _wuecmax) |
Returns potential transpiration in [m] for crops and grass. | |
double | potential_transpiration (size_t, double gsmin, double gsmax, double *_lai_fl, lvector_t< double > _vpd_fl, double *_relative_conductance_fl) |
Returns potential transpiration in [m] for any species type. | |
lerr_t | get_voc_emission_factors (ldndc::MoBiLE_Plant *, int, bool, double, int, double, double) |
lerr_t LDNDC_API | allocate_litter (double _c, double _n, double _RCNRVL, double _RCNRL, double _RCNRR, double _C[], double &_n_diff) |
calculates the amount of C which is added to the very labile, labile and recalcitrant decomposition pool More... | |
double LDNDC_API | cation_exchange_capacity (double _clay, double _sand, double _som, double _ph, ecosystem_type_e _ecosystem) |
Detailed description provided here . More... | |
double | d_eff_air_a (double const &, double const &) |
Returns effective diffusion coefficient depending on gas content. More... | |
double | d_eff_air_b (double const &, double const &, double const &, double const &) |
Returns effective diffusion coefficient depending on gas content and porosity. More... | |
double | d_eff_air_millington_and_quirk_1961 (double const &, double const &) |
Returns effective diffusion coefficient after [55]. More... | |
lerr_t | update_litter_height (soillayers::input_class_soillayers_t const &, substate_watercycle_t &, substate_soilchemistry_t &) |
Detailed description provided here . More... | |
bool | forest_floor (size_t, soillayers::input_class_soillayers_t const &, const ldndc::site::input_class_site_t &) |
First floor defined by: More... | |
double LDNDC_API | sap_wood_fraction (double _lai_max, double _qsfa, double _height_min, double _height_max, double _depth) |
sap_wood_fraction The calculation of the fraction of sapwood in coarse roots is based on the idealized volume fraction and assumes that the stem in the crown as well as the coarse roots are shaped as cones, and that core wood reaches a third of the cone More... | |
lerr_t | wood_initialization (soillayers::input_class_soillayers_t const &, MoBiLE_Plant *, substate_soilchemistry_t &, ecosystem_type_e) |
Initialization of aboveground and belowground wood debris, derived from existing vegetation. More... | |
double | non_stomatal_water_limitation (double const &_var, double const &_var_ref, double const &_var_scale) |
Non stomatal water limitation. More... | |
double LDNDC_API | thornthwaite_heat_index (double, size_t, double, double) |
Thornthwaite heat index. | |
double LDNDC_API | thornthwaite (double, double, double) |
Potential evapotranspiration after [65]. | |
Variables | |
LDNDC_API lflags_t const | TMODE_DEFAULTS = TMODE_SUBDAILY|TMODE_PRE_DAILY|TMODE_POST_DAILY|TMODE_PRE_YEARLY|TMODE_POST_YEARLY |
LDNDC_API MoBiLE_ModuleFactoryEnvelope const | module_factories [] |
a list of destructors (because i was to lazy to add a one line file for these base classes..) module factory array is defined here. More... | |
substate_factory_t< substate_airchemistry_t > const | substate_airchemistry_factory |
substate base class implementation, sources factories More... | |
updates air chemistry subday and day buffers
data synthesizer base class
declare common types related to species
common types related to species (implementation)
declare species groups known to the simulation system
container class for one complete soil and humus parameters set
container class for site parameters
Declare common types related to site input.
declare common types related to setup input
common types related to setup input
declare common types related to remotesensing input
collection of various helper functions
class containing full set of van Genuchten parametrization
declare common types related to groundwater input
declare common types related to geometry input
common event related data types
(management) event factories
base class for (management) events
declare common types related to climate input
declare common types related to checkpoint input
declare common types related to air chemistry input
Dynamic farmer.
david kraus
kind of helper module to perform additional tasks after all user modules have been run
container for state variable belonging to water cycle processes
container for state variable belonging to soil processes
container for state variable belonging to micro climate processes. it also acts as a one-timestep buffer for climate data records.
convenience header pulling all substate headers
helper functions for checkpointing mobile substate
container for MoBiLE substates
kind of helper module to perform additional tasks before user modules are run.
updates climate subday and day buffers
for now, also pulls in all kernel specific input declarations
typedef speciesparameters::speciesparameters_set_t ldndc::MoBiLE_PlantParameters |
overview of plant properties ...
anonymous enum |
lerr_t ldndc::allocate_litter | ( | double | _c, |
double | _n, | ||
double | _RCNRVL, | ||
double | _RCNRL, | ||
double | _RCNRR, | ||
double | _C[], | ||
double & | _n_diff | ||
) |
calculates the amount of C which is added to the very labile, labile and recalcitrant decomposition pool
The needed information in this function are the amount of carbon in litter _c
and the corresponding CN ratio (determined from nitrogen _n
).
four cases: If the CN ratio is lower than the CN ratio of the very labile litter pool, all litter-C goes to the very labile decomposition pool.
If the CN ratio is between RCNRVL and the harmonic mean of RCNRVL and RCNRR, an increasing CN ratio decreases C_0
and increases C_1
and C_2
.
If thc CN ratio is between the harmonic mean of RCNRVL and RCNRR and RCNRR, C_1
and C_2
decrease and only C_0
increases.
If CN ratio is higher than RCNRR, all Litter-C goes to C_2
.
_c | Carbon in litter flux |
_n | Nitrogen in litter flux |
_C | Organic carbon that is added to the
|
_n_diff |
References CPOOL_B, CPOOL_L, CPOOL_R, and CPOOL_VL.
lerr_t ldndc::assign_soillayer_field_capacity_and_wilting_point | ( | double & | _wcmax_without_stones, |
double & | _wcmin_without_stones, | ||
double | _wfps_max, | ||
double | _wfps_min, | ||
double | _porosity_without_stones, | ||
int const & | _nd_stratum, | ||
double const & | _depth, | ||
const ldndc::site::input_class_site_t * | _site, | ||
const ldndc::soillayers::input_class_soillayers_t * | _soillayers, | ||
const ldndc::soilparameters::input_class_soilparameters_t * | _soilparameters, | ||
bool | _vg_prio = false , |
||
bool | _info = false |
||
) |
Wilting point is checked for consistency against field capacity, i.e., field capacity is not allowed to exceed 90% of estimated field capacity:
\( \theta_{min} = min(\theta_{min}, 0.9 \; \theta_{max}) \)
References assign_soillayer_porosity(), and forest_floor().
lerr_t ldndc::assign_soillayer_porosity | ( | double & | _porosity_without_stones, |
int const & | _nd_stratum, | ||
double const & | _depth, | ||
double const & | _c_org_without_stones, | ||
double const & | _bulk_density_without_stones, | ||
const ldndc::site::input_class_site_t * | _site, | ||
const ldndc::soillayers::input_class_soillayers_t * | _soillayers, | ||
const ldndc::soilparameters::input_class_soilparameters_t * | _soilparameters, | ||
bool | _info = false |
||
) |
Porosity is estimated based on organic carbon fraction and bulk density for the soil including stones. Porosity is given by a value between 0 and 1. See: porosity()
References forest_floor().
Referenced by assign_soillayer_field_capacity_and_wilting_point().
void ldndc::canopy_biomass_distribution | ( | size_t const | _fl_cnt_max, |
size_t const | _fl_cnt, | ||
double const | _ps, | ||
double const | _h_bottom, | ||
double const | _h_top, | ||
double const * | _h_fl, | ||
double * | _fFol_fl | ||
) |
Foliage biomass distribution vertically across canopy.
_fl_cnt_max | maximum number of foliage parameters |
_fl_cnt | current actively used number of foliage parameters |
_ps | |
_h_bottom | |
_h_top | |
_h_fl | |
_fFol_fl |
References estimate_single_layer_biomass().
void ldndc::canopy_lai_distribution | ( | double | _sla_min, |
double | _sla_max, | ||
double | _height_max, | ||
double | _height_min, | ||
double | _mFol, | ||
double const * | _fFol_fl, | ||
double const * | _h_fl, | ||
double * | _lai_fl, | ||
double * | _sla_fl, | ||
size_t | _foliage_layer_cnt, | ||
size_t | _foliage_layer_cnt_max | ||
) |
Leaf area distribution vertically across the whole canopy.
_sla_min | specific leaf area at canopy top |
_sla_max | specific leaf area at canopy bottom |
_height_max | total plant height |
_height_min | plant height at start of canopy |
_mFol | foliage biomass |
_fFol_fl | foliage biomass distribution |
_h_fl | canopy discretization |
_lai_fl | canopy layer leaf area index |
_sla_fl | canopy layer specific leaf are |
_foliage_layer_cnt | number of canopy layers |
_foliage_layer_cnt_max | maximum number of canopy layers |
double LDNDC_API ldndc::cation_exchange_capacity | ( | double | _clay, |
double | _sand, | ||
double | _som, | ||
double | _ph, | ||
ecosystem_type_e | _ecosystem | ||
) |
Detailed description provided here .
_clay | Clay content [%] |
_sand | Sand content [%] |
_som | Soil organic matter content [%] |
_ph | pH value [-] |
_ecosystem | Ecosystem type [-] |
Referenced by ldndc::SoilChemistryMeTrX::MeTrX_clay_nh4_equilibrium().
double ldndc::crown_shape_parameter | ( | double | _length, |
double | lref, | ||
double | ps | ||
) |
Returns a crown shape parameter which is modified by canopy length.
modification of crown shape by canopy length
double ldndc::d_eff_air_a | ( | double const & | _exp, |
double const & | _gas_content | ||
) |
Returns effective diffusion coefficient depending on gas content.
[in] | _exp | Exponent [-] |
[in] | _gas_content | Gas content [m^3:m^-3] |
Referenced by ldndc::SoilChemistryMeTrX::MeTrX_physics().
double ldndc::d_eff_air_b | ( | double const & | _exp_g, |
double const & | _exp_p, | ||
double const & | _gas_content, | ||
double const & | _porosity | ||
) |
Returns effective diffusion coefficient depending on gas content and porosity.
[in] | _exp_g | Exponent for gas content [-] |
[in] | _exp_p | Exponent for porosity [-] |
[in] | _gas_content | Gas content [m^3:m^-3] |
[in] | _porosity | Porosity [m^3:m^-3] |
double ldndc::d_eff_air_millington_and_quirk_1961 | ( | double const & | _gas_content, |
double const & | _porosity | ||
) |
Returns effective diffusion coefficient after [55].
[in] | _gas_content | Gas content [m^3:m^-3] |
[in] | _porosity | Porosity [m^3:m^-3] |
Referenced by ldndc::SoilChemistryMeTrX::MeTrX_physics().
void ldndc::estimate_single_layer_biomass | ( | double const | _ps, |
double const | _h_bottom, | ||
double const | _h_top, | ||
double | _lw, | ||
double & | _fract, | ||
double | _h_cum_bottom, | ||
double | _h_cum_top | ||
) |
Vertical biomass estimation.
_ps | form parameter |
_h_bottom | height of start of distributed biomass |
_h_top | height of end of distributed biomass |
_lw | |
_fract | |
_h_cum_bottom | |
_h_cum_top |
The standard vertical distribution of biomass is done with the same assumptions for canopy (veglibs_canopy) and rooting space (Fine root distribution). Only for root distribution there are several more options available.
Referenced by canopy_biomass_distribution(), and fineroots_biomass_distribution().
void ldndc::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 | ||
) |
scaling factor for root distribution (basically to enable root and canopy profile calculations with the same function)
fraction of fine roots in the litter layer
fraction of fine roots in the mineral soil
References estimate_single_layer_biomass().
bool ldndc::forest_floor | ( | size_t | _sl, |
soillayers::input_class_soillayers_t const & | _soillayers, | ||
const ldndc::site::input_class_site_t & | _site | ||
) |
First floor defined by:
Referenced by assign_soillayer_field_capacity_and_wilting_point(), and assign_soillayer_porosity().
double ldndc::get_optimum_sap_wood_biomass | ( | MoBiLE_Plant * | _p | ) |
_p | Plant |
Referenced by get_sapwood_foliage_ratio().
double ldndc::get_sapwood_foliage_ratio | ( | MoBiLE_Plant * | _p | ) |
_p | Plant |
References get_optimum_sap_wood_biomass().
lerr_t ldndc::get_voc_emission_factors | ( | ldndc::MoBiLE_Plant * | _vt, |
int | _fl, | ||
bool | _calc_synthase_activity, | ||
double | _latitude, | ||
int | _yearday, | ||
double | _foliage_temperature, | ||
double | _foliage_radiation | ||
) |
Daily calculation of voc (isoprene and monoterpenes) synthase activity NOTE that fCO2 depends on outside CO2, internal CO2 would probably be better (explaining relatively high emissions when stomata closed)
double ldndc::non_stomatal_water_limitation | ( | double const & | _var, |
double const & | _var_ref, | ||
double const & | _var_scale | ||
) |
double ldndc::sap_wood_fraction | ( | double | _lai_max, |
double | _qsfa, | ||
double | _height_min, | ||
double | _height_max, | ||
double | _depth | ||
) |
sap_wood_fraction The calculation of the fraction of sapwood in coarse roots is based on the idealized volume fraction and assumes that the stem in the crown as well as the coarse roots are shaped as cones, and that core wood reaches a third of the cone
Calculation is based on the sapwood area demand for foliage. Sapwood volume is assumed to equal a cone within the canopy and across the rooted soil, and a column between the ground and canopy start.
double ldndc::sapwood_foliage_area_ratio | ( | double | _height, |
double | _qsf_p1, | ||
double | _qsf_p2 | ||
) |
lerr_t ldndc::update_litter_height | ( | soillayers::input_class_soillayers_t const & | _soillayers, |
substate_watercycle_t & | _wc, | ||
substate_soilchemistry_t & | _sc | ||
) |
Detailed description provided here .
_sl | Soil layers class |
_wc | Watercycle state |
_sc | Soilchemistry state |
Referenced by ldndc::SoilChemistryMeTrX::MeTrX_update().
lerr_t ldndc::wood_initialization | ( | soillayers::input_class_soillayers_t const & | _sl, |
MoBiLE_Plant * | _p, | ||
substate_soilchemistry_t & | _sc, | ||
ecosystem_type_e | _ecosystemtype | ||
) |
Initialization of aboveground and belowground wood debris, derived from existing vegetation.
Referenced by ldndc::SoilChemistryMeTrX::MeTrX_update().
ldndc::MoBiLE_ModuleFactoryEnvelope const ldndc::module_factories |
a list of destructors (because i was to lazy to add a one line file for these base classes..)
module factory array is defined here.
ldndc::substate_factory_t< substate_airchemistry_t > const ldndc::substate_airchemistry_factory |
substate base class implementation, sources factories
lflags_t const ldndc::TMODE_DEFAULTS = TMODE_SUBDAILY|TMODE_PRE_DAILY|TMODE_POST_DAILY|TMODE_PRE_YEARLY|TMODE_POST_YEARLY |