Tropical Cyclones analysis with TempestExtremes

This page is intended to provide a quick example on how to perform an analysis of Tropical Cyclones from E3SM output using the TempestExtremes package. For this example, we use output from the E3SMv1 Water Cycle low-res AMIP simulation (. Based on a demo and instructions from Paul Ullrich. Tested on NERSC Cori.

Installation on Cori

To download and install under ~/Tempest:

module load cray-netcdf
mkdir ~/Tempest
cd ~/Tempest
git clone
cd tempestextremes
make all -j 4


Reserve an interactive session on compute nodes. For this example, one node for one hour is sufficient:

salloc -N 1 -C haswell -q interactive -t 01:00:00

For this particular example, we assume that the input data consists of cam.h2 files located under /global/cscratch1/sd/golaz/ACME_simulations/20180316.DECKv1b_A1.ne30_oEC.edison/archive/atm/hist


Let's further assume that we want to process years 2000 and onward.

cd <workdir>

# Copy over the connectivity file for the CSne30 mesh
# (this is an adjacency list that describes the unstructured grid, generated using the GenerateConnectivityFile tool):
cp /global/homes/p/paullric/outCSne30_connect.txt .

# Create list of input files
ls -1 $INPUTDIR/*20??*.nc > input.txt

# Create list of output files
sed -e 's/.*cam.h2[.]//' -e 's/[.]nc$/.cyclones.txt/' input.txt > output.txt

# Run DetectNodes to detect TC on the unstructured E3SM grid. 
# This is the most time consuming operation.
~/Tempest/tempestextremes/bin/DetectNodes --verbosity 0 \
  --timestride 1 --in_connect outCSne30_connect.txt \
  --closedcontourcmd "PSL,300.0,4.0,0;_AVG(T200,T500),-0.6,4,1.0" \
  --mergedist 6.0 --searchbymin PSL --outputcmd "PSL,min,0;_VECMAG(UBOT,VBOT),max,2" \
  --in_data_list input.txt --out_file_list output.txt

# The output consists of one text file for every input netCDF file with detected cyclones.
# Concatenate all output files to make a master detection list
cat *.cyclones.txt > cyclones.txt

# Run StitchNodes on the master detection list to identify actual TC tracks:
~/Tempest/tempestextremes/bin/StitchNodes --format "i,lon,lat,slp,wind" --range 6.0 \
  --minlength 6 --maxgap 1 --in cyclones.txt --out cyclones_stitch.txt \
  --threshold "wind,>=,17.5,6;lat,<=,40.0,6;lat,>=,-40.0,6"

# Generate histogram of detections:
~/Tempest/tempestextremes/bin/HistogramNodes --in cyclones_stitch.txt \
  --iloncol 2 --ilatcol 3 --out

# Visualize it, for example with ncview
module load ncview
ncview &