Open har917 opened 3 months ago
I would define wilt_limitfactor
in cable_other_constants
which already contains other "arbitrary" limits.
Ideally, I would rather define wilt_limitfactor = soil%swilt/2.0
but that would mean having a run-specific and location-specific "constant" and I'm guessing that wouldn't play well with JULES. That would mean defining it somewhere else, and I'm not certain about adding it to soil%
, as a derived parameter.
Anecdotally, would the name wilt_limit
be specific enough but shorter to type?
While the latest fix to the AM3 code see #127 should avoid the occurrence of this %swilt
related water imbalance - the solution isn't robust in that the fundamentals still exist (we've just moved the problem to a part of parameter space that we're unlikely to encounter with soil_snow and the updated UM soil ancillaries). It could well be encountered with other combinations of parameterisation schemes (such as Mark Decker's implementation of the alpha-form for soil evaporation)
A better solution would be/may be to shuffle water around the soil column if the model determines it needs to - i.e. diagnose how much water would be needed to keep the surface soil layer at a certain level of water content and extract that amount from the deepest soil layer if needed.
In addition - for global conservation in the coupled model - we should probably be capture any water that we do need to add as part of the %wb_lake
term so it can be used in the river outflow scaling code.
Following analysis in the coupled model we have an identified a source of moisture imbalance in the default
soil_snow
scheme.At the moment
cbl_Surface_wetness
(line 66) (andcbl_init_wetfac
) prevent evaporation from happening if%wb < %swilt/2
surbv
(line 54) prevents%wb
falling below 0.01This combination allows evaporation from dry soils (when '0.02>%wb>%swilt/2
and
%swilt < 0.02) which then leads to
surfbvcreating water to maintain
%wb` at the hard-wired lower limit. To prevent this we need link the two limits together.My suggestion
wilt_limitfactor = 2.0
incable_phys_constants
cbl_Surface_Wetness
andcbl_init_wetfac
change the relevant lines fromsoil%swilt/2.0
tosoil%swilt/wilt_limitfactor
surfbv
changessnow%wb(:,k) = MAX( 0.01_r_2, MIN( ssnow%wb(:,k), xxx ) )
tossnow%wb(:,k) = MAX( soil%swilt/wilt_limitfactor/2.0, MIN( ssnow%wb(:,k), xxx ) )
This then allows a single point for modification of the relevant lines.
This change will only impact soils where
%swilt < 0.02
which, effectively, means almost pure sand. Until recently soils with such low values%swilt
were not encountered in our standard configurations but the latest UM soil ancillaries do comprise regions where this occurs.We may also need to consider what happens with alternate formulations for
%wetfac
which can allow evaporation at very low values of %wb