1#ifndef LEAF_EVAPOTRANSPIRATION_H
2#define LEAF_EVAPOTRANSPIRATION_H
4#include "../framework/module.h"
5#include "../framework/state_map.h"
23 absorbed_shortwave{get_input(input_quantities,
"absorbed_shortwave")},
24 atmospheric_pressure{get_input(input_quantities,
"atmospheric_pressure")},
25 canopy_height{get_input(input_quantities,
"canopy_height")},
26 Gs{get_input(input_quantities,
"Gs")},
27 leafwidth{get_input(input_quantities,
"leafwidth")},
28 min_gbw_canopy{get_input(input_quantities,
"min_gbw_canopy")},
29 rh{get_input(input_quantities,
"rh")},
30 temp{get_input(input_quantities,
"temp")},
31 windspeed{get_input(input_quantities,
"windspeed")},
32 wind_speed_height{get_input(input_quantities,
"wind_speed_height")},
35 EPenman_op{get_op(output_quantities,
"EPenman")},
36 EPriestly_op{get_op(output_quantities,
"EPriestly")},
37 E_loss_op{get_op(output_quantities,
"E_loss")},
38 gbw_canopy_op{get_op(output_quantities,
"gbw_canopy")},
39 gbw_leaf_op{get_op(output_quantities,
"gbw_leaf")},
40 gbw_op{get_op(output_quantities,
"gbw")},
41 gsw_op{get_op(output_quantities,
"gsw")},
42 H_op{get_op(output_quantities,
"H")},
43 leaf_temp_check_op{get_op(output_quantities,
"leaf_temp_check")},
44 leaf_temperature_op{get_op(output_quantities,
"leaf_temperature")},
45 PhiN_op{get_op(output_quantities,
"PhiN")},
46 storage_op{get_op(output_quantities,
"storage")},
47 TransR_op{get_op(output_quantities,
"TransR")},
48 iterations_op{get_op(output_quantities,
"iterations")}
53 static std::string
get_name() {
return "leaf_evapotranspiration"; }
57 double const& absorbed_shortwave;
58 double const& atmospheric_pressure;
59 double const& canopy_height;
61 double const& leafwidth;
62 double const& min_gbw_canopy;
65 double const& windspeed;
66 double const& wind_speed_height;
72 double* gbw_canopy_op;
77 double* leaf_temp_check_op;
78 double* leaf_temperature_op;
82 double* iterations_op;
85 void do_operation()
const;
92 "atmospheric_pressure",
124void leaf_evapotranspiration::do_operation()
const
127 double const absorbed_longwave =
128 1.0 * physical_constants::stefan_boltzmann *
129 pow(conversion_constants::celsius_to_kelvin + temp, 4);
141 atmospheric_pressure,
149 update(EPenman_op, result.
EPenman);
151 update(E_loss_op, result.
E_loss);
153 update(gbw_leaf_op, result.
gbw_leaf);
154 update(gbw_op, result.
gbw);
155 update(gsw_op, result.
gsw);
156 update(H_op, result.
H);
159 update(leaf_temperature_op, temp + result.
Deltat);
160 update(PhiN_op, result.
PhiN);
161 update(storage_op, result.
storage);
162 update(TransR_op, result.
TransR);
double canopy_boundary_layer_conductance_thornley(double CanopyHeight, double WindSpeed, double minimum_gbw, double WindSpeedHeight)
Calculates the conductance for water vapor flow from the canopy across its boundary layer using a mod...
Uses leaf_energy_balance() to determine transpiration rate and leaf temperature.
leaf_evapotranspiration(state_map const &input_quantities, state_map *output_quantities)
static string_vector get_outputs()
static string_vector get_inputs()
static std::string get_name()
energy_balance_outputs leaf_energy_balance(double absorbed_longwave_energy, double absorbed_shortwave_energy, double air_pressure, double air_temperature, double gbw_canopy, double leaf_width, double relative_humidity, double stomatal_conductance, double wind_speed)
Calculates leaf-level temperature and transpiration rate for a leaf within a canopy using a Penman-Mo...
This is the standard BioCro module library; it includes the essential modules used in typical BioCro ...
double gbw
Total boundary layer conductance to water vapor, for mass fluxes (m / s)
double storage
Rate of energy storage by the leaf; should be zero (J / m^2 / s)
double EPriestly
Priestly transpiration rate (mmol / m^2 / s)
double TransR
Transpiration rate (mmol / m^2 / s)
double leaf_temp_check
Equals zero if loop has converged (degrees C)
double EPenman
Potential transpiration rate (mmol / m^2 / s)
double gsw
Stomatal conductance to water vapor, for mass fluxes (m / s)
double E_loss
Rate of energy loss due to transpiration (J / m^2 / s)
size_t iterations
Number of iterations used by convergence loop.
double gbw_leaf
Leaf boundary layer conductance to water vapor, for mass fluxes (m / s)
double H
Rate of sensible heat loss (J / m^2 / s)
double gbw_canopy
Canopy boundary layer conductance to water vapor, for mass fluxes (m / s)
double Deltat
Temperature difference (leaf - air) (degrees C)
double PhiN
Net energy available for transpiration and heat loss (J / m^2 / s)