Skip to content

Air Quality Modeling

Chan-Hoo.Jeon-NOAA edited this page Mar 8, 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 (Online-CMAQ)

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

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

   git checkout ff6f103
  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 02/24/2023):
Component Hash
UFS_UTILS ca9bed8
ufs-weather-model e051e0e
UPP 2b2c84a
NEXUS 3842818
AQM-utils e078c70
  • 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 regional_workflow

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