CMIP7 Cost Plan and Schedule Tracker

Simulation tracker

  • Status and Progress: a run is In progress once its files reach NIRD, and Completed once its issue has the completed label.
  • Issues: the runs' GitHub issues in NorESMhub/noresm_cmip7_simulations, one per case; hover an issue for its case name, click it to open it. An issue shows up here once its title is the case name and its labels name the experiment and the variant (see Prepare).
  • Steps: the columns follow the headings under Workflow below. A step shows ✓ once the case's issue has the step's label, e.g. esgf, and the progress script has run since. A run with several members needs the label on an issue of each; until then the column shows how many have it, e.g. 1/3.
Workflow: what every run goes through

The tracker has a column for each step below from QA on, under the same headings, as well as the run's Status and Progress. The progress script fills them all in: Status, Progress, cmip7prep and cmor4cmip7 from the files on NIRD, and the other steps from a label on the case's GitHub issue, named next to each step. Under each step, To decide lists what the group still has to agree on.

Prepare

  • Determine the case name

    A case is named compset.resolution.version.issue.date, for example n1850Gaxg.LM.nor30b22.502.20260801:

    • compset: see column M of the NorESM3 CMIP7 experiments spreadsheet;
    • resolution: LM for ne16pg3_tn14, MM for ne30pg3_tn14;
    • version: nor30 for noresm3_0_, followed by the beta, e.g. b22 for beta22;
    • issue: the number the case's GitHub issue will have;
    • date: the date the case is made, as YYYYMMDD.
    Make the experiment's GitHub issue

    Issues go in NorESMhub/noresm_cmip7_simulations, one per case. The tracker is filled in from them, so:

    • title: the case name and nothing else;
    • experiment label: the CMIP7 experiment, e.g. esm-hist, spelt as in the tracker;
    • variant label: the ensemble member, e.g. r1i1p1f1;
    • assignee: whoever runs it, shown as the run's owner;
    • completed: add this label when the run has finished;
    • test: add this label to a case that is not a CMIP7 run, to leave it out;
    • step labels: run-qa, cmip7prep-qa, cmor4cmip7-qa and esgf, each added when its step is done;
    • description: a heading for each of the following, with the link, issue or directory on the line after it. Continues is only for a case that continues another, and each output root is added as its tool starts on the case:
    ### Run script
    https://github.com/NorESMhub/noresm_cmip7_simulations/blob/CMIP7_Runscripts/scripts/piControl/011.n1850GHGGaxg.LM.b28.20261102.sh
    
    ### Continues
    #2
    
    ### cmip7prep output root
    /nird/datalake/NS9560K/noresm3/cases/n1850GHGGaxg.LM.nor30b28.011.20261102.cmor
    
    ### cmor4cmip7 output root
    /nird/datapeak/NS9034K/CMIP7

    The progress script reads the two output roots for the cmip7prep and cmor4cmip7 columns; Run script and Continues are for readers.

    Once the progress script has read an issue, the run shows it in the Issues column. The experiment label and the case name's resolution pick the run; the variant label picks the member.

    • continuing a simulation in a new case: give the new issue the same experiment and variant labels, and the earlier issue under the heading ### Continues in its description, e.g. #2. The tracker reads the two as one simulation and takes its progress from the later model date, as with #2 and #11;
    • another member of the ensemble: give it its own variant, e.g. r2i1p1f1. The run's years done are the mean over its members.
    Archive the run script

    Push the case's run script straight to its experiment's directory under scripts/ on the CMIP7_Runscripts branch; this needs write access to the repository.

    • directory: scripts/<experiment>/, named after the issue's experiment label, e.g. scripts/piControl/. Every experiment label has one; a new label needs its own directory, with an empty .gitkeep file so that git keeps it while it is empty;
    • name: issue.compset.resolution.beta.date.sh, each part copied from the case name, e.g. 011.n1850GHGGaxg.LM.b28.20261102.sh for n1850GHGGaxg.LM.nor30b28.011.20261102;
    • push: in a clone of the repository, git switch CMIP7_Runscripts and git pull, copy the script into its experiment's directory under its name, then git add, git commit and git push. Without a clone, open the experiment's directory under scripts/ on GitHub, use Add file → Upload files and choose Commit directly to the CMIP7_Runscripts branch;
    • commit message: Run script for #11, with the case's issue number. GitHub then shows the commit on the issue. Don't write Closes #11 or Fixes #11: either closes the issue;
    • issue: add the script's link to the issue's description under the heading ### Run script, e.g. https://github.com/NorESMhub/noresm_cmip7_simulations/blob/CMIP7_Runscripts/scripts/piControl/011.n1850GHGGaxg.LM.b28.20261102.sh.

QA

  • The QA column depends on the label run-qa: it shows ✓ once the case's issue has it, after the next run of the progress script. Add the label when the run's QA is done.

    QA the run label: run-qa

    Create and build the case. On Olivia and Betzy, cases go in /cluster/projects/nn9560k/$USER, each in a directory named after the case: /cluster/projects/nn9560k/$USER/<case>.

    Go through the QA checklist, then add the label run-qa to the issue.

Run

  • The progress script reads the run's Status and Progress on NIRD.

    How the run is done and tracked

    Set the run's priority and coordinate it with the other runs. Copy the output to NIRD by hand with rsync while the run is going. The progress script reads the years done from the atmosphere history files copied there, and the tracker shows them in the Progress column and sets the Status to In progress. To set it to Completed, add the completed label to its issue.

    To decide:
    • how often to write restarts (every 5 or 10 years?);
    • how to log what was run (code version and settings);
    • whether the case directory is archived on NIRD too;
    • which files are removed (for example intermediate restart files).

CMORize

The CMORization steps label: cmip7prep-qalabel: cmor4cmip7-qa
  • Make the CMORization issue

    Once the simulation has finished, open an issue in NorESMhub/CMIP7_CMOR-Publish from its template, which is like the CMIP6 one, and label it cmorization. The repository's other labels are publication, archive, cmor_bug, publication_bug and retract.

    As each tool starts, add its output root to the description of the case's issue in noresm_cmip7_simulations, under a heading of its own:

    ### cmip7prep output root
    /nird/datalake/NS9560K/noresm3/cases/<case>.cmor
    
    ### cmor4cmip7 output root
    /nird/datapeak/NS9034K/CMIP7

    The progress script reads each tool's progress there, and the tracker shows the roots when you hover the cmip7prep or cmor4cmip7 column.

    To decide: how urgency is shown.
  • CMORize the atmosphere, land, sea ice and land ice using cmip7-prep

    The CMORized output goes in /nird/datalake/NS9560K/noresm3/cases/$CASE.cmor for now, and will later go in /nird/datapeak/NS9034K/CMIP7 with the cmor4cmip7 output. The progress script reads the completed_steps_*.json files cmip7-prep writes there, and the tracker shows the years CMORized so far, e.g. 1–50. Without a cmip7prep output root in the issue, the script looks in the case's .cmor directory.

  • Validate the cmip7-prep output label: cmip7prep-qa

    The QA column after cmip7prep depends on the label cmip7prep-qa: it shows ✓ once the case's issue has it, after the next run of the progress script. Add the label when the cmip7-prep output has been validated.

  • CMORize the ocean and ocean biogeochemistry using cmor4cmip7

    The CMORized output goes in /nird/datapeak/NS9034K/CMIP7. The first 100 years of piControl's ocean are being CMORized there now. The progress script reads the time ranges in the names of the case's files under the issue's cmor4cmip7 output root, e.g. _000101-001012.nc, and the tracker shows the years every variable has, e.g. 1–10. The case's files are the ones whose names have its experiment and variant, e.g. _piControl_r1i1p1f1_, so the root can hold other runs too.

  • QA the cmor4cmip7 output label: cmor4cmip7-qa

    The QA column after cmor4cmip7 depends on the label cmor4cmip7-qa: it shows ✓ once the case's issue has it, after the next run of the progress script. Add the label when the cmor4cmip7 output has been QA'd.

cmip7-prep and cmor4cmip7 lay out their output differently. That doesn't matter for publication: esg-prep links both into the structure ESGF needs. The CMORization and publication workflow, and the esg-prep command, will be added here as they are settled.

Publish

  • Publish the data on ESGF label: esgf

    The ESGF column depends on the label esgf: it shows ✓ once the case's issue has it, after the next run of the progress script. Add the label when the data is published.

    TODO: what publishing involves.