The BioCro C++ Library
ball_berry.h
Go to the documentation of this file.
1#ifndef BALL_BERRY_H
2#define BALL_BERRY_H
3
4#include "../framework/module.h"
5#include "../framework/state_map.h"
6#include "ball_berry_gs.h"
7
8namespace standardBML
9{
16class ball_berry : public direct_module
17{
18 public:
19 ball_berry(state_map const& input_quantities, state_map* output_quantities)
20 : direct_module{},
21
22 // Get pointers to input quantities
23 net_assimilation_rate{get_input(input_quantities, "net_assimilation_rate")},
24 ambient_c{get_input(input_quantities, "Catm")},
25 ambient_rh{get_input(input_quantities, "rh")},
26 b0{get_input(input_quantities, "b0")},
27 b1{get_input(input_quantities, "b1")},
28 gbw{get_input(input_quantities, "gbw")},
29 leaf_temperature{get_input(input_quantities, "leaf_temperature")},
30 ambient_air_temperature{get_input(input_quantities, "temp")},
31
32 // Get pointers to output quantities
33 cs_op{get_op(output_quantities, "cs")},
34 hs_op{get_op(output_quantities, "hs")},
35 leaf_stomatal_conductance_op{get_op(output_quantities, "leaf_stomatal_conductance")}
36 {
37 }
38 static string_vector get_inputs();
39 static string_vector get_outputs();
40 static std::string get_name() { return "ball_berry"; }
41
42 private:
43 // Pointers to input quantities
44 double const& net_assimilation_rate;
45 double const& ambient_c;
46 double const& ambient_rh;
47 double const& b0;
48 double const& b1;
49 double const& gbw;
50 double const& leaf_temperature;
51 double const& ambient_air_temperature;
52
53 // Pointers to output quantities
54 double* cs_op;
55 double* hs_op;
56 double* leaf_stomatal_conductance_op;
57
58 // Main operation
59 void do_operation() const;
60};
61
63{
64 return {
65 "net_assimilation_rate", // micromol / m^2 / s
66 "Catm", // micromol / mol
67 "rh", // Pa / Pa
68 "b0", // mol / m^2 / s
69 "b1", // dimensionless from [mol / m^2 / s] / [mol / m^2 / s]
70 "gbw", // mol / m^2 / s
71 "leaf_temperature", // degrees C
72 "temp" // degrees C
73 };
74}
75
77{
78 return {
79 "cs", // micromol / mol
80 "hs", // dimensionless from Pa / Pa
81 "leaf_stomatal_conductance" // mol / m^2 / s
82 };
83}
84
85void ball_berry::do_operation() const
86{
88 net_assimilation_rate * 1e-6,
89 ambient_c * 1e-6,
90 ambient_rh,
91 b0,
92 b1,
93 gbw,
94 leaf_temperature,
95 ambient_air_temperature);
96
97 update(cs_op, result.cs);
98 update(hs_op, result.hs);
99 update(leaf_stomatal_conductance_op, result.gsw);
100}
101
102} // namespace standardBML
103#endif
stomata_outputs ball_berry_gs(double assimilation, double ambient_c, double ambient_rh, double bb_offset, double bb_slope, double gbw, double leaf_temperature, double ambient_air_temperature)
Calculates steady-state stomatal conductance to water vapor using the Ball-Berry model.
Uses ball_berry_gs() to evaluate the Ball-Berry model for stomatal conductance.
Definition: ball_berry.h:17
ball_berry(state_map const &input_quantities, state_map *output_quantities)
Definition: ball_berry.h:19
static string_vector get_outputs()
Definition: ball_berry.h:76
static string_vector get_inputs()
Definition: ball_berry.h:62
static std::string get_name()
Definition: ball_berry.h:40
This is the standard BioCro module library; it includes the essential modules used in typical BioCro ...
Definition: aba_decay.h:8
A simple structure for holding the output of stomatal conductance calculations.
double gsw
Stomatal conductance to water vapor (mmol / m^2 / s)
double hs
Relative humidity at the leaf surface (dimensionless)
double cs
CO2 concentration at the leaf surface (micromol / mol)