Skip to content

Commit e44ff83

Browse files
committed
documentation: added teca_detect_stitch_nodes
1 parent 5f711f6 commit e44ff83

File tree

2 files changed

+321
-1
lines changed

2 files changed

+321
-1
lines changed

doc/rtd/applications.rst

Lines changed: 309 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,8 @@ batch script rather than in your shell.
3030
| :ref:`teca_temporal_reduction` | Computes reductions (min, max, average, |
3131
| | summation) over the time dimension |
3232
+----------------------------------------+--------------------------------------------------+
33+
| :ref:`teca_detect_stitch_nodes` | TC detection using TempestExtremes |
34+
+----------------------------------------+--------------------------------------------------+
3335
| :ref:`teca_tc_detect` | TC detection using GFDL algorithm |
3436
+----------------------------------------+--------------------------------------------------+
3537
| :ref:`teca_tc_trajectory` | Computes TC tracks from a set of candidates |
@@ -57,6 +59,8 @@ batch script rather than in your shell.
5759
| :ref:`teca_cf_restripe` | Convert the internal layout of a dataset on disk |
5860
| | with optional subsetting and/or regridding. |
5961
+----------------------------------------+--------------------------------------------------+
62+
| :ref:`teca_lapse_rate` | Calculates the mean lapse rate |
63+
+----------------------------------------+--------------------------------------------------+
6064

6165
Applying the Command Line Applications at Scale
6266
-----------------------------------------------
@@ -1557,6 +1561,310 @@ Command Line Arguments
15571561
displays both basic and advanced documentation together
15581562

15591563

1564+
.. _teca_detect_stitch_nodes:
1565+
1566+
teca_detect_stitch_nodes
1567+
------------------------------
1568+
The cyclone detecton algorithm is based on two TempestExtremes codes :cite:`tempestextremes`:
1569+
DetectNodes and StitchNodes.
1570+
1571+
Inputs
1572+
~~~~~~
1573+
A Cartesian mesh stored in a collection of NetCDF CF2 files. The detector requires on
1574+
the following fields.
1575+
1576+
1. Sea level pressure
1577+
2. Surface wind x-component
1578+
3. Surface wind y-component
1579+
4. Geopotential height (300 and 500 mB)
1580+
5. Surface geopotential height
1581+
1582+
Outputs
1583+
~~~~~~~
1584+
1. Cyclone candidate table
1585+
2. Cyclone track table
1586+
1587+
Command Line Arguments
1588+
~~~~~~~~~~~~~~~~~~~~~~
1589+
1590+
--input_file INPUT_FILE
1591+
a teca_multi_cf_reader configuration file identifying the set of NetCDF CF2 files to process.
1592+
When present data is read using the teca_multi_cf_reader. Use one of either `--input_file` or
1593+
`--input_regex`.
1594+
1595+
--input_regex INPUT_REGEX
1596+
a teca_cf_reader regex identifying the set of NetCDF CF2 files to process. When present data is
1597+
read using the teca_cf_reader. Use one of either `--input_file` or `--input_regex`.
1598+
1599+
--candidate_file CANDIDATE_FILE
1600+
file path to write the storm candidates to. The extension determines the file format. May be one of
1601+
`.nc`, `.csv`, or `.bin`. (default: candidates.csv)
1602+
1603+
--track_file TRACK_FILE
1604+
file path to write the storm tracks to. The extension determines the file format. May be one of
1605+
`.nc`, `.csv`, or `.bin`. (default: tracks.csv)
1606+
1607+
--x_axis_variable X_AXIS_VARIABLE
1608+
name of x coordinate variable (default: lon)
1609+
1610+
--y_axis_variable Y_AXIS_VARIABLE
1611+
name of y coordinate variable (default: lat)
1612+
1613+
--z_axis_variable Z_AXIS_VARIABLE
1614+
name of z coordinate variable (default: level)
1615+
1616+
--sea_level_pressure SEA_LEVEL_PRESSURE
1617+
name of variable with sea level pressure
1618+
1619+
--surface_wind_u SURFACE_WIND_U
1620+
name of variable with surface wind x-component
1621+
1622+
--surface_wind_v SURFACE_WIND_Y
1623+
name of variable with surface wind y-component
1624+
1625+
--geopotential_at_surface GEOPOTENTIAL_AT_SURFACE
1626+
name of variable with geopotential at the surface
1627+
1628+
--geopotential GEOPOTENTIAL
1629+
name of variable with geopotential height
1630+
for thickness calc (300 and 500 mB)
1631+
1632+
--300mb_height 300_HEIGHT
1633+
name of variable with 300mb height for thickness calc
1634+
1635+
--500mb_height 500_HEIGHT
1636+
name of variable with 500mb height for thickness calc
1637+
1638+
--in_connect CONNECTIVITY_FILE
1639+
a connectivity file that describes the unstructured grid.
1640+
Not supported yet.
1641+
1642+
--diag_connect true/false
1643+
When the data is on a structured grid, consider grid cells
1644+
to be connected in the diagonal (across the vertex).
1645+
(default: false)
1646+
1647+
--regional true/false
1648+
Used to indicate that a given latitude-longitude grid
1649+
should not be periodic in the longitudinal direction.
1650+
(default: true)
1651+
1652+
--out_header true/false
1653+
If present, output a header at the beginning of the output file
1654+
indicating the columns of the file.
1655+
(default: true)
1656+
1657+
--search_by_min VARIABLE_NAME
1658+
The input variable to use for initially selecting candidate points (defined as local minima).
1659+
At least one (and at most one) of --search_by_min or --search_by_max must be specified.
1660+
1661+
--search_by_max VARIABLE_NAME
1662+
The input variable to use for initially selecting candidate points (defined as local maxima).
1663+
At least one (and at most one) of --search_by_min or --search_by_max must be specified.
1664+
1665+
--search_by_threshold SEARCH_BY_THRESHOLD
1666+
Threshold for search operation in the form "<op><value>"
1667+
These arguments are as follows.
1668+
op is the operator that must be satisfied for threshold (options include >,>=,<,<=,=,!=).
1669+
value is the value on the right-hand-side of the comparison.
1670+
1671+
--min_lon MIN_LON
1672+
The minimum longitude for candidate points. (default: 0.0)
1673+
1674+
--max_lon MAX_LON
1675+
The maximum longitude for candidate points.
1676+
As longitude is a periodic dimension,
1677+
when --regional is not specified --min_lon may be larger than --max_lon.
1678+
If --max_lon and --min_lon are equal then these arguments are ignored.
1679+
(default: 0.0)
1680+
1681+
--min_lat MIN_LAT
1682+
The minimum latitude for candidate points. (default: 0.0)
1683+
1684+
--max_lat MAX_LAT
1685+
The maximum latitude for candidate points.
1686+
If --max_lat and --min_lat are equal then these arguments are ignored.
1687+
(default: 0.0)
1688+
1689+
--min_abs_lat MIN_ABS_LAT
1690+
The minimum absolute value of the latitude for candidate points.
1691+
This argument has no effect if set to zero.
1692+
(default: 0.0)
1693+
1694+
--merge_dist MERGE_DIST
1695+
Minimum allowable distance between two candidates in degrees.
1696+
Candidate points with a distance (in degrees great-circle-distance)
1697+
shorter than the specified value are merged.
1698+
Among two candidates within the merge distance,
1699+
only the candidate with the lowest value of the --search_by_min field
1700+
or highest value of the --search_by_max field are retained.
1701+
(default: 6.0)
1702+
1703+
--closed_contour_cmd CLOSED_CONTOUR_CMD
1704+
Eliminate candidates if they do not have a closed contour.
1705+
The closed contour is determined by breadth first search:
1706+
if any paths exist from the candidate point
1707+
(or nearby minima/maxima if minmaxdist is specified)
1708+
that reach the specified distance before achieving the specified delta
1709+
then we say no closed contour is present.
1710+
Closed contour commands are separated by a semicolon ("<cmd1>;<cmd2>;...").
1711+
Each closed contour command takes the form "var,delta,dist,minmaxdist".
1712+
These arguments are as follows.
1713+
var is the name of the variable used for the contour search.
1714+
dist is the great-circle distance (in degrees) from the pivot
1715+
within which the closed_contour criteria must be satisfied.
1716+
delta is the amount by which the field must change from the pivot value.
1717+
If positive (negative) the field must increase (decrease) by this value along the contour.
1718+
minmaxdist is the great-circle distance away from the candidate
1719+
to search for the minima/maxima. If delta is positive (negative),
1720+
the pivot is a local minimum (maximum).
1721+
(default: SEA_LEVEL_PRESSURE,200.0,5.5,0;thickness,-6.0,6.5,1.0)
1722+
1723+
--no_closed_contour_cmd NO_CLOSED_CONTOUR_CMD
1724+
As --closed_contour_cmd,
1725+
except it eliminates candidates if a closed contour is present.
1726+
1727+
--candidate_threshold_cmd CANDIDATE_THRESHOLD_CMD
1728+
Threshold commands for candidates.
1729+
Eliminate candidates that do not satisfy a threshold criteria
1730+
(there must exist a point within a given distance of the candidate
1731+
that satisfies a given equality or inequality).
1732+
Search is performed by breadth-first search over the grid.
1733+
Threshold commands are separated by a semicolon ("<cmd1>;<cmd2>;...").
1734+
Each threshold command takes the form "var,op,value,dist".
1735+
These arguments are as follows.
1736+
var is the name of the variable used for the thresholding.
1737+
op is the operator that must be satisfied for threshold (options include >,>=,<,<=,=,!=).
1738+
value is the value on the right-hand-side of the comparison.
1739+
dist is the great-circle distance away from the candidate
1740+
to search for a point that satisfies the threshold.
1741+
1742+
--output_cmd OUTPUT_CMD
1743+
Include additional columns in the candidates output file.
1744+
Each output command takes the form "var,op,dist".
1745+
These arguments are as follows.
1746+
var is the name of the variable used for output.
1747+
op is the operator that is applied over all points
1748+
within the specified distance of the candidate (options include max, min, avg, maxdist, mindist).
1749+
dist is the great-circle distance away from the candidate wherein the operator is applied.
1750+
(default: SEA_LEVEL_PRESSURE,min,0;surface_wind_speed,max,2;GEOPOTENTIAL_AT_SURFACE,min,0)
1751+
1752+
--in_fmt IN_FMT
1753+
A comma-separated list of names of the auxiliary columns within the candidates output file.
1754+
(namely, the list must not include the time columns).
1755+
(default: i,j,lat,lon,SEA_LEVEL_PRESSURE,surface_wind_speed,GEOPOTENTIAL_AT_SURFACE)
1756+
1757+
--range RANGE
1758+
The maximum distance between candidates along a path (in great-circle degrees).
1759+
(default: 8.0)
1760+
1761+
--min_time MIN_TIME
1762+
The minimum length of a path either in terms of number of discrete times or as a duration, e.g. "24h".
1763+
Note that the duration of a path is computed as the difference between the final time and initial time,
1764+
so a "24h" duration correspond to 5 time steps in 6-hourly data (i.e. 0h,6,12,18,24UTC).
1765+
(default: 10)
1766+
1767+
--min_endpoint_distance MIN_ENDPOINT_DIST
1768+
The minimum great-circle distance between the first candidate on a path and the last candidate (in degrees).
1769+
(default: 0.0)
1770+
1771+
--min_path_distance MIN_PATH_DISTANCE
1772+
The minimum accumulated great-circle distance between nodes in a path (in degrees).
1773+
(default: 0.0)
1774+
1775+
--min_path_length MIN_PATH_LENGTH
1776+
Minimum path length (default: 0.0)
1777+
1778+
--max_gap MAX_GAP
1779+
The number of allowed missing points between spatially proximal candidate nodes
1780+
while still considering them part of the same path.
1781+
(default: 3)
1782+
1783+
--track_threshold_cmd TRACK_THRESHOLD_CMD
1784+
Filter paths based on the number of times where a particular threshold is satisfied.
1785+
Threshold commands are separated by a semicolon ("<cmd1>;<cmd2>;...").
1786+
Each threshold command takes the form "col,op,value,count".
1787+
These arguments are as follows.
1788+
col is the name of the column to use for thresholding, as specified in --in_fmt.
1789+
op is the operator that must be satisfied for threshold (options include >,>=,<,<=,=,!=,|>=,|<=).
1790+
value is the value on the right-hand-side of the comparison.
1791+
count is either the minimum number of time slices where the threshold must be satisfied
1792+
or the instruction "all", "first", or "last".
1793+
Here "all" is used to indicate the threshold must be satisfied at all points along the path,
1794+
"first" is used to indicate the threshold must be satisfied only at the first point along the path, and
1795+
"last" is used to indicate the threshold must be satisfied only at the last point along the path.
1796+
(default: surface_wind_speed,>=,10.0,10;lat,<=,50.0,10;lat,>=,-50.0,10;GEOPOTENTIAL_AT_SURFACE,<=,15.0,10)
1797+
1798+
--prioritize VARIABLE_NAME
1799+
Variable to use when prioritizing path
1800+
1801+
--allow_repeated_times true/false
1802+
Allow repeated times (default: false)
1803+
1804+
--cal_type CAL_TYPE
1805+
Calendar type (default: standard)
1806+
1807+
--first_step FIRST_STEP
1808+
first time step to process (default: 0)
1809+
1810+
--last_step LAST_STEP
1811+
last time step to process (default: -1)
1812+
1813+
--n_threads NUMBER_OF_THREADS
1814+
Sets the thread pool size on each MPI rank. When the default value of -1 is used TECA will
1815+
coordinate the thread pools across ranks such each thread is bound to a unique physical core.
1816+
(default: -1)
1817+
1818+
--help
1819+
displays documentation for application specific command line options
1820+
1821+
--advanced_help
1822+
displays documentation for algorithm specific command line options
1823+
1824+
--full_help
1825+
displays both basic and advanced documentation together
1826+
1827+
--verbose VERBOSE
1828+
Enable verbose output (default: 0)
1829+
1830+
Examples
1831+
~~~~~~~~
1832+
1833+
ERA5 data
1834+
^^^^^^^^^
1835+
1836+
.. code-block:: bash
1837+
1838+
#!/bin/bash
1839+
#SBATCH -C cpu
1840+
#SBATCH -q debug
1841+
#SBATCH -A m1517
1842+
#SBATCH -N 1
1843+
#SBATCH -n 64
1844+
#SBATCH -t 00:30:00
1845+
#SBATCH -J teca_detect_stitch.out
1846+
#SBATCH --output=%x-%j.out
1847+
1848+
# load the TECA module
1849+
module use /global/common/software/m1517/teca/perlmutter_cpu/develop/modulefiles
1850+
module load teca
1851+
1852+
srun -n 64 teca_detect_stitch_nodes \
1853+
--input_file era5_2017.mcf \
1854+
--sea_level_pressure MSL \
1855+
--surface_wind_u VAR_10U \
1856+
--surface_wind_v VAR_10V \
1857+
--geopotential Z \
1858+
--geopotential_at_surface ZS \
1859+
--x_axis_variable longitude \
1860+
--y_axis_variable latitude \
1861+
--max_lat 90 \
1862+
--min_lat -90 \
1863+
--max_lon 359.75 \
1864+
--min_lon 0 \
1865+
--search_by_min MSL
1866+
1867+
15601868
.. _teca_tc_detect:
15611869

15621870
teca_tc_detect
@@ -1595,7 +1903,7 @@ the following fields.
15951903

15961904
Outputs
15971905
~~~~~~~
1598-
1. Cyclone andidate table
1906+
1. Cyclone candidate table
15991907
2. Cyclone track table
16001908

16011909
Command Line Arguments

doc/rtd/bibliography.bib

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,3 +81,15 @@ @article{tc_props
8181
url = {https://doi.org/10.1175/MWR3420.1},
8282
eprint = {https://journals.ametsoc.org/mwr/article-pdf/135/7/2568/4230462/mwr3420\_1.pdf},
8383
}
84+
85+
@article{tempestextremes,
86+
author = {Ullrich, P. A. and Zarzycki, C. M. and McClenny, E. E. and Pinheiro, M. C. and Stansfield, A. M. and Reed, K. A.},
87+
title = {TempestExtremes v2.1: a community framework for feature detection, tracking, and analysis in large datasets},
88+
journaL = {Geoscientific Model Development},
89+
volume = {14},
90+
year = {2021},
91+
number = {8},
92+
pages = {5023--5048},
93+
url = {https://gmd.copernicus.org/articles/14/5023/2021/},
94+
doi = {10.5194/gmd-14-5023-2021}
95+
}

0 commit comments

Comments
 (0)