Usage¶
arpsEnKFtools is a work in progress. Some features may not be working and there are likely many bugs. It is helpful to first take a look at the directory structure:
arpsEnKFtools
├── arpsenkftools
├── docs
├── legacy
├── notebooks
├── plotting_scripts
├── prep_scripts
├── radremap_scripts
├── template
└── utility_scripts
For now, we will focus on just a few of these directories. The project structure is changing quickly and some of these directories may be renamed or removed altogether. Pay attention to this documentation.
The arpsenkftools/
subdirectory contains code for editing the FORTRAN namelist files
and generating batch scripts for the HPC system as well as several utility functions.
The prep_scripts/
directory contains several scripts to generate the needed input
data and configuration files, as well as to generate the main working directory for a
given ARPS-EnKF experiment:
prep_scripts
├── link_lookup_tables.py
├── link_nam.py
├── link_radremap.py
├── radarinfo.dat
├── run_arpsintrp.py
├── run_arpssfc.py
├── run_arpstrn.py
├── run_ext2arps.py
├── run_radremap.py
├── run_wrf2arps.py
└── setup_experiment_working_dir.py
Before getting into their function, we note that each of the run_<arps_exectuable>.py
,
as well as the link_<name>.py
and setup_experiment_working_dir.py
take one
command line argument each. This command line argument is the path to a python configuration
file for a given experiment, typically named master_config.py
. Several examples are
in the template/
subdirectory. This directory contains subdirectories with descriptive
names of a particular experiment that contain template input files and a master_config.py
script. The various driver scripts in the prep_scripts/
directory import the configuration
in master_config.py
for that experiment, and uses the template’s namelist input files for
the purpose of running one of the preparation programs. For example, the directory
template/3km153x153_051913_OK_NAM/
contains the template for a small 3-km domain centered
on central OK for the 19 May 2013 tornadic supercell case. the _NAM
in the name signifies
that it uses the NAM model forecast/analyses as the initial and boundary conditions. The
directory tree for this template looks like this:
3km153x153_051913_OK_NAM
├── 2013_0519.radflag
├── arps.input
├── arpsenkf.input
├── arpsenkfic.input
├── arpsintrp.input
├── arpssfc.input
├── arpstrn.input
├── blacklist.sfc
├── ext2arps.input
├── master_config.py
├── plotCRM_control_3km153x153_dBZ_w_zvort.py
├── plotCRM_control_3km153x153_pte_dBZ.py
├── radremap_88D.input
├── run_real_data_case.sh
└── wrf2arps.input
If you are familiar with the ARPS model ecosystem, you will recognize many of the
*.input
files as being FORTRAN namelist files that control various programs. At this
point it is a good idea to open up the master_config.py
file. This file sets various
parameters, including the paths to various input, output, and executable files.
There are several dictionaries encapsulating namelist input parameters that will be
copied into the template namelist input files to control the behavior of the different programs.
These include grid and map projection parameters, frequency of boundary conditions, number of
cores for MPI jobs, parameters controlling the behavior of the EnKF assimilation, and so on.
As a quick example, to run the program arpstrn
that generates the terrain file for the
ARPS domain, you would do the following on the command line, assuming you are starting in
the root directory of the repository:
$ cd prep_scripts
$ python run_arpstrn.py ../template/3km153x153_051913_OK_NAM/master_config.py
This will create a working directory, copy arpstrn.input
into it, automatically edit
it with the appropriate parameters as defined in master_config.py
and finally execute
arpstrn
. Output from the program will be placed in a directory that is also specified
in master_config.py
.
Similarly, one would also run ext2arps
to generate the initial and boundary conditions
as follows:
$ python run_ext2arps.py ../template/3km153x153_051913_OK_NAM/master_config.py
The use of a single master_config.py
as input for these scripts greatly simplifies
what otherwise would be a difficult and error-prone workflow by ensuring that each program
that is needed to orchestrate a full experiment is working with the same experiment structure.
This, among other things, obviates the need to manually edit several namelist input files and
manually having to keep track of the same parameters across them.
TODO: continue documentation to explain the other prep scripts and then on to the main experiment script. Watch this space!