Next, we need to update each model’s namelist files in <control-directory>/{atmosphere,ocean,ice}
to have the correct starting dates:
Atmosphere: In <control-directory>/atmosphere/namelists
, set
MODEL_BASIS_TIME= 0700 , 01 , 01 , 0 , 0 , 0 ,
ANCIL_REFTIME= 0700 , 01 , 01 , 0 , 0 , 0 ,
Make the same change in <control-directory>/atmosphere/CNTLALL
. This second file might be superfluous and we’re looking at removing it for the new release, but for now it’s probably safest to edit it alongside the namelists
file.
My understanding is that MODEL_BASIS_TIME
sets the atmosphere’s starting date for the new simulation. The impact of ANCIL_REFTIME
is a bit more intricate – it can shift forwards or back the days at which ancillary fields are updated which can influence reproducibility. It might not be stricly necessary, but it works out here to change the ANCIL_REFTIME
to match the new MODEL_BASIS_TIME
.
Ocean: The ocean’s start times appear to be read in from the restart file ocean_solo.res
:
700 1 1 0 0 0 Current model time: year, month, day, hour, minute, second
and so no changes need to be made to the ocean model’s namelists.
Ice: The best way to handle the cice
timing controls is still a bit unclear to me, as it is fairly messy.
First, <control-directory>/ice
contains two configuration files cice_in.nml
and input_ice.nml
, which influence different parts of the simulation timing. The relevant variables in input_ice.nml
are:
inidate
- the start date for the new simulation.
init_date
- the original starting date for the whole simulation (e.g. 0001/01/01).
runtime0
- the total amount of time in seconds already simulated since the init_date
.
runtime
- the amount of time in seconds to be run in the next simulation.
while the relevant variables in cice_in.nml
are:
year_init
- the original starting year for the simulation (should match the year in init_date)
istep0
- the total number of timesteps simulated so far.
npt
- the number of timesteps to be run in the next simulation.
In practice, payu
will only pay attention to init_date
and year_init
, which should be left at 0010101
and 0001
respectively. For the other variables, payu
replaces their values (see the next step),and it should be safe to leave them as is. It could be worthwhile to set inidate
to the new starting date of 07000101
just for record keeping.
5.Each time payu
runs a simulation, it places updated versions of cice_in.nml
and input_ice.nml
in the latest restart directory, and fills them with timing information about the run that just finished.
E.g. in restart003/ice/input_ice.nml
, runtime0
will be the total amount of time, in seconds, between the simulation initialisation (init_date
) and the start of run 003
. Meanwhile runtime
will be the number of seconds simulated during run 003
. Likewise in restart003/ice/input_ice.nml
, istep0
and npt
will be the total number of timesteps simulated by before and during run 003
respectively.
When run 004
starts, payu
takes the information from the restart003/ice
namelist files, notes how much time has passed (runtime0 + runtime
) since the initialisation date, and uses the result to specify the start date of the next run, run 004
. (Hence why the values in <control-dir>/ice
are ignored).
For starting a new run at year 700, this means <new-restart-dir>/ice
must contain a copy of input_ice.nml
which states that 699 years of simulation have already passed. /g/data/vk83/experiments/inputs/access-esm1p5/pre-industrial/restart/ice
contains a version which does this for year 101 – copy this over to <new-restart-dir>/ice
and replace its runtime0
value to equal the total number of seconds between the experiment initialisation date 0001-01-01 and the new start date 0700-0101, using the proleptic Gregorian calendar, i.e:
<new-restart-dir>/input_ice.nml
------------------------------------------------------------
&coupling
runtime0=22058265600
runtime=0
/
runtime
should be left at 0 to ensure that runtime0 + runtime
equals the correct value.
In /g/data/vk83/experiments/inputs/access-esm1p5/pre-industrial/restart/ice
, you’ll also notice a copy of cice_in.nml
. Copy this over to <new-restart-dir>/ice
too. It’s values will look inconsistent with the timing variables from the new version of input_ice.nml
, e.g. in
<new-restart-dir>/cice_in.nml
------------------------------------------------------------
&setup_nml
istep0=0,
npt=0,
dt=3600,
/
istep0 = 0
timesteps doesn’t match runtime0 = 22058265600
. Due to quirks with payu
’s handling of the ice calendar, it currently seems safest to leave this as is even though its inconsistent. Trying to make the two match can cause some immediate timing issues.
6. new-restart-dir
should now contain all the files required for the new run. Update the paths and filenames under <control-directory>/manifests/restart.yaml
to point to the new files and symlinks.
Edit: the payu setup
command will automatically fill in the paths in the restart.yaml
based on the files it finds in the specified restart directory, and so it shouldn’t be necessary to manually update this file.
- Everything should now be ready to run. Following the above and running for a few months, the simulation appears to match the original
PI-02
simulation:
I haven’t trialed a long simulation yet, so I am hoping there aren’t any timing problems down the road. Hopefully this works for getting started though.