# Saharan dust transport

--- 

## Introduction

This case study examines a major Saharan dust outbreak that crossed the tropical Atlantic and affected Barbados during August 2023. The event formed part of a strong Saharan Air Layer (SAL) episode and was investigated in detail by Rushley et al. (2026), who analysed its atmospheric impact over Barbados using observations, reanalyses and numerical modelling. The study identified a pronounced dust intrusion during 14–16 August 2023, associated with elevated aerosol optical depth (AOD), a deep Saharan Air Layer extending several kilometres above the surface, and substantial changes in temperature, humidity and wind profiles.

Here, the event is reproduced using OpenIFS 48r1 with the CAMS aerosol and atmospheric composition capability. A set of OpenIFS experiments is compared against CAMS operational analyses, which provide a useful reference representation of the evolving dust plume. The objective is to evaluate how well OpenIFS reproduces the timing, transport and magnitude of the trans-Atlantic dust outbreak.

The ECMWF OpenIFS Confluence web page for this case study is here: https://confluence.ecmwf.int/x/hrFjKg  

## Literature

The table below gives examples of published literature related to this event.

| Reference | Description |
|---|---|
| Rushley, S. S., et al. (2026). Examining the Influence of the Saharan Air Layer on the Environment over Barbados during the August 2023 MAGPIE Field Campaign. *Monthly Weather Review*, 154(7), 1491–1509. https://doi.org/10.1175/MWR-D-26-0004.1 | Primary reference study describing the August 2023 Saharan Air Layer and dust outbreak over Barbados. |
| Shrestha, S., et al. (2026). Transported African Dust in the Lower Marine Atmospheric Boundary Layer is Internally Mixed with Sea Salt Contributing to Increased Hygroscopicity and a Lower Lidar Depolarization Ratio. *Atmospheric Chemistry and Physics*, 26, 983–999. https://doi.org/10.5194/acp-26-983-2026 | Observational study of the same August 2023 Barbados dust event, focusing on aerosol optical and microphysical properties. |
| Reid, J. S., et al. (2026). Delaminating the Marine Atmospheric Boundary and Saharan Air Layers: Observations and Modeling by MAGPIE to Understand Marine Boundary and Lower Free Troposphere Layer Inhomogeneity over the Northwest Tropical Atlantic. *Bulletin of the American Meteorological Society*. https://doi.org/10.1175/BAMS-D-25-0224.1 | MAGPIE campaign overview providing observational and modelling context for the August 2023 Barbados case. |

## OpenIFS Experiments

- A description of the **scientific motivation** and the proposed **methodology** for this worked example can be found here on the ECMWF OpenIFS Confluence space: https://confluence.ecmwf.int/x/hrFjKg. The step-by-step description in the next section focuses on the individual technical steps to carry out the experiments. 

- We provide **experiment data packs** that allow the simulation of a time period within the described event by conducting OpenIFS forecast (hindcast) experiments with interactive atmospheric composition. 

- The pack includes the global initial experiment data and boundary conditions for each OpenIFS experiment, CAMS analysis data, and relaxation files for nudged runs.

- The OpenIFS experiment use the [N80 horizontal model grid](https://confluence.ecmwf.int/spaces/OIFS/pages/431064374/1+Gaussian+grids) (T159) which has approximately 125km / 1.125 degree grid spacing, on [137 vertical model levels](https://confluence.ecmwf.int/spaces/OIFS/pages/431064381/4+Vertical+Resolution+and+Configurations). 

- The case study includes both free-running model experiments, and one experiment with synoptic meteorology constrained by nudging towards six-hourly ECMWF ERA5 reanalyses.

- We provide plotting scripts using the [ECMWF earthkit](https://earthkit.ecmwf.int/) Python package to generate plots from the OpenIFS model outputs. 

---

### Step-by-step: How to run the case study experiment

#### Requirements

- You have the **OpenIFS model installed** on your system. See [this page](https://github.com/ecmwf-ifs/openifs/blob/main/README.md#installing-and-building-openifs) for a description of this process. It is essential that the model build process has completed and that the [ifs-test experiments](https://github.com/ecmwf-ifs/openifs/blob/main/README.md#test-openifs-build) have all succeeded. This case study experiment will not run successfully if this requirement has not been met.

- You need to **install the static data** for the correct model grid resolution in your OIFS_DATA_DIR location path. This process is [described on this page](https://github.com/ecmwf-ifs/openifs/blob/main/README.md#install-the-static-input-data-files-for-openifs). For this case study you need the data for the N80 model grid, which is in file `48r1_climate.v020_159.tar.gz`. 

- When running this case study you require a minimum of [add number] GB of free disk space in the experiment directory.

- To produce **plots from the model output** with the scripts provided in the case study you will need the [earthkit](https://earthkit.ecmwf.int/) Python packages. If a global installation is not available on your system then you can set up a local virtual Python environment. We describe this process at a later point.  

- This document refers to environment variables OIFS_HOME, OIFS_EXPT, OIFS_DATA_DIR, OIFS_RUN_SCRIPT and similar. These are defined in the oifs-config.edit_me.sh configuration file located in the top-level directory of the OpenIFS installation.

#### Setting up the case study experiment

* First **load the OpenIFS environment** by sourcing `oifs-config.edit_me.sh` in your local OpenIFS installation. This sets the variables that are used in the following instructions. 

* **Download the OpenIFS experiments** for this case study from ECMWF and extract the tar archive into your OIFS_EXPT location:
  
  ```
  # change to the top-level directory for OpenIFS experiments:
  cd $OIFS_EXPT

  # download the case study experiment package:
  wget https://openifs.ecmwf.int/data/experiments/2023-08_Saharan_dust_Barbados/48r1/jafv.tar.gz

  # optional: download md5 checksum file and verify file consistency:
  wget https://openifs.ecmwf.int/data/experiments/2023-08_Saharan_dust_Barbados/48r1/jafv.tar.gz.md5
  md5sum -c jafv.tar.gz.md5 || { echo "ERROR: checksum mismatch on jafv.tar.gz"; exit 1; }
  
  # extract the experiment package:
  tar -xvzf jafv.tar.gz
  ```
- **Prepare the OpenIFS experiments** with the configuration and run scripts for the model. This is a standard process that is required for all OpenIFS experiments and the steps are described on this page: [Set up the experiment directory](https://github.com/ecmwf-ifs/openifs/blob/main/README.md#set-up-the-experiment-directory). These steps need to be carried out for all six experiment directories `YYYYMMDDHH` that are found in `$OIFS_EXPT/jafv/`; we show here a worked example for `2023080500`:
  
  - change into your experiment directory:
    `cd $OIFS_EXPT/jafv/2023080500/`
  
  - **copy the namelist files** `fort.4` and `wam_namelist` from the `ecmwf/` subdirectory into the experiment directory,
  
  - from the `$OIFS_RUN_SCRIPT` location **copy the model run scripts** `oifs-run` and `run-oifs.ecmwf-hpc2020.job` to the experiment directory; the latter script is a batch job template for running OpenIFS which you may need to customise for your local computing system,
  
  - from the `$OIFS_RUN_SCRIPT` location **copy the experiment configuration file** `exp-config.h` into your experiment directory and **edit the file**:
    `OIFS_EXPID="jafv"`
    `OIFS_RES="159"`
    The other settings in this file can remain unchanged if you use a batch job to run the model. Further experiment parameters (e.g. forecast length, output frequency etc) are set in the namelist file `fort.4` and can also remain unchanged.

- now repeat the four steps above for the five other experiments in `jafv`.

#### Setting up the postprocessing and plotting scripts

- Download the **post-processing script** for OpenIFS model output:
  
  ```
  cd $OIFS_EXPT
  cp $OIFS_RUN_SCRIPT/run-pproc.ecmwf-hpc2020.job .
  ```
  
  edit line 85: assign to PLATFORM_CFG the location of your `oifs-config.edit_me.sh`  
  edit line 111: replace the experiment ID `ab2a` with that of the case study experiment `jafv`

#### Download CAMS analysis data

- The OpenIFS model results can be compared against CAMS analysis data, a data product which combines CAMS global atmospheric composition forecasts with satellite observations through data assimilation.

- The AOD data from the CAMS analysis can be downloaded as a further case study data pack as shown below. Alternatively, the data can be obtained directly from the [Atmosphere Data Store](https://ads.atmosphere.copernicus.eu/datasets/cams-global-atmospheric-composition-forecasts?tab=download).
  
- Download the CAMS analysis case study data pack here:
 
  ```
  cd $OIFS_EXPT
  wget https://openifs.ecmwf.int/data/experiments/2023-08_Saharan_dust_Barbados/48r1/cams.tar.gz
  
  # optional: download md5 checksum file and verify file consistency:
  wget https://openifs.ecmwf.int/data/experiments/2023-08_Saharan_dust_Barbados/48r1/cams.tar.gz.md5
  md5sum -c cams.tar.gz.md5 || { echo "ERROR: checksum mismatch on cams.tar.gz"; exit 1; }

  tar -xvzf cams.tar.gz
  ```

#### Running the OpenIFS model forecast experiments

* We recommend to use a batch job to run the model experiments. A template is provided as part of the OpenIFS package. You should have customised this template for your local system. As a minimum you need to edit the path for your PLATFORM_CFG file in the batch job script. If you are using the slurm batch job scheduler you can start the model experiment like this:
  
  ```
  cd $OIFS_EXPT/jafv/2023080500/
  sbatch run-oifs.ecmwf-hpc2020.job
  ```
  
  Once the model experiment is running you can monitor its progress using:
  `tail -f oifs-run.*.log`

* Repeat the above steps for each of the six experiments in `$OIFS_EXPT/jafv`. Depending on the hardware resources of your system you may be able to submit all experiments at the same time and run them concurrently.

* Once the model run has completed you can begin the post-processing of the model outputs:
  
  ```
  cd $OIFS_EXPT
  sbatch run-pproc.ecmwf-hpc2020.job
  ```
  
  This will create a new `output_YYYYMMDDHHMMSS` subfolder in each experiment directory. The symbolic link `output` will always point at the most recently generated output directory.

#### Generating plots from the model output

- If you wish to plot the model results later with the prepared plotting scripts you should also **download and extract** the corresponding scripts package:
  
  ```
  cd $OIFS_EXPT
  wget https://openifs.ecmwf.int/data/experiments/2023-08_Saharan_dust_Barbados/48r1/scripts.tar.gz
  
  # optional: download md5 checksum file and verify file consistency:
  wget https://openifs.ecmwf.int/data/experiments/2023-08_Saharan_dust_Barbados/48r1/scripts.tar.gz.md5
  md5sum -c scripts.tar.gz.md5 || { echo "ERROR: checksum mismatch on scripts.tar.gz"; exit 1; }

  tar -xvzf scripts.tar.gz
  ```
  
  This will create a new subdirectory `scripts` in the experiment directory of the case study.
After extracting the plotting scripts package there is a subfolder `scripts` in the experiment directory. Therein are a number of Python scripts which allow to generate easily various basic plots from the model experiment results.

* **NOTE:** The plotting scripts included in the package are not intended to be a comprehensive visualisation suite. Instead, they **provide simple examples of how plots can be generated** from model outputs and diagnostics. Users are encouraged to adapt these examples or use their preferred plotting tools to visualise model results.

* Before generating the plots with the included scripts it is recommended to **set up the plotting environment**. To use the plotting scripts you will need as a minimum the following Python packages: *earthkit 1.0, matplotlib 3.8, numpy 1.26* and *eccodes*. 

* If this is not available on your local system we recommend that you **create a virtual Python environment** with these packages and their dependencies.
  For this purpose we have provided a convenient setup script which generates the Python environment. It also pre-calculates weights for the grid interpolation that is carried out for the plotting, which speeds up the plotting process.
  
  ```
  cd $OIFS_EXPT/scripts
  ./setup_env.sh
  ```
  
  This process will take a few minutes to complete.

* After the previous step has been completed, the `ekp_fc_*_step.py` scripts can be used to produce global plots from model GRIB parameters. We provide one script per parameter; all scripts have a similar structure and can easily be adjusted for other parameters.  The usage of the scripts is shown as follows:
  `./ekp_fc_aod_step.py --help`

* For instance, creating a plot for a single timestep (here: timestep 5) from the global field of dust aerosol optical depth use this command:
  
  ```
  cd $OIFS_EXPT/scripts
  source .venv/bin/activate

  ./ekp_fc_aod_step.py --infile_aod ../jafv/2023080500/output/ICMGGjafv_duaod550 \ 
       --var_aod duaod550 --timestep 5 --expver jafv

  deactivate
  ```

* A series of timesteps between previously defined `first_step` to `last_step` could be generated in the following way, and stored in a new subdirectory `../jafv/2023080500/output/plots/`:

  ```
  cd $OIFS_EXPT/scripts
  source .venv/bin/activate

  for t in $(seq "${first_step}" "${last_step}")
  do
    ./ekp_fc_aod_step.py --infile_aod "../jafv/2023080500/output/ICMGGjafv_duaod550" \
                         --var_aod duaod550 \
                         --timestep "${t}" \
                         --expver "jafv" \
                         --output-dir ../jafv/2023080500/output/plots
  done

  deactivate
  ```

* **NOTE:** The provided plotting scripts offer best performance on file systems with fast metadata operations and low-latency access to many small files. Running on Lustre or other parallel file systems optimized for large, sequential data transfers is not recommended and may significantly increase the runtime.
 
* A regional **timeseries plot** can be generated with the script `barbados_aod_timeseries.py`. The example below requires that five free-running OpenIFS experiments have been completed and post-processed, as described above. The plot `barbados_aod_timeseries.png` will be created in `$OIFS/scripts`.

  ```
  cd $OIFS_EXPT/scripts
  source .venv/bin/activate

  # usage information: ./barbados_aod_timeseries.py -h

  ./barbados_aod_timeseries.py --cams-dir ../cams --exp-root ../jafv --expid jafv --nudged-date 2023080500 --free-dates 2023081000,2023081100,2023081200,2023081300,2023081400 --start 2023-08-05 --end 2023-08-24

  deactivate
  ```

* The **Hovmoeller diagram** illustrating the dust propagation across the Atlantic can be generated using the script `barbados_aod_hovmoeller.py`. It compares the CAMS analysis data against the nudged OpenIFS experiment and one free-running OpenIFS forecast. In the example below we selected experiment `2023081200`. 

  ```
  cd $OIFS_EXPT/scripts
  source .venv/bin/activate

  # usage information: ./barbados_aod_hovmoeller.py -h

  ./barbados_aod_hovmoeller.py --cams-dir ../cams --exp-root ../jafv --expid jafv --nudged-date 2023080500 --free-date 2023081200 --var duaod550 --lat-min 12.0 --lat-max 15.0 --lon-min -65.0 --lon-max -20.0 --start 2023-08-10 --end 2023-08-20 --grid-res 1.

  deactivate
  ```

# Additional support

For additional information and updates related to OpenIFS or to this case study, please refer to the following resources:  
https://openifs.ecmwf.int/wiki  
https://openifs.ecmwf.int/support  

If you cannot find the information you need, please contact the ECMWF OpenIFS support team through the support channels described on the above websites.

---

*Last Updated: 2026-09-18 10:50 UTC*
