Skip to content

Air Quality Modeling

Gillian Petro edited this page Aug 25, 2023 · 101 revisions

The standard SRW App distribution uses the uncoupled version of the UFS Weather Model (atmosphere-only), while this page shows how to use a coupled version of the SRW App that includes the standard distribution (atmospheric model) plus the Air Quality Model (AQM).

The AQM is a UFS Application that dynamically couples the Community Multiscale Air Quality (CMAQ) model with the UFS Weather Model through the NUOPC Layer to simulate temporal and spatial variations of atmospheric compositions (e.g., ozone and aerosol compositions). The CMAQ, treated as a column chemistry model, updates concentrations of chemical species (e.g., ozone and aerosol compositions) at each integration time step. The transport terms (e.g., advection and diffusion) of all chemical species are handled by the UFS Weather Model as tracers.

Quick Start Guide (SRW-AQM)

  1. Clone the "develop" branch of the authoritative repository:
   git clone -b develop https://github.com/ufs-community/ufs-srweather-app.git
   cd ufs-srweather-app

Note that the latest hash of the develop branch might not be tested with the sample scripts of SRW-AQM. Therefore, if you want to check out the stable (verified) version for SRW-AQM, you can check out the following hash:

   git checkout ab11918
  1. Check the hashes of the external components in ufs-srweather-app/Externals.cfg:
   vim Externals.cfg
  • As can be seen in the file, this will check out the following hashes of the external components that are specified in Externals.cfg (as of 05/17/2023):
Component Hash
UFS_UTILS 4d2768c
ufs-weather-model 36d6e16
UPP 22cfb88
NEXUS 3842818
AQM-utils 0a86f73
  • Replace the above hashes if you want to check out different ones.
  • If you want to use another branch for development, you can comment out the hash line and uncomment the branch line with a new repo_url address. For example:
repo_url = https://github.com/chan-hoo/ufs-weather-model
branch = feature/for_example
#hash = e051e0e
  1. Check out the external components:
./manage_externals/checkout_externals
  1. Build Online-CMAQ:
   ./devbuild.sh -p=[machine] -a=ATMAQ

where [machine] is hera, or wcoss2.

  1. Set up the user-specific configuration:
   cd ush
   cp config.aqm.community.yaml (or config.aqm.nco.realtime.yaml) config.yaml

Note that additional sample scripts can be found in chan-hoo's github repo for online-cmaq.

Set the following parameters in config.yaml for the automatic initial-submission and re-submission by cron:

workflow:
  USE_CRON_TO_RELAUNCH: true
  CRON_RELAUNCH_INTVL_MNTS: 3

This means that cron will submit the launch script every 3 minutes. Note that you should create your crontab with "crontab -e" first if this is your first time to use cron.

  1. Load the python environment for the workflow:
  • On WCOSS2:
   source ../versions/run.ver.wcoss2
   module use ../modulefiles
   module load wflow_wcoss2
  • On Hera:
   module use ../modulefiles
   module load wflow_[machine]
   conda activate workflow_tools

where [machine] is hera.

  1. Generate the workflow:
   python3 generate_FV3LAM_wflow.py
  1. Run the workflow only if USE_CRON_TO_RELAUNCH: true was not set in config.yaml(see Step 5 for the automatic resubmission by cron):
   cd [EXPT_BASEDIR]/[EXPT_SUBDIR]
   ./launch_FV3LAM_wflow.sh

Repeat this launch command until you have SUCCESS or FAILURE on your terminal window.

References