14string_vector multilayer_canopy_properties::get_inputs(
int )
17 "par_incident_direct",
18 "par_incident_diffuse",
20 "cosine_zenith_angle",
29 "par_energy_fraction",
30 "leaf_transmittance_nir",
31 "leaf_transmittance_par",
32 "leaf_reflectance_nir",
33 "leaf_reflectance_par"
84 string_vector multilayer_outputs = generate_multiclass_quantity_names(
90 multilayer_outputs.push_back(name);
94 multilayer_outputs = generate_multilayer_quantity_names(nlayers, multilayer_outputs);
97 multilayer_outputs.push_back(
"canopy_direct_transmission_fraction");
100 return multilayer_outputs;
111 par_incident_direct / par_energy_content,
112 par_incident_diffuse / par_energy_content,
118 leaf_reflectance_nir,
119 leaf_reflectance_par,
120 leaf_transmittance_nir,
121 leaf_transmittance_par,
127 vector<double> wind_speed_profile(nlayers);
128 WINDprof(windspeed, lai, wind_speed_profile);
131 vector<double> leafN_profile(nlayers);
132 LNprof(LeafN, lai, kpLN, leafN_profile);
136 throw std::logic_error(
"Thrown by the multilayer_canopy_properties module: lnfun != 0 is not yet supported.");
140 for (
int i = 0; i < nlayers; ++i) {
153 update(height_ops[i], light_profile.
height[i]);
154 update(windspeed_ops[i], wind_speed_profile[i]);
155 update(LeafN_ops[i], leafN_profile[i]);
166int const ten_layer_canopy_properties::nlayers = 10;
195void ten_layer_canopy_properties::do_operation()
const
void LNprof(double LeafN, double LAI, double kpLN, vector< double > &leafN_profile)
void WINDprof(double WindSpeed, double LAI, vector< double > &wind_speed_profile)
Wind profile function.
Calculates environmental properties for sunlit and shaded leaves in each layer of a multilayer canopy...
static string_vector define_pure_multilayer_outputs()
Define all outputs that have different values for each layer, not including outputs that also depend ...
static string_vector define_multiclass_multilayer_outputs()
Define all outputs that have different values for each leaf class and layer.
static string_vector get_inputs(int nlayers)
Define all inputs required by the module.
static string_vector get_outputs(int nlayers)
Define all output names by appending leaf class prefixes and layer number suffixes....
static string_vector define_leaf_classes()
Define the different leaf classes included by the module.
A child class of multilayer_canopy_properties where the number of layers has been defined....
static string_vector define_pure_multilayer_outputs()
static string_vector define_multiclass_multilayer_outputs()
static string_vector get_outputs()
static string_vector get_inputs()
static string_vector define_leaf_classes()
double shaded_fraction[MAXLAY]
double sunlit_incident_nir[MAXLAY]
double shaded_incident_nir[MAXLAY]
double sunlit_absorbed_ppfd[MAXLAY]
double sunlit_fraction[MAXLAY]
double shaded_incident_ppfd[MAXLAY]
double sunlit_incident_ppfd[MAXLAY]
double shaded_absorbed_shortwave[MAXLAY]
double sunlit_absorbed_shortwave[MAXLAY]
double canopy_direct_transmission_fraction
double shaded_absorbed_ppfd[MAXLAY]
Light_profile sunML(double ambient_ppfd_beam, double ambient_ppfd_diffuse, double chil, double cosine_zenith_angle, double heightf, double k_diffuse, double lai, double leaf_reflectance_nir, double leaf_reflectance_par, double leaf_transmittance_nir, double leaf_transmittance_par, double par_energy_content, double par_energy_fraction, int nlayers)
Computes an n-layered light profile from the direct light, diffuse light, leaf area index,...