Open penguian opened 6 years ago
@mrd599@nci.org.au commented
Issues preventing restart reproducibility
Use of CABLE albedo on first timestep
Routine initialise_veg in cable_um_init_subrs.F90 has
CALL clobber_height_lai( canht_ft, lai_ft )
!--- veg params were read from initialize_soil()
IF(first_call) THEN
CALL init_veg_pars_fr_vegin( soil_zse )
! Fix in-canopy turbulence scheme globally:
veg%meth = 1
ENDIF
first_call= .FALSE.
so the first call has the values set by init_veg_pars_fr_vegin
and all others by clobber_height_lai
.
3.initialize_soilsnow
sets
canopy%fes_cor = 0.
canopy%fhs_cor = 0.
canopy%fwsoil = 1.
ssnow%rtsoil = 50.
WHERE( soil%isoilm == 9 ) ! permanent ice:
ssnow%wb(:,J) = 0.95*soil%ssat
ssnow%wbice(:,J) = 0.85*ssnow%wb(:,J)
ENDWHERE
on first time step.
Also sets
! snow depth from prev timestep
ssnow%osnowd = PACK(SNOW_TILE,um1%l_tile_pts)
which effectively sets it to current step value.
soil_snow
sets ssnow%gammzz
on the first time step. Also set elsewhere so need to recheck what was inconsistent about this.Branch jules/main/branches/test/martindix/r11023_restart_repro applied these first step initialisations every step and got restart reproducibility, showing that these are the only problems.
@jxs599@nci.org.au commented
Proposed edit to resolve: 2.) [above] init_veg_pars_fr_vegin( soil_zse ) !veg%hc(h) = vegin%hc(veg%iveg(h)) ! Ticket #198
LAI not set in this routine
@jxs599@nci.org.au changed milestone from ` to
3. Implementation`
@inh599@nci.org.au commented
Other issues that will or are likely to cause restart reproducibility:
use of ortsoil as a numerical smoother in cable_canopy.
%pudsto is not a UM state variable so has to be initialised (at zero) each simulation. Needs to be in the restart file.
ACCESS uses %fes_cor to conserve water across time steps. The implementation of the conservation either needs to be changed (see SSEB package) or %fes_cor put in the restart file.
%ga is needed by the Penman-Monteith option for soil evaporation prior to its first evaluation.
initialisation of and sequencing within the UM time step of ssnow%isflag - %isflag impacts CABLE's albedo and there is the potential for the UM radiation to be seeing (subtly) different albedos to that of the energy balance.
[ESM simulations] All, and any, variables that track aspects of the simulation up to that point for later use and that aren't output/input through the restart.
soil moisture initialisation in permanent ice regions, and more generally in regions with frozen soil.
initialisation of %owetfac
On 2: This can be solved by moving the call to clobber_height_lai after the (first_call) block. However more general consideration of clobber_height_lai (e.g. in ESM simulations) is needed.
@mrd599@nci.org.au commented
Replying to CABLE-LSM/CABLE-Trac#198 (comment:1):
Issues preventing restart reproducibility
- Use of CABLE albedo on first timestep
Point 1 is actually use of JULES albedo on the first step.
@inh599@nci.org.au commented
More on 2. On further investigation clobber_height_lai also sets the CABLE variable veg%iveg from the corresponding UM construct kblum_veg%ivegt. init_veg_pars_fr_vegin needs veg%ivegt - so we have a circularity problem.
The solution would appear to be to call clobber_height_lai a second time after init_parms_fr_vegin in the first_call block (or split clobber_height_lai into two functions).
@jxs599@nci.org.au commented
Ongoing effort via JAC to adress this issue. The rad/albedo pathway is sorted in CABLE3
@ccc561@nci.org.au set keywords to keepgit
keyword_keepgit
owner:jxs599@nci.org.au
type_defect
| by mrd599The UM with JULES has restart reproducibility, i.e. a single 2 month run is identical to 2 successive one month runs. This is useful for rerunning parts of long climate simulations and for catching variables that aren't correctly initialised.
At the moment CABLE does not have this property.
Issue migrated from trac:198 at 2023-11-27 11:26:28 +1100