OptClim‐UKESM: Overview - optclim/ModelOptimisation GitHub Wiki

Overview

This page presumes familiarity with OptClim concepts and UKESM. (Tutorial from NCAS) It describes how OptClim2 was linked to an exemplar UKESM model.

UKESM climate models are defined by and run using Rose/Cylc suites and are served from PUMA2.

OptClim requires that a "base model" suite be cloned, modified then run.

In the case of UKESM this is as follows:

  • Cloning and running of a suite has to be done on PUMA2, using Rose commands
  • The Rose commands are invoked from ARCHER2 by ssh onto puma2.

Puma2 is used as a server to cause a model to run.

Parameter values have to be modified. These are held in config files of each cloned model, and are edited on Archer2 by a "prerun" task inserted in the model's Rose suite. This is one of 3 tasks that are added to the Rose suite of each model that is run. The set are:

  1. optclim_preuse: previously built binaries are copied for each model instance to avoid rebuild of each instance.
  2. optclim_prerun: amends the parameters held in the Rose suite's config files
  3. optclim_postrun: when the model has run to completion this executes - its effect is to release a held job that calculates simulated observables.

SLURM is used by OptClim as follows:

  • via Rose/Cylc to cause the models to run
  • For each model being run, as in all current OptClim2A cases, OptClim sets up a corresponding (usually serial) batch job - this generates the simulated observables after the run has completed, and is part of the job synchronisation leading to the next run of the optimser. There is an array of such jobs, one for each instance of the model, as defined and set up by OptClim. The base suite includes a post-run task that releases this serial job when the model itself has completed.
  • On completion of the array of post-run jobs, the optimiser is run once more to generate the next set of runs.

The Python runAlgorithm.py initiates each set of runs, after assessing the simulated observations of already completed runs.

See demo example