Dear all,
I had created an issue on github where “only” Ian replied. Jürgen advised me to ask it again on the forum to reach a larger user base.
We are working to include plant hydraulics in CABLE-POP (starting from the code of Martin de Kauwe and Manon Sabot). We came across a few points in cable_canopy that we do not understand.
Here the points that are in common between the CABLE main branch and the CABLE-POP_TRENDY branch:
-
The stomatal conductance models are supposed to depend on the humidity at the surface of the leaf. It is like this in Wang and Leuning (1998) and also in the CABLE documentation (Kowalczyk et al. 2006, Eq. 67).
In the code, the variable is calleddsx. I should beesat(T_leaf) - e_swithe_sthe actual vapour pressure at the leaf surface. However,dsxis ratheresat(T_leaf) - e_vwithe_vthe actual vapour pressure of the canopy air-space (met%qvair). The update of the variable indryLeafis:dsx(i) = met%dva(i) + air%dsatdk(i) * (tlfx(i)-met%tvair(i))on line 548 in src/science/canopy/cbl_dryLeaf.F90 in MAIN and on line 2259 in core/biogeophys/cable_canopy.F90 in CABLE-POP_TRENDY.met%dvais(qstvair - met%qvair) * const.
Q: Is this a deliberate change?
Q: Do you know why?
Q: When did this happen? I have code from 2015 that already has this change.
Q: Do you think it is worth it reinstalling the dependence on surface vapour pressure. -
There are x- and y-variables in the code, such as
tlfxandtlfyfor leaf temperature. The y-variables will be written to the output variables at the end ofdryLeafsuch ascanopy%frday = 12.0 * SUM(rdy, 2)for leaf respiration. The y-variables are only updated in the iterations if the change in leaf temperature was smaller than any change of leaf temperature before in the iterations.There is also a line that does reduce the calculated change in temperature after 5 iterations (of 20) to avoid oscillations between states.
tlfx(i) = ( 0.5 * ( MAX( 0, k-5 ) / ( k - 4.9999 ) ) ) *tlfxx(i) + &
( 1.0 - ( 0.5 * ( MAX( 0, k-5 ) / ( k - 4.9999 ) ) ) ) &
* tlfx(i)
So there should be oscillations in leaf temperature changes that are not suppressed by the regularisation of it to have a difference between x- and y-variables at the end. We ended up with oscillations in stomatal conductance, transpiration, etc. when including a new stomatal conductance model (Tuzet) because the regularisation after 5 iterations does only reduce the change in leaf temperature but not the other variables.
Q: Why is only leaf temperature stabilised and not Cs and Ds as well?
Q: If stabilisation worked, the difference between x- and y-variables would make no sense. What is your experience?
Q: There are 4 outer iterations in define_canopy and 20 inner iterations in dryLeaf. Given that the y-variables are supposedly the “correct” output, should the inner iterations not start with the y-variables then (they start with the x-variables currently)?
- The CO2 compensation point (
GammanotGamma*) is set to 0:co2cp3 = 0.
Q: Is there a reason? Is it supposed to be not necessary? Is it simply laziness to redo the quadratic equations?
There is one more remark for CABLE-POP:
- Vanessa rewrote the Leuning model to reduce the correlation between the two parameters
a1andD0, which is large. This makes sense if you optimise parameters.
However, the terma1 / (1 + D / D0)was rewritten to1 / (1 / a1 + D / D0). The latterD0should then be seen asa1*D0. But it is still around 1.5 kPa in the parameter file (rather than be around 13 kPa). So this should be changed somewhere.
Q: We could adapt the parameter file. Or we could just undo the change and stay with the current parameters, which are easier to interpret.
Kind regards,
Matthias