The BioCro C++ Library
priestley_transpiration.h
Go to the documentation of this file.
1#ifndef PRIESTLEY_TRANSPIRATION_H
2#define PRIESTLEY_TRANSPIRATION_H
3
4#include "../framework/module.h"
5#include "../framework/state_map.h"
6
7namespace standardBML
8{
9class priestley_transpiration : public direct_module
10{
11 public:
12 priestley_transpiration(state_map const& input_quantities, state_map* output_quantities)
13 : direct_module{},
14
15 // Get pointers to input quantities
16 slope_water_vapor_ip{get_ip(input_quantities, "slope_water_vapor")},
17 psychrometric_parameter_ip{get_ip(input_quantities, "psychrometric_parameter")},
18 latent_heat_vaporization_of_water_ip{get_ip(input_quantities, "latent_heat_vaporization_of_water")},
19 PhiN_ip{get_ip(input_quantities, "PhiN")},
20
21 // Get pointers to output quantities
22 transpiration_rate_op{get_op(output_quantities, "transpiration_rate")}
23 {
24 }
25 static string_vector get_inputs();
26 static string_vector get_outputs();
27 static std::string get_name() { return "priestley_transpiration"; }
28
29 private:
30 // Pointers to input quantities
31 const double* slope_water_vapor_ip;
32 const double* psychrometric_parameter_ip;
33 const double* latent_heat_vaporization_of_water_ip;
34 const double* PhiN_ip;
35
36 // Pointers to output quantities
37 double* transpiration_rate_op;
38
39 // Main operation
40 void do_operation() const;
41};
42
44{
45 return {
46 "slope_water_vapor",
47 "psychrometric_parameter",
48 "latent_heat_vaporization_of_water",
49 "PhiN"};
50}
51
53{
54 return {
55 "transpiration_rate"};
56}
57
58void priestley_transpiration::do_operation() const
59{
60 // Collect input quantities and make calculations
61
62 double slope_water_vapor = *slope_water_vapor_ip; // kg / m^3 / K
63 double psychr_parameter = *psychrometric_parameter_ip; // kg / m^3 / K
64 double LHV = *latent_heat_vaporization_of_water_ip; // J / kg
65 double PhiN = *PhiN_ip; // In penman_monteith_transpiration, PhiN is retrieved from "leaf_net_irradiance" (EBL)
66
67 double evapotranspiration = 1.26 * slope_water_vapor * PhiN / (LHV * (slope_water_vapor + psychr_parameter));
68
69 // Update the output quantity list
70 update(transpiration_rate_op, evapotranspiration); // kg / m^2 / s. Leaf area basis.
71}
72
73} // namespace standardBML
74#endif
priestley_transpiration(state_map const &input_quantities, state_map *output_quantities)
This is the standard BioCro module library; it includes the essential modules used in typical BioCro ...
Definition: aba_decay.h:8