enkf

Structured YAML to run EnKF is validated by JSON Schema and requires the enkf: block, described below. If enkf 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.

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

enkf:
  execution:
    batchargs:
      walltime: "00:50:00"
      cores: 120
      exclusive: true
    envcmds:
      - module use /some/path/to/modulefiles
      - module load some_module
      - ulimit -s unlimited
    executable: /path/to/enkf.x
    mpicmd: srun
    stacksize: 300M
    threads: 1
  background_files:
    ensemble_size: 80
    files:
      fv3sar_tile1_{{ '%03d' % member }}_dynvars: "/path/to/previous/fv3_{{ '%03d' % member }}/RESTART/fv_core.res.tile1.nc"
      fv3sar_tile1_{{ '%03d' % member }}_tracer: "/path/to/previous/fv3_{{ '%03d' % member }}/RESTART/fv_tracer.res.tile1.nc"
      fv3sar_tile1_{{ '%03d' % member }}_sfcdata: "/path/to/previous/fv3_{{ '%03d' % member }}/RESTART/sfc_data.nc"
      fv3sar_tile1_{{ '%03d' % member }}_phyvar: "/path/to/previous/fv3_{{ '%03d' % member }}/RESTART/phy_data.nc"
  files_to_copy:
    anavinfo: "{{ platform.gsi_fixdir }}/anavinfo.rrfs_conv_dbz"
    satinfo: "{{ platform.gsi_fixdir }}/global_satinfo.txt"
    convinfo: "{{ platform.gsi_fixdir }}/convinfo.rrfs"
    ozinfo: "{{ platform.gsi_fixdir }}/global_ozinfo.txt"
  files_to_link:
    fv3_coupler.res: "{{ platform.gsi_fixdir }}/RRFS_CONUS_13km/fv3_coupler.res"
    fv3_akbk: "{{ platform.gsi_fixdir }}/RRFS_CONUS_13km/fv3_akbk"
    fv3_grid_spec: "{{ platform.gsi_fixdir }}/RRFS_CONUS_13km/fv3_grid_spec"
    <diagfiles>: !glob "{{ observer.rundir }}/diag*"
  namelist:
    base_file: /path/to/a/run-ready/enkf.nml
  rundir: /path/to/run/dir
platform: 
  gsi_fixdir: /path/to/gsi/fix/files
  scheduler: slurm
  account: wrfruc

UW YAML for the enkf: Block

background_files:

ensemble_size:

The integer size of the expected ensemble.

files:

A File Block describing the background ensemble files. The member variable will be made available to Jinja2 expressions used in this 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).

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.