mpas
The uw mode for configuring and running the MPAS forecast model. 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_run_directory comprises everything needed for a run, and a run runs the MPAS executable.
uw mpas --help
usage: uw mpas [-h] [--version] TASK ...
Execute mpas tasks
Optional arguments:
-h, --help
Show help and exit
--version
Show version info and exit
Positional arguments:
TASK
boundary_files
Boundary files
files_copied
Files copied for run
files_linked
Files linked for run
namelist_file
The namelist file
provisioned_run_directory
Run directory provisioned with all required content
run
A run
runscript
The runscript
streams_file
The streams file
validate
Validate the UW driver config
All tasks take the same arguments. For example:
uw mpas run --help
usage: uw mpas run --cycle CYCLE [-h] [--version] [--config-file PATH]
[--batch] [--dry-run] [--graph-file PATH]
[--key-path KEY[.KEY...]] [--quiet] [--verbose]
A run
Required arguments:
--cycle CYCLE
The cycle in ISO8601 format (e.g. 2024-05-23T18)
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 run 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 leading through the config to the driver's
configuration block
--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:
mpas:
boundary_conditions:
interval_hours: 6
offset: 0
path: /path/to/boundary/conditions/directory
execution:
batchargs:
cores: 32
walltime: "01:30:00"
executable: atmosphere_model
mpiargs:
- "--ntasks={{ mpas['execution']['batchargs']['cores'] }}"
mpicmd: srun
files_to_copy:
conus.graph.info.part.32: /path/to/conus.graph.info.part.32
conus.init.nc: /path/to/conus.init.nc
stream_list.atmosphere.diagnostics: "{{ user.mpas_app }}/MPAS-Model/stream_list.atmosphere.diagnostics"
stream_list.atmosphere.output: "{{ user.mpas_app }}/MPAS-Model/stream_list.atmosphere.output"
stream_list.atmosphere.surface: "{{ user.mpas_app }}/MPAS-Model/stream_list.atmosphere.surface"
files_to_link:
CAM_ABS_DATA.DBL: "{{ user.mpas_app }}/MPAS-Model/CAM_ABS_DATA.DBL"
CAM_AEROPT_DATA.DBL: "{{ user.mpas_app }}/MPAS-Model/CAM_AEROPT_DATA.DBL"
GENPARM.TBL: "{{ user.mpas_app }}/MPAS-Model/GENPARM.TBL"
LANDUSE.TBL: "{{ user.mpas_app }}/MPAS-Model/LANDUSE.TBL"
OZONE_DAT.TBL: "{{ user.mpas_app }}/MPAS-Model/OZONE_DAT.TBL"
OZONE_LAT.TBL: "{{ user.mpas_app }}/MPAS-Model/OZONE_LAT.TBL"
OZONE_PLEV.TBL: "{{ user.mpas_app }}/MPAS-Model/OZONE_PLEV.TBL"
RRTMG_LW_DATA: "{{ user.mpas_app }}/MPAS-Model/RRTMG_LW_DATA"
RRTMG_LW_DATA.DBL: "{{ user.mpas_app }}/MPAS-Model/RRTMG_LW_DATA.DBL"
RRTMG_SW_DATA: "{{ user.mpas_app }}/MPAS-Model/RRTMG_SW_DATA"
RRTMG_SW_DATA.DBL: "{{ user.mpas_app }}/MPAS-Model/RRTMG_SW_DATA.DBL"
SOILPARM.TBL: "{{ user.mpas_app }}/MPAS-Model/SOILPARM.TBL"
VEGPARM.TBL: "{{ user.mpas_app }}/MPAS-Model/VEGPARM.TBL"
length: 6
namelist:
base_file: "{{ user.mpas_app }}/MPAS-Model/namelist.atmosphere"
update_values:
decomposition:
config_block_decomp_file_prefix: conus.graph.info.part.
limited_area:
config_apply_lbcs: true
nhyd_model:
config_dt: 60
validate: true
run_dir: /path/to/run/directory
streams:
path: "{{ user.mpas_app }}/MPAS-Model/streams.atmosphere"
values:
input_filename: conus.init.nc
input_interval: "06:00:00"
output_interval: "06:00:00"
platform:
account: me
scheduler: slurm
user:
mpas_app: /path/to/mpas/installation
Its contents are described in depth in section mpas.
Run MPAS on an interactive node
$ uw mpas run --config-file config.yaml --cycle 2025-02-12T12
The driver creates a
runscript.mpasfile in the directory specified byrun_dir:in the config and runs it, executingatmosphere_model.Run
mpasvia a batch job$ uw mpas run --config-file config.yaml --cycle 2025-02-12T12 --batch
The driver creates a
runscript.mpasfile in the directory specified byrun_dir: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 undermpas:.Specifying the
--dry-runflag results in the driver logging messages about actions it would have taken, without actually taking any.$ uw mpas 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 anmpasrun directory provisioned with all the files, directories, symlinks, etc. required per the configuration file:$ uw mpas provisioned_run_directory --config-file config.yaml --cycle 2025-02-12T12 --batch