|
The BioCro C++ Library
|
Include dependency graph for respiration.cpp:Go to the source code of this file.
Functions | |
| double | growth_resp (double const base_rate, double const grc) |
| Calculates respiratory losses associated with a particular base rate of biomass available for growth. More... | |
| double | growth_resp_Q10 (double const base_rate, double const grc0, double const Tleaf, double const Tref) |
| Calculates respiratory losses associated with a particular base rate of biomass available for growth. More... | |
| double | maintenance_resp_Q10 (double const tissue_mass, double const mrc0, double const Tleaf, double const Tref) |
| Calculates respiratory losses associated with the total biomass of a particular tissue. More... | |
| double growth_resp | ( | double const | base_rate, |
| double const | grc | ||
| ) |
Calculates respiratory losses associated with a particular base rate of biomass available for growth.
| [in] | base_rate | The base rate of carbon production that does not include respiratory losses. Any flux units are acceptable, such as mol / m^2 / s or Mg / ha / hour. |
| [in] | grc | Growth respiration coefficient (dimensionless) |
base_rateThe idea here is that when A_base is the rate of carbon being allocated to a tissue for growth, a fraction f_g of this carbon is lost to respiration rather than being converted into new biomass. In other words, the rate of respiratory losses R_g is given by
`R_g = f_g * A_base (1)
The remaining carbon available for growth (A_growth) is given by
`A_growth = A_base * (1 - f_g) (2)
If A_base is negative, then no growth is occurring; in this case, R_g should be zero. With this in mind, we actually use
R_g = 0(3)
when A_base < 0 in place of Equation 3.
In the code below, base_rate represents A_base and grc represents f_g.
For growth respiration, see these papers:
For some general discussions about respiration, see the following two sources:
Definition at line 57 of file respiration.cpp.
Referenced by c3CanAC(), CanAC(), growth_resp_Q10(), and multilayer_canopy_integrator::run().
Here is the caller graph for this function:| double growth_resp_Q10 | ( | double const | base_rate, |
| double const | grc0, | ||
| double const | Tleaf, | ||
| double const | Tref | ||
| ) |
Calculates respiratory losses associated with a particular base rate of biomass available for growth.
| [in] | base_rate | The base rate of carbon production that does not include respiratory losses. Any flux units are acceptable, such as mol / m^2 / s or Mg / ha / hour. |
| [in] | grc0 | Growth respiration coefficient at the reference temperature (dimensionless) |
| [in] | Tleaf | Leaf temperature (degrees C) |
| [in] | Tref | Reference temperature for the Q10 response (degrees C) |
base_rateThis function follows the same general approach as growth_resp(), but calculates the growth respiration coefficient using a simple "Q10" method:
f_g = f_g_0 * 2^((T - Tref) / 10)
where Tref is the reference temperature for the Q10 response and f_g_0 is the growth respiration coefficient at the reference temperature. This is accomplished using the Q10_temperature_response() function.
In the code below, base_rate represents A_base, grc0 and grc represent f_g_0 and f_g, Tleaf represents the temperature T, and Tref represents the reference temperature.
This function was originally called resp and was first explained in Stephen Humphries's thesis.
There, he describes the respiration model in the following way: "The respiration model of McCree (1970) modified according to Penning de Vries (1972) and Thornley (1970) is used here to predict plant respiration... The respiration associated with each plant structure is modified according to the temperature of the structure using a Q10 approximation with a value of 2 as described by Spain and Keen (1992)."
I (EBL) believe these references to be to the following documents:
I believe the McCree, Thornley, and de Vries papers describe the relationship between gross assimilation and respiration, while the Keen & Spain book describes the temperature dependence. Unfortunately, I can't find an online version of that book so I can't be sure.
The Humphries thesis is also unfortunately not available online:
Humphries, S. "Will mechanistically rich models provide us with new insights into the response of plant production to climate change?: development and experiments with WIMOVAC: (Windows Intuitive Model of Vegetation response to Atmosphere & Climate Change)" (University of Essex, 2002)
Originally, this function was described as applying costs due to maintenance respiration. Yufeng [YH] has pointed out that since the cost is proportional to the growth rate, this is actually growth respiration. See these papers:
Ever since the days of WIMOVAC, there had been an additional constraint that A_growth = A_base - R_g is clamped to be greater than or equal to zero. We can see that A_growth would be negative whenever A_base is negative, since the fraction f_g must lie on [0, 1] by definition. So, this clamping operation is equivalent to setting f_g = 1 when A_base is negative. This caused some strange behavior with unrealistic physical meaning, because respiration costs were allowed to be negative. This behavior has since been changed so that no growth respiration occurs when A_base is negative.
Definition at line 159 of file respiration.cpp.
References growth_resp(), and Q10_temperature_response().
Here is the call graph for this function:| double maintenance_resp_Q10 | ( | double const | tissue_mass, |
| double const | mrc0, | ||
| double const | Tleaf, | ||
| double const | Tref | ||
| ) |
Calculates respiratory losses associated with the total biomass of a particular tissue.
| [in] | tissue_mass | The total biomass of a tissue component (Mg / ha) |
| [in] | mrc0 | Maintenance respiration coefficient at the reference temperature (dimensionless) |
| [in] | Tleaf | Leaf temperature (degrees C) |
| [in] | Tref | Reference temperature for the Q10 response (degrees C) |
tissue_massThe idea here is that some respiration is required to maintain living tissue, and that the rate of CO2 use for maintenance respiration (R_m) is given by
`R_m = f_m * M_tissue (1)
where M_tissue is the mass of the tissue and f_m is a proportionality factor. In BioCro, M_tissue is expressed in Mg / ha and R_m in Mg / ha / hr, sof_m` must have dimensions of "mass per mass per time," or kg / kg / hr using customary BioCro time units.
In this function, the temperature dependence of the proportionality factor is modeled using a simple "Q10" method:
f_m = f_m_0 * 2^((T - Tref) / 10)(3)
where Tref is the reference temperature for the Q10 response and f_m_0 is the maintenance respiration coefficient at the reference temperature. This is accomplished using the Q10_temperature_response() function.
In the code below, tissue_mass represents M_tissue, mrc0 and mrc represent f_m_0 and f_m, Tleaf represents the temperature T, and Tref represents the reference temperature.
This ideas is from this paper: https://doi.org/10.1016/j.fcr.2010.07.007.
For some general discussions about respiration, see the following two sources:
Definition at line 228 of file respiration.cpp.
References Q10_temperature_response().
Here is the call graph for this function: