1#ifndef PENMAN_MONTEITH_TRANSPIRATION_H
2#define PENMAN_MONTEITH_TRANSPIRATION_H
4#include "../framework/module.h"
5#include "../framework/state_map.h"
13 state_map
const& input_quantities,
14 state_map* output_quantities)
18 slope_water_vapor{get_input(input_quantities,
"slope_water_vapor")},
19 psychrometric_parameter{get_input(input_quantities,
"psychrometric_parameter")},
20 latent_heat_vaporization_of_water{get_input(input_quantities,
"latent_heat_vaporization_of_water")},
21 leaf_boundary_layer_conductance{get_input(input_quantities,
"leaf_boundary_layer_conductance")},
22 leaf_stomatal_conductance{get_input(input_quantities,
"leaf_stomatal_conductance")},
23 leaf_net_irradiance{get_input(input_quantities,
"leaf_net_irradiance")},
24 vapor_density_deficit{get_input(input_quantities,
"vapor_density_deficit")},
27 leaf_transpiration_rate_op{get_op(output_quantities,
"leaf_transpiration_rate")}
32 static std::string
get_name() {
return "penman_monteith_transpiration"; }
36 double const& slope_water_vapor;
37 double const& psychrometric_parameter;
38 double const& latent_heat_vaporization_of_water;
39 double const& leaf_boundary_layer_conductance;
40 double const& leaf_stomatal_conductance;
41 double const& leaf_net_irradiance;
42 double const& vapor_density_deficit;
45 double* leaf_transpiration_rate_op;
47 void do_operation()
const;
54 "psychrometric_parameter",
55 "latent_heat_vaporization_of_water",
56 "leaf_boundary_layer_conductance",
57 "leaf_stomatal_conductance",
58 "leaf_net_irradiance",
59 "vapor_density_deficit"
66 "leaf_transpiration_rate"
70void penman_monteith_transpiration::do_operation()
const
76 double volume_of_one_mole_of_air = 24.39e-3;
78 double gc = leaf_boundary_layer_conductance * 1e-3 * volume_of_one_mole_of_air;
81 slope_water_vapor * leaf_net_irradiance +
82 latent_heat_vaporization_of_water * psychrometric_parameter *
83 leaf_boundary_layer_conductance * vapor_density_deficit;
86 latent_heat_vaporization_of_water *
87 (slope_water_vapor + psychrometric_parameter * (1 + leaf_boundary_layer_conductance / gc));
89 double evapotranspiration = et_num / et_denom;
92 update(leaf_transpiration_rate_op, evapotranspiration);
static string_vector get_outputs()
penman_monteith_transpiration(state_map const &input_quantities, state_map *output_quantities)
static string_vector get_inputs()
static std::string get_name()
This is the standard BioCro module library; it includes the essential modules used in typical BioCro ...