upp

Structured YAML to run the UPP post-processor is validated by JSON Schema and requires the upp: block, described below. If UPP is to be run via a batch system, the platform: block, described here, is also required.

  • This driver receives a cycle argument, which it makes available as a Python datetime object to Jinja2 when realizing its input config. This supports specification of cycle-specific values. For example, the key-value pair

    gfs.t{{ cycle.strftime('%H') }}z.atmanl.nc: /some/path/{{ cycle.strftime('%Y%m%d%H') }}/gfs.t{{ cycle.strftime('%H') }}z.atmanl.nc
    

    would be rendered as

    gfs.t18z.atmanl.nc: /some/path/2024021218/gfs.t18z.atmanl.nc
    

    for cycle 2024-02-12T18.

  • This driver receives a leadtime argument, which it makes available as a Python timedelta object to Jinja2 when realizing its input config. This supports specification of leadtime-specific values. For example, the key-value pairs

    datestr: "{{ (cycle + leadtime).strftime('%Y-%m-%d_%H:%M:%S') }}"
    suffix: f{{ '%03d' % (leadtime.total_seconds() / 3600) }}
    

    would be rendered as

    datestr: 2024-05-09_06:00:00
    suffix: f018
    

    for cycle 2024-05-08T12 and leadtime 18.

Here is a prototype UW YAML upp: block, explained in detail below:

upp:
  execution:
    batchargs:
      export: NONE
      nodes: 1
      walltime: "00:05:00"
    envcmds:
      - module use /path/to/modulefiles
      - module load runtime-module
      - source /etc/profile.d/slurm.sh
    executable: /path/to/upp.x
    mpiargs:
      - "--ntasks $SLURM_CPUS_ON_NODE"
    mpicmd: srun
  files_to_copy:
    postxconfig-NT.txt: /path/to/postxconfig-NT.txt
  files_to_link:
    eta_micro_lookup.dat: /path/to/nam_micro_lookup.dat
    params_grib2_tbl_new: /path/to/params_grib2_tbl_new
  namelist:
    base_file: /path/to/base.nml
    update_values:
      model_inputs:
        datestr: "{{ (cycle + leadtime).strftime('%Y-%m-%d_%H:%M:%S') }}"
        filename: /path/to/dynf{{ '%03d' % (leadtime.total_seconds() / 3600) }}.nc
        filenameflux: /path/to/phyf{{ '%03d' % (leadtime.total_seconds() / 3600) }}.nc
        grib: grib2
        ioform: netcdf
        modelname: FV3R
      nampgb:
        kpo: 3
        numx: 1
        po:
          - 1000
          - 100
          - 1
    validate: true
  rundir: /path/to/run/dir
platform:
  account: me
  scheduler: slurm

UW YAML for the upp: Block

execution:

See this page for details.

files_to_copy:

See this page for details.

namelist:

Supports base_file: and update_values: blocks (see Updating Values for details).

The following namelists and variables can be customized:

Namelist

Variables

model_inputs

datestr, filename, filenameflat, filenameflux, grib, ioform, modelname

nampgb

aqf_on, d2d_chem, d3d_on, filenameaer, gccpp_on, gocart_on, gtg_on, hyb_sigp, kpo, kpv, kth, method_blsn, nasa_on, numx, po, popascal, pv, rdaod, slrutah_on, th, vtimeunits, write_ifi_debug_files

Read more on the UPP namelists, including variable meanings and appropriate values, here.

Before the namelist file is written, its proposed content will be validated against the appropriate schema. This can be suppressed by setting validate: false in the UW YAML configuration block for the namelist.

rundir:

The path to the run directory.