mpassit
Note
The uwtools drivers are idempotent, meaning that actions they successfully complete during one invocation are not repeated in subsequent invocations. For example, an asset like a configuration file will not be recreated when the driver is run again, even if its UW YAML configuration changes. To force recreation, remove the asset(s) in question – up to and including the entire provisioned run directory – then re-run the driver, which will recreate any missing assets based on the current configuration.
The uw mode for configuring and running the MPASSIT postprocessing tool. Each listed TASK may be called to generate the runtime asset(s) it is responsible for, and will call any task it depends on as needed. A provisioned_rundir comprises everything needed for a run, and a run runs the MPASSIT executable.
uw mpassit --help
usage: uw mpassit [-h] [--version] [--show-schema] TASK ...
Execute mpassit tasks
Optional arguments:
-h, --help
Show help and exit
--version
Show version info and exit
--show-schema
Show driver schema and exit
Positional arguments:
TASK
files_copied
Files copied for run
files_hardlinked
Files hardlinked for run
files_linked
Files linked for run
namelist_file
The namelist file
provisioned_rundir
Run directory provisioned with all required content
run
A run
runscript
The runscript
show_output
Show the output to be created by this component
validate
Validate the UW driver config
All tasks take the same arguments. For example:
uw mpassit run --help
usage: uw mpassit run --cycle CYCLE --leadtime LEADTIME [-h] [--version]
[--config-file PATH] [--batch] [--dry-run]
[--graph-file PATH] [--key-path KEY[.KEY...]]
[--schema-file PATH] [--quiet] [--verbose]
A run
Required arguments:
--cycle CYCLE
The cycle in ISO8601 format (e.g. yyyy-mm-ddThh)
--leadtime LEADTIME
The leadtime as hours[:minutes[:seconds]]
Optional arguments:
-h, --help
Show help and exit
--version
Show version info and exit
--config-file PATH, -c PATH
Path to UW YAML config file (default: read from stdin)
--batch
Submit job to batch scheduler
--dry-run
Only log info, making no changes
--graph-file PATH
Path to Graphviz DOT output [experimental]
--key-path KEY[.KEY...]
Dot-separated path of keys to driver config block
--schema-file PATH
Path to schema file to use for validation
--quiet, -q
Print no logging messages
--verbose, -v
Print all logging messages
Examples
The examples use a configuration file named config.yaml with contents similar to:
mpassit:
execution:
batchargs:
export: NONE
nodes: 1
stdout: /path/to/file
walltime: 00:02:00
envcmds:
- module use /some/path/to/modules
- module load some_module
executable: /path/to/mpassit
mpiargs:
- --export=ALL
- --ntasks $SLURM_CPUS_ON_NODE
mpicmd: srun
files_to_copy:
x1.999.init.nc: /path/to/some.init.nc
x1.999.graph.info.part.192: /path/to/x1.999.graph.info.part.192
namelist:
update_values:
config:
grid_file_input_grid: x1.999.init.nc
hist_file_input_grid: /path/to/hist.nc
diag_file_input_grid: /path/to/diag.nc
block_decomp_file: x1.999.graph.info.part.192
is_regional: true
output_file: MPAS-A_out.{{ (cycle + leadtime).strftime('%Y-%m-%d_%H:%M:%S') }}.nc
interp_diag: true
interp_hist: true
wrf_mod_vars: true
esmf_log: false
target_grid_type: lambert
nx: 180
ny: 106
dx: 30000.0
dy: 30000.0
ref_lat: 38.5
ref_lon: -97.5
truelat1: 38.5
truelat2: 38.5
stand_lon: -97.5
validate: true
rundir: /path/to/run/dir
platform:
account: me
scheduler: slurm
Its contents are described in depth in section mpassit.
Run MPASSIT on an interactive node
$ uw mpassit run --config-file config.yaml --cycle 2025-02-12T12
The driver creates a
runscript.mpassitfile in the directory specified byrundir:in the config and runs it, executingmpassit.Run
mpassitvia a batch job$ uw mpassit run --config-file config.yaml --cycle 2025-02-12T12 --batch
The driver creates a
runscript.mpassitfile in the directory specified byrundir:in the config and submits it to the batch system. Running with--batchrequires a correctly configuredplatform:block inconfig.yaml, as well as appropriate settings in theexecution:block undermpassit:.Specifying the
--dry-runflag results in the driver logging messages about actions it would have taken, without actually taking any.$ uw mpassit run --config-file config.yaml --cycle 2025-02-12T12 --batch --dry-run
The
--key-pathoption can be used to navigate from the top of the config to the driver’s configuration block. For example, specifying--key-path foo.barwith configfoo: bar: driver: # driver config block
is equivalent to using config
driver: # driver config block
without specifying
--key-path.
The
runtask depends on the other available tasks and executes them as prerequisites. It is possible to execute any task directly, which entails execution of any of its dependencies. For example, to create anmpassitrun directory provisioned with all the files, directories, symlinks, etc. required per the configuration file:$ uw mpassit provisioned_rundir --config-file config.yaml --cycle 2025-02-12T12 --batch
Specifying the
--show-schemaflag, with no other options, prints the driver’s schema:uw mpassit --show-schema >schema head -n20 schema{ "properties": { "mpassit": { "additionalProperties": false, "properties": { "execution": { "additionalProperties": false, "properties": { "batchargs": { "additionalProperties": true, "properties": { "cores": { "type": "integer" }, "debug": { "type": "boolean" }, "exclusive": { "type": "boolean" },Use the
--schema-fileoption to specify a custom JSON Schema file with which to validate the driver config. A custom schema could range in complexity from the simplest, most permissive schema,{}, to one based on the internal schema shown by--show-schema.