The BioCro C++ Library
leaf_energy_balance.cpp File Reference
#include <cmath>
#include "../framework/constants.h"
#include "boundary_layer_conductance.h"
#include "conductance_helpers.h"
#include "../math/roots/onedim/dekker.h"
#include "water_and_air_properties.h"
#include "leaf_energy_balance.h"
+ Include dependency graph for leaf_energy_balance.cpp:

Go to the source code of this file.

Functions

double calculate_Phi_N (double const epsilon_s, double const J_a, double const leaf_temperature)
 Calculates the total energy available to the leaf for transpiration and sensible heat loss, often denoted as \( \Phi_N \). More...
 
double calculate_gbw_leaf (double const air_pressure, double const air_temperature, double const leaf_temperature, double const leaf_width, double const wind_speed)
 Calculates the leaf boundary layer conductance using the Nikolov model. More...
 
double check_leaf_temp (double const air_pressure, double const air_temperature, double const Delta_rho, double const epsilon_s, double const gamma, double const gbw_canopy, double const J_a, double const lambda, double const leaf_temperature, double const leaf_width, double const s, double const stomatal_conductance, double const wind_speed)
 Calculates a difference in leaf temperature; this function will return zero only if leaf temperature satisfies the energy balance equations. More...
 
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-Monteith approach. More...
 

Function Documentation

◆ calculate_gbw_leaf()

double calculate_gbw_leaf ( double const  air_pressure,
double const  air_temperature,
double const  leaf_temperature,
double const  leaf_width,
double const  wind_speed 
)

Calculates the leaf boundary layer conductance using the Nikolov model.

This is a simple wrapper to reduce repeated code in the energy balance calculations.

Returns
gbw_leaf (m / s)

Definition at line 48 of file leaf_energy_balance.cpp.

References leaf_boundary_layer_conductance_campbell().

Referenced by check_leaf_temp(), and leaf_energy_balance().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ calculate_Phi_N()

double calculate_Phi_N ( double const  epsilon_s,
double const  J_a,
double const  leaf_temperature 
)

Calculates the total energy available to the leaf for transpiration and sensible heat loss, often denoted as \( \Phi_N \).

This is a simple helping function to reduce repeated code in the energy balance calculations.

Parameters
[in]epsilon_sEmissivity of the leaf surface (dimensionless)
[in]J_aAbsorbed shortwave and longwave energy (J / m^2 / s)
[in]leaf_temperatureLeaf temperature (degrees C)
Returns
Phi_N (J / m^2 / s)

Definition at line 25 of file leaf_energy_balance.cpp.

Referenced by check_leaf_temp(), and leaf_energy_balance().

+ Here is the caller graph for this function:

◆ check_leaf_temp()

double check_leaf_temp ( double const  air_pressure,
double const  air_temperature,
double const  Delta_rho,
double const  epsilon_s,
double const  gamma,
double const  gbw_canopy,
double const  J_a,
double const  lambda,
double const  leaf_temperature,
double const  leaf_width,
double const  s,
double const  stomatal_conductance,
double const  wind_speed 
)

Calculates a difference in leaf temperature; this function will return zero only if leaf temperature satisfies the energy balance equations.

Definition at line 68 of file leaf_energy_balance.cpp.

References calculate_gbw_leaf(), calculate_Phi_N(), g_to_mass(), and sequential_conductance().

Referenced by leaf_energy_balance().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ leaf_energy_balance()

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-Monteith approach.

Here we consider the path of water vapor to pass through three sequential barriers: the stomata, the leaf boundary layer, and finally the canopy boundary layer. Conductance across the leaf boundary layer is calculated using the leaf_boundary_layer_conductance_nikolov() function, while the other conductances must be provided as inputs.

Leaf temperature and transpiration are calculated using Equations 14.11e and 14.4c, respectively, from Thornley & Johnson (1990).

Parameters
[in]absorbed_longwave_energyAbsorbed light energy in the longwave (infrared) band (J / m^2 / s)
[in]absorbed_shortwave_energyAbsorbed light energy in the shortwave (PAR and near-infrared) band (J / m^2 / s)
[in]air_pressureTotal air pressure (Pa)
[in]air_temperatureBulk air temperature (degrees C)
[in]gbw_canopyConductance to H2O diffusion across the canopy boundary layer (m / s)
[in]leaf_widthCharacteristic dimension of a typical leaf (m)
[in]relative_humidityRelative humidity in the bulk air (dimensionless from Pa / Pa)
[in]stomatal_conductanceConductance to H2O diffusion across the stomata (mol / m^2 / s)
[in]wind_speedWind speed within the canopy just outside the leaf boundary layer (m / s)

Definition at line 147 of file leaf_energy_balance.cpp.

References calculate_gbw_leaf(), calculate_Phi_N(), check_leaf_temp(), dry_air_density(), g_to_mass(), g_to_molecular(), saturation_vapor_pressure(), sequential_conductance(), TempToCp(), TempToSFS(), vapor_density_from_pressure(), and water_latent_heat_of_vaporization_henderson().

Referenced by c3CanAC(), and CanAC().

+ Here is the call graph for this function:
+ Here is the caller graph for this function: