# Canadian wildfires and long-range smoke transport across the North Atlantic

--- 

## Introduction

In early August 2024, extensive wildfire activity in western Canada generated a large smoke emission event, resulting in the long-range transport of biomass-burning aerosol and trace gases across North America and the North Atlantic towards Europe. 

The smoke plume was entrained into the mid-latitude circulation from 12 August and reached western Europe by 17 August, with analyses from the Copernicus Atmosphere Monitoring Service (CAMS) indicating enhanced aerosol optical depth (AOD) values exceeding 1 within the transported plume. These elevated AOD values were independently confirmed by AERONET observations at measurement sites across northwestern Europe and at locations upstream over the North Atlantic sector. 

Vertical cross-sections of carbon monoxide (CO) and hydrogen cyanide (HCN) revealed enhanced concentrations throughout the free troposphere over Europe, with some indications of near-surface influence. Surface observations across the UK and measurements from the vAirify project further identified elevated particulate matter concentrations (PM₂.₅ and PM₁₀) during 18–20 August, consistent with the arrival of the Canadian wildfire smoke plume.

## Literature

The table below points to published materials related to this event that we are aware of.

| Publication         | Title                                                                                                                        | Citation                                                                                      |
| ------------------- | ---------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- |
| CAMS News Article   | Smoke from Canadian wildfires reaches Europe                                                                                 | https://atmosphere.copernicus.eu/smoke-canadian-wildfires-reaches-europe, <br/>20 August 2024 |
| EGUsphere Pre-Print | Wildfire aerosols lofted by North American pyrocumulonimbus clouds: long-range transport and aerosol-cloud-radiative effects | Wang, Y., et al. (2025), https://doi.org/10.5194/egusphere-2025-5076.                         |

## OpenIFS Experiments

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

- The pack includes the global initial experiment data and boundary conditions, including time-varying wildfire emissions, for a forecast from 12 August 2024 with a duration of 15 days. 

- The data is provided on 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, and on [137 vertical model levels](https://confluence.ecmwf.int/spaces/OIFS/pages/431064381/4+Vertical+Resolution+and+Configurations). 

- The experiment can be run as a free-running forecast experiment, or alternatively 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 casestudy 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 casestudy 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 casestudy 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 75 GB of free disk space in the experiment directory.

- To produce **plots from the model output** with the scripts provided in the casestudy 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.*.sh configuration file located in the top-level directory of the OpenIFS installation.

#### Setting up the casestudy 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 experiment** for this casestudy 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 casestudy experiment package:
  wget https://openifs.ecmwf.int/data/experiments/2024-08_Wildfires/48r1/j4i9.tar.gz

  # optional: download md5 checksum file and verify file consistency:
  wget https://openifs.ecmwf.int/data/experiments/2024-08_Wildfires/48r1/j4i9.tar.gz.md5
  md5sum -c j4i9.tar.gz.md5 || { echo "ERROR: checksum mismatch on j4i9.tar.gz"; exit 1; }
  
  # extract the experiment package:
  tar -xvzf j4i9.tar.gz
  ```
- **Prepare the OpenIFS experiment** 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 include:
  
  - change into your experiment directory:
    `cd $OIFS_EXPT/j4i9/2024081200/`
  
  - **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="j4i9"`
    `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.

#### 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 PLATFORM_CFG the location of your `oifs-config.edit_me.sh`  
  edit line 111: replace `ab2a` with `j4i9`

- If you wish to plot the model results later with the earthkit package you should also **download and extract** the corresponding scripts package:
  
  ```
  cd $OIFS_EXPT
  wget https://openifs.ecmwf.int/data/experiments/2024-08_Wildfires/48r1/scripts.tar.gz
  
  # optional: download md5 checksum file and verify file consistency:
  wget https://openifs.ecmwf.int/data/experiments/2024-08_Wildfires/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 -C j4i9/2024081200
  ```
  
  This will create a new subdirectory `scripts` in the experiment directory of the casestudy.

#### Running the model forecast experiment

* We recommend to use a batch job to run the model experiment. A template is provided as part of the OpenIFS package. You should have customised this template for your local system. If you are using the slurm batch job scheduler you can start the model experiment like this:
  
  ```
  cd $OIFS_EXPT/j4i9/2024081200/
  sbatch run-oifs.ecmwf-hpc2020.job
  ```
  
  Once the model experiment is running you can monitor the progess using:
  `tail -f oifs-run.*.log`

* 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 the experiment  directory. The symbolic link `output` will always point at the most recent generated output directory. 

#### Generating plots from the model output

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/j4i9/2024081200/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_msl_step.py --help`

* For instance, creating a plot for a single timestep (here: timestep 5) from the global field of carbon monoxide fire emission fluxes (cofire) use this command:
  
  ```
  ./ekp_fc_co_step.py --infile_co ../output/ICMGGj4i9_cofire \ 
       --var_co cofire --timestep 5 --expver j4i9
  ```

* **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 wrapper script is included to create a series of plots for a range of timesteps:
  Edit `make_plots.sh` and set the first and last timesteps that should be plotted. The default values are `first_step=1` and the `last_step` value is left empty, which will plot all available time steps from the model experiment (in total these are 121 3-hourly steps).
  
  ```
  cd $OIFS_EXPT/j4i9/2024081200/scripts
  ./make_plots.sh
  ```
  

# Additional support

For additional information and updates related to OpenIFS or to this casestudy, 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:52 UTC*
