-
Notifications
You must be signed in to change notification settings - Fork 6
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
fwsoil with Haverd2013
appears broken
#546
Comments
Interestingly - the (re)initialisation line above also appear in the CM2 codebase on MOSRS - so this bug (if it is one) was in the codebase and published simulations. |
Further information: the following is a list of initial & final values of fwsoil in the output from benchcab runs for #545 alongside the mean value of the absolute change in fwsoil over the time step i.e. For the R0_S2 (i.e. MAIN, fwsoil = 'standard') case:
None of the sites are invariant in time - though some start and end at the same (unrestricted saturation) value For the R0_S0 case ( MAIN, 'Haverd2013')
Nearly all of the sites have an invariant fwsoil - this is certainly not the intent of the parametrisation. We need to check the corresponding values from a run triggered off the CABLE-POP_TRENDY branch . |
Is this the same issue as #484, which we found when I was trying to get the Haverd2013 switch working in ESM1.5 (#483)? |
Possibly - but probably not. Tests associated with #494 are showing the same issue - and that's PR has the adjustments to The results above - from #545 - are from a branch which doesn't have the ice fixes (or wbliq term) in. Further investigations seem to be indicating that the water balance errors are focussed in short periods of time when the soil T > freezing, and soil moisture <= field capacity. fwsoil = 'standard' is reducing fwsoil and hence transpiration, fwsoil = 'Haverd2013' seems to be leaving the value of fwsoil alone (allowing for unrestricted transpiration) but restricting amount that can be taken from the soil. |
I now understand why we're getting somewhat inconsistent impacts from the 'Haverd2013' parameterisation. Below are 4 plots showing time series (blue = 'standard' R0_S2, orange = 'Haverd2013', R0_S0) for fwsoil, latent heat Qle (basically transpiration), wbal (the integrated water imbalance) and soil moisture in each of the 6 layers - from the benchcab runs for UMB from #545. As noted 'Haverd2013' is not varying the fwsoil, this allows unrestricted transpiration, which is driving the soil moisture below the standard case (and even below the wilting point swilt). However it is only if and when this drives the water content below one or other of the hard-wired limits (0 soil moisture in soil layer 4) that this manifests as a water imbalance. If you don't hit such a case then 'Haverd2013' is conserving well, albeit the dynamics are incorrect - hence the inconsistency in results across cases. All this is pointing towards the need to understand what's happening with fwsoil with Haverd et al. as the route to explain this issue. |
Going through the code, the likely culprit is this: CABLE/src/science/canopy/cbl_dryLeaf.F90 Lines 744 to 758 in d744c2f
The ELSE condition will give a |
I obviously don't know anything about that science but this line is weird: CABLE/src/science/canopy/cbl_dryLeaf.F90 Line 740 in d744c2f
In the case, I looked at Etrans is very small (1e-11), so it makes Before that line we have: CABLE/src/science/canopy/cbl_dryLeaf.F90 Lines 729 to 731 in d744c2f
This is pretty much the same condition as the one used to update |
@ccarouge the CABLE-POP_TRENDY has additional comments in this section - which in effect are reminders from @mcuntz to ask Vanessa about the logic here. The basic idea is that if there is any soil layer which cannot support the requested transpiration then you have to reshuffle where the water comes from, and if necessary rescale the amount requested. I agree with @mcuntz though that in this situation - only if Equivalently though - if there's been some reshuffling of So yes - this area is suspect. @juergenknauer does this raise any memories? Another thing that I don't like about all of this is that the way this is coded effectively makes |
@ccarouge Part of the problem here is that
The conditions at 729 then check whether actual extraction rate over the time step is sufficient to force the soil moisture content below wilting point ( Line 742 then goes over the whole set up again trying to catch edge cases - using different logic to reshuffle water extraction (including - magically - allowing extraction from soil layers without any roots.) I suspect that most cases will be caught by the section from 728-740 - but, yes, it's highly likely that 744-755 would cause water imbalance if the model were to get into that case, especially if rex ends up as zero but Etrans not. |
After re-reading the code, it seems to me that This is because line 748, tells us the relative extraction is comparable to |
Unfortunately it's not that simple:
In short - I think the logic around what I (and Matthias) am more worried about the combination (in that 742-758 section) of *this is actually why I think this conversation is a bit of a mis-direction to be honest. I want to check the output from #494 to see what is happening in those runs in more detail. |
The idea behind Haverd2013 is that plants take up water as long there is water within the root zone. This is also called compensating roots in the literature. Plants take up water from deeper layers if the upper layers fall dry even when there is a smaller amounts of roots. This is why That's the idea. But we in Nancy also have problems with Haverd2013.
Then we check the water balance. Say So then there is the second check if any After looking at it now, I think
All this was for water extraction. But what is fwsoil? At the moment it is |
@mcuntz - I agree that the second normalization could lead to too much water being extracted from a layer, but not doing so prevents the plants from preferentially extracting water from a layer with less roots but more water and also breaks The 'standard' code takes the top-bottom loop approach (on loop, applied in all circumstances) - in Just one question on this - I didn't quite follow your last point about how to evaluate and then (to check) did you mean ?
These suggested changes are likely for 'future consideration' - the immediate work is to try and figure out why #494 isn't conserving as well as MAIN when the 'Haverd2013' switch is on (since that indicates there may be a problem with the liquid/ice density changes code). Is there a physiological reason/interpretation for the factors 1.1? This appears in the 'standard' code as well. Given that there is also the |
Sorry, should have been a multiplication for The 1.1 comes from the fact that too much water was extracted from the layers if 1.0, most probably due to the normalisation. So the 1.1 makes it more likely that we stay above the wilting point after root extraction. For fwsoil, I meant:
|
By the way, in CABLE main, the constants e3, one and zero are REAL(r_2) but the values are given as single precision, e.g. one = 1.0. This makes small errors that do are do not add up. Kills the isotopes, though ;-) |
Current runs from MAIN with the
fwsoil_switch = 'Haverd2013'
appear in some (maybe all) cases to result in a constant value ofcanopy%fwsoil
. Some - but not all - fluxnet site runs also exhibit poor water conservation.A quick comparison between the MAIN and CABLE-POP-TRENDY branches shows that there is an additional (re)initialisation of
canopy%fwsoil
at line 194 in MAIN - but it's not clear whether this is the cause or not.This issue is a blocker for the use of this switch in AM3/CM3 and ESM1.6 - we should not use this switch/codebase combination in the coupled models as they stand.
The text was updated successfully, but these errors were encountered: