Hi Hannah, great questions!
Some of the restart files in /g/data/access/payu/access-esm/restart/pre-industrial
have unclear origins and they don’t appear to match the restart files from the original pre-industrial simulations. For reproducibility, it might be best to use the restarts in /g/data/vk83
, which are copied from the original PI-02
simulation.
They’re a bit hard to find at the moment, but restart and history files for the CMIP6 experiments along with several non-CMIP experiments are stored in /g/data/p73/archive
. There are two different ESM1.5 pre-industrial experiments stored there: PI-01
which was originally run on raijin, and PI-02
which was run on gadi. PI-01
isn’t reproducible on gadi, and so it’s probably worth using the restarts from PI-02
stored in /g/data/p73/archive/CMIP6/ACCESS-ESM1-5/PI-02
.
There are a few intricacies! I’ll run through what worked for me in changing the restart year to 700. A few points aren’t completely clear to me still – I’ll update them if I find out anything more. If you or anyone notices anything that’s not quite right, let me know!
-
Copy the relevant restart files from
/g/data/p73/archive/CMIP6/ACCESS-ESM1-5/PI-02/restart
(in this case, those ending with-07000101
or-06993112
) to a new directory, e.g.<new-restart-dir>
, separating them intoatmosphere
,ocean
,ice
, andcoupler
subdirectories. -
In the experiment’s
config.yaml
file, edit therestart
option to point to<new-restart-dir>
. -
Create symlinks: Each model will look for restart files which don’t have date-stamps at the end of their name. E.g. in
<control-directory>/ocean/field_table
, the ocean model will try to use:restart_file = csiro_bgc.res.nc
rather than
csiro_bgc.res.nc-06993112
. For each of the ocean restart files, this means we need to create a symlink to each file, omitting the datestamp from its name. A quick way to do this would be to navigate tonew-restart-dir/ocean
and run:$ for res_file in * > do > ln -s ${res_file} ${res_file%-*} > done
The same can be done for the coupler restarts.
For the ice restarts, symlinks only need to be created for
ice.restart_file
andmice.nc
.For the atmosphere, a symlink should be made to the copied restart file
PI-02.astart-07000101
, though this time should be namedrestart_dump.astart
. -
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
, setMODEL_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 thenamelists
file.My understanding is that
MODEL_BASIS_TIME
sets the atmosphere’s starting date for the new simulation. The impact ofANCIL_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 theANCIL_REFTIME
to match the newMODEL_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 filescice_in.nml
andinput_ice.nml
, which influence different parts of the simulation timing. The relevant variables ininput_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 theinit_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 toinit_date
andyear_init
, which should be left at0010101
and0001
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 setinidate
to the new starting date of07000101
just for record keeping.5.Each time
payu
runs a simulation, it places updated versions ofcice_in.nml
andinput_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 run003
. Meanwhileruntime
will be the number of seconds simulated during run003
. Likewise inrestart003/ice/input_ice.nml
,istep0
andnpt
will be the total number of timesteps simulated by before and during run003
respectively.When run
004
starts,payu
takes the information from therestart003/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, run004
. (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 ofinput_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 itsruntime0
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 thatruntime0 + runtime
equals the correct value.In
/g/data/vk83/experiments/inputs/access-esm1p5/pre-industrial/restart/ice
, you’ll also notice a copy ofcice_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 ofinput_ice.nml
, e.g. in<new-restart-dir>/cice_in.nml ------------------------------------------------------------ &setup_nml istep0=0, npt=0, dt=3600, /
istep0 = 0
timesteps doesn’t matchruntime0 = 22058265600
. Due to quirks withpayu
’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: thepayu setup
command will automatically fill in the paths in therestart.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.
Let me know if you have any questions about those steps, or if anything doesn’t work when trying them out.