At this time only a beta release is available for OpenIFS 48r1. The code is shared only with specific beta testers and it is not yet publicly available. Once OpenIFS 48r1 becomes generally available an announcement will be made. If you have any questions please contact openifs-support@ecmwf.int. |
Contents:
This page contains a guide for building and using OpenIFS 48r1 at model version 48R1.1.
We describe how to build the model and carry out a few basic tests, how to run an example forecast experiment, for which initial experiment data is made available, and how to visualise the model output by creating plots.
Worked Example: We explain the model installation and the process of running of a forecast experiment on the ECMWF Atos Sequana XH2000 HPC facility (hpc2020).
It is important to note that the installation process on hpc2020 will not directly translate to alternative systems. To address this we present details about a docker install in the last section of this guide. |
Create your local installation of OpenIFS 48R1.1 by cloning or branching from the git repository with the OpenIFS package.
git clone --single-branch --branch release ssh://git@git.ecmwf.int/oifs/openifs-48r1.1.git |
|
The OpenIFS model requires a small number of Linux environment variables to be set for both installation and runs. These are referred to as global environment variables.
The most important environment variable is OIFS_HOME
, which is required by all scripts used by the model.
OIFS_HOME
describes the location of the OpenIFS model installation and is general the path where the git repository was extracted. For example, if you clone the repository into your $HOME directory then you should set:
export OIFS_HOME=$HOME/openifs-48r1.1/ |
The other model environment variables are
OIFS_CYCLE
- describes the model cycle (e.g. 48r1) for which this configuration file can be used.OIFS_DATA_DIR
- describes the location of climatological input files that are required to run OpenIFS. These have been installed on the ECMWF hpc2020 in a central and accessible location under /perm/openifs/oifs_data
and the information is organised by model cycle. If you do not have access to the ECMWF hpc2020 file system, or if you wish to install the climatological input files in a local directory of your choice, then you can download the required data from the OpenIFS anonymous ftp server: https://myftp.ecmwf.int/files/public/openifs/ifsdata/48r1/ As a minimum you will require the packages Download and extract these files to your chosen location, the filepath of which should then be set to variable |
The required global environment variables, described above, are defined in the Platform configuration file, which needs to be modified for your local OpenIFS installation.
is $OIFS_HOME/scripts
.$OIFS_HOME/oifs-config.edit_me.sh
. OIFS_HOME
with your installation's path.Once edited the platform configuration file is loaded using the following command:
source /path/to/file/location/oifs-config.edit_me.sh # using our installation example: # source $HOME/openifs-48r1.1/oifs-config.edit_me.sh |
We recommend to include this command in your Linux shell startup configuration (e.g. in .bashrc).
The above command should also be include in any batch job scripts that are intended to run OpenIFS (described in Section 3)
Previous versions of the OpenIFS model also used a platform configuration file. Since OpenIFS 48r1 the number of variables set inside this file has been reduced to a bare minimum. At present, only the variables |
In the next step the model binary executable (and other helper programs) will be built.
In contrast to earlier model versions, the building of OpenIFS 48r1 is no longer based on the FCM configuration manager, but uses from now on the ecbuild ECMWF build system that is also used for the ECMWF IFS model, and which uses CMake at its core.
OpenIFS 48r1 is further distributed with a software bundle which automatically installs many required software packages during the build process, such as for instance ecbuild, ecCodes, metkit, etc. Hence, a separate installation of these libraries is no longer required as they have now become part of the OpenIFS distribution.
The $OIFS_HOME/scripts/openifs-test.sh
script can be used to build the model and run initial tests.
openifs-test.sh -h
-e
defines the compiler environment (intel or gnu). The default is intel. Run the build process and the tests using the following command:
cd $OIFS_HOME ./scripts/openifs-test.sh -cbt |
where
-c
cleans up the directory, i.e, remove any existing build, source, ecbundle directories-b
builds $OIFS_HOME/build/bin
.$OIFS_HOME/build/bin
.-t
will run the ifs-test t21 tests, which comprise ofBy default, on hpc2020, OpenIFS will be built using the Intel compiler (Intel 2021.2) . OpenIFS will also build with GNU, if this is required then the user should execute the following command
This will load the compiler environment for GNU GCC 11.2. |
If everything has worked correctly then all tests should have passed and the script returns the following
[INFO]: Good news - ctest has passed openifs is ready for experiment and SCM testing ---------------------------------------------------------------- END ifstest on OpenIFS build |
An example forecast experiment has been prepared for OpenIFS 48r1. The experiment ID is ab2a.
Extract the example forecast experiment ab2a.tgz
into a folder in a location suitable for model experiments. This folder will be your experiment directory.
Example:
On the ECMWF hpc2020 our model installation $OIFS_HOME will be in $HOME/openifs-48r1.1
and for the experiment we extract the ab2a package to $PERM. The experiment directory shall therefore be $PERM/ab2a/2016092500
.
cp /perm/openifs/oifs_data/48r1/example/ab2a.tgz $PERM cd $PERM tar -xvzf ab2a.tgz |
The experiment directory would ideally be in a different location from the earlier model installation path $OIFS_HOME. In general, you will need more disk space for experiments, depending on the model grid resolution, the duration of the forecast experiment and the output fequency of model results. |
Ensure the namelist files for the atmospheric model (fort.4) and for the wave model (wam_namelist) are found in the experiment directory. If they are not already there then you can find them in a subfolder (called ecmwf
) inside the experiment directory.
cd $PERM/ab2a/2016092500 cp ./ecmwf/fort.4 . cp ./ecmwf/wam_namelist . |
You will need to copy three further scripts from the OpenIFS package into your experiment directory:
oifs-run:
this is a generic run script which executes the binary model program file.exp-config.h:
this is the experiment configuration file that determines settings for your experiment. It will be read by oifs-run. run
.ecmwf-hpc2020.job:
this is the wrapper script to submit non-interactive jobs on hpc2020Copy these files from $OIFS_HOME/scripts
into your experiment directory.
cd $PERM/ab2a/2016092500 cp $OIFS_HOME/scripts/oifs-run . cp $OIFS_HOME/scripts/exp-config.h . cp $OIFS_HOME/scripts/run.ecmwf-hpc2020.job . |
Namelist:
CSTOP='h144'
.Experiment configuration file:
You should always set up an exp-config.h for each experiment. If no exp-config.h file is found in the experiment directory, and if also no command line parameters are provided when calling oifs-run, then oifs-run will revert to its own default values which are not appropriate. In any case you should either edit the exp-config.h file appropriately or provide the correct command line parameters. |
The exp-config.h file contains the following settings:
#--- required variables for this experiment: OIFS_EXPID="ab7x" # your experiment ID OIFS_RES="95" # the spectral grid resolution OIFS_GRIDTYPE="l" # the grid type, either 'l' for linear reduced grid, or 'o' for the cubic octahedral grid OIFS_NPROC=8 # the number of MPI tasks OIFS_NTHREAD=4 # the number of OpenMP threads OIFS_PPROC=true # enable postprocessing of model output after the model run OUTPUT_ROOT=$(pwd) # folder where pproc output is created (only used if OIFS_PPROC=true). In this case an output folder is created in the experiment directory. LFORCE=true # overwrite existing symbolic links in the experiment directory LAUNCH="" # the platform specific run command for the MPI environment (e.g. "mpirun", "srun", etc). #--- optional variables that can be set for this experiment: #OIFS_NAMELIST='my-fort.4' # custom atmospheric model namelist file #OIFS_EXEC="<cutome-path>/ifsMASTER.DP" # model exec to be used for this experiment |
|
After all optional edits to the namelists (fort.4) and to the experiment configuration file (exp-config.h) have been completed the model run can be started.
Depending on the available hardware experiments can either be run interactively or as a batch job.
This method is the preferred way to run OpenIFS, as it is more efficient and it allows more flexibility in using the available hardware resources.
oifs-run
.run.ecmwf-hpc2020.job
in $OIFS_HOME/scripts
, which is suitable for the ECMWF hpc2020 Atos HPC. This uses the SLURM batch job scheduler.run.ecmwf-hpc2020.job
needs to be edited with the following essential and optional changessrun.ecmwf-hpc2020.job
sets the PLATFORM_CFG
variable as follows# set OpenIFS platform environment: PLATFORM_CFG="/path/to/your/config/oifs-config.edit_me.sh" |
"/path/to/your/config/oifs-config.edit_me.sh"
to the actual path for the oifs-config.edit_me.sh,
e.g., "$HOME/openifs-48r1.1/oifs-config.edit_me.sh"
run.ecmwf-hpc2020.job
are 8 nodes on the ECMWF hpc2020 machine, with a total of 256 MPI tasks and 4 OpenMP threads. This can be changed as required.LAUNCH
command for batch job submission is set to "srun
" without any further options, because all required parallel environment settings are provided through the SLURM script headers.Once you have made the appropriate changes to run.ecmwf-hpc2020.job
, you can submit it and, hence, run the experiment with the following commands
# run as batch job: cd $PERM/ab2a/2016092500 sbatch ./run.ecmwf-hpc2020.job |
The job wrapper script will read the exp-config.h file and adopt the selected values. The exceptions are LAUNCH, which is set to "srun" for batch jobs, and OIFS_NPROC & OIFS_NTHREAD for which values from the batch job headers are used. The job wrapper script modifies the exp-config.h file accordingly prior to calling the oifs-run script. |
On the ECMWF hpc2020, running the model script interactively should be fine for lower grid resolutions up to T255L91.
The oifs-run script will in this case use its default launch parameters: srun -c${OIFS_NPROC} --mem=64GB --time=60
which will work fine with OIFS_NPROC=8 for experiment ab2a.
# run interactively: cd $PERM/ab2a/2016092500 ./oifs-run |
If in the exp-config.h file the OIFS_PPROC
variable has been set to true
(or if the --pproc command line parameter was used) then the model output in the experiment directory is further processed after completing the model run.
output_YYYMMDD_HHMMSS
, with YYYYMMDD being the current date and HHMMSS the current time. OUTPUT_ROOT
in exp-config.h determines where this ouput folder will be created. The default location is inside the experiment directory, but when assigning another path to OUTPUT_ROOT
this could be created elsewhere.The postprocessing groups all model output fields and diagnostics into individual GRIB files with ascending forecast time step. Also, a copy of the atmospheric model namelist file fort.4, as well as the ifs.stat and NODE.01_001 log files are moved into the output folder.
This postprocessing is required if the Metview Python script is to be used later to visualise the model output.
Here we describe in a brief summary how a small number of plots from the model results can be generated. This permits a first-order sanity check whether the model results look sensible.
For this we use the Metview graphics package developed at ECMWF.
This requires the use of Jupyter Notebooks using a conda environment with Metview and Metview-Python libraries. On the ECMWF hpc2020 a Jupyterlab session can be started using the command |
Step 1: Copy the Metview processing code to your $PERM location:
cp /perm/openifs/oifs_data/48r1/example/mv.tgz $PERM cd $PERM tar -xvzf mv.tgz cd mv |
In the following steps we will process the OpenIFS model output into a dataset format that can be easily interpreted by Metview using a simplified plotting procedure.
Step 2: Edit the file oifs_to_mv.sh
and change the path variable:
Step 3: Execute the script by running the command:
cd $PERM/mv ./oifs_to_mv.sh |
$PERM/mv/data/ab2a
which can be visualised with by running the enclosed Jupyter Notebook single.ipynb
Step 4: Now proceed with the following steps to visualise the processed data:
ssh hpc-login
ecinteractive -j
$PERM/mv/ipynb/
and select Notebook single.ipynb
ecinteractive -p hpc -k
and confirm cancellation of the job; if this is not done the interactive job will timeout after 12 hours.This section provides further details about software requirements for OpenIFS.
This is not needed for the ECMWF hpc2020.