You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
EarthArxiv preprint now available <https://doi.org/10.31223/X57T5R>!
5
+
EarthArXiv preprint available at <https://doi.org/10.31223/X57T5R>.
6
6
7
-
We want to answer the question of what the potential height of a storm surge could be now and in a changing climate. To do this we first calculate the potential intensity and size from CMIP6 (`tcpips` & `w22`), and then use a Bayesian optimization loop (`adbo`) to drive an storm surge model ADCIRC with idealised tropical cyclones (`adforce`). We then show that knowing the upper bound can be useful in the context of an evt fit (`worst`).
7
+
We want to answer the question of what the potential height of a storm surge could be now and in a changing climate. To do this we first calculate the potential intensity and size from CMIP6 (`tcpips` & `w22`), and then use a Bayesian optimization loop (`adbo`) to drive a storm surge model ADCIRC with idealised tropical cyclones (`adforce`). We then show that knowing the upper bound can be useful in the context of an EVT fit (`worst`).
8
8
9
-
All (or almost all) of the key experiments are carried out as `slurm` jobs, so go to `slurm/` to see these. `data/` contains some of the key data, and `img/` most of the key figures. `docs/` contains the source for the readthedocs documentation <https://worstsurge.readthedocs.io/en/latest/MAIN_README.html>.
9
+
All (or almost all) of the key experiments are carried out as `slurm` jobs — see `slurm/`. `data/` contains some of the key data, and `img/` most of the key figures. `docs/` contains the source for the ReadTheDocs documentation at<https://worstsurge.readthedocs.io/en/latest/MAIN_README.html>.
10
10
11
-
## tcpips
11
+
## Modules
12
12
13
-
Tropical Cyclone Potential Intensity (PI) and precursors for Potential Size (PS) calculations.
14
-
Includes pangeo script to download and process data from CMIP6 for calculations. Currently regrids using `cdo` or `xESMf`.
15
-
Uses the `tcpypi` pypi package to calculate potential intensity.
13
+
### `tcpips`
16
14
17
-
## w22
15
+
Tropical Cyclone Potential Intensity (PI) and precursors for Potential Size (PS) calculations. Includes a pangeo script to download and process CMIP6 data. Regrids using `cdo` or `xESMF`. Uses the `tcpypi` package to calculate potential intensity. Also includes `tcpips/ibtracs.py` to compare IBTrACS observations with potential sizes and intensities calculated from ERA5 monthly averages (post-1980), with filters for storms undergoing extratropical transition.
18
16
19
-
Used to calculate tropical cyclone potential size as in Wang et al. (2022). Used to use the Chavas et al. 2015 profile calculation in matlab (using octave instead from `w22/cle5m.py`).
20
-
But now we have a new python implementation that is much faster and more stable, see `w22/cle15.py`. The implementation of Potential Size is in `w22/ps.py`.
17
+
### `w22`
18
+
19
+
Calculates tropical cyclone potential size following Wang et al. (2022). The implementation of Potential Size is in `w22/ps.py`, which can now calculate both potential sizes together. `w22/stats2.py` generates tables describing CMIP6 results (for HadGEM3-GC31-MM, MIROC6, and CESM2).
21
20
22
21
```bash
23
-
#to calculate the example potential size
22
+
#Calculate example potential sizes
24
23
python -m w22.ps
25
-
#to calculate the tests against W22
24
+
#Run tests against W22
26
25
python -m w22.test
27
26
```
28
27
28
+
### `cle15`
29
+
30
+
A standalone Python re-implementation of the Chavas, Lin & Emanuel (2015) tropical cyclone wind profile model. Three variants are provided:
|`cle15m.py`| Thin wrapper around the original MATLAB/Octave scripts in `mcle/`|
37
+
38
+
All three expose the same public API: `run_cle15`, `profile_from_stats`, `process_inputs`. The Numba implementation is now the default in `w22`.
39
+
40
+
```bash
41
+
# Run benchmarks
42
+
python -m cle15.bench_cle15
43
+
# Run tests
44
+
python -m cle15.test_cle15
45
+
```
46
+
47
+
### `adforce`
29
48
30
-
## adforce
49
+
An ADCIRC wrapper for forcing and post-processing. Handles idealised axisymmetric tropical cyclones (NWS=13, ADCIRC ≥ 55.02) with a gradient wind reduction factor of $V_\text{reduc} = 0.8$ for 10 m winds. Uses `hydra` for config management.
31
50
32
-
An ADCIRC wrapper that does ADCIRC forcing and processing. Some generic mesh processing is also included. Assumes gradient wind reduction factor V_reduc=0.8 for 10m wind. Runs using `hydra` for config management.
51
+
Key files:
52
+
-`fort22.py` — write wind/pressure `fort.22.nc` input files; supports `lc12` asymmetry and Ide et al. (2022) curved parabolic tracks.
53
+
-`fort61.py` / `fort63.py` — read tide gauge and SSH/wind output.
54
+
-`mesh.py` — fast mesh reading/processing; converts ADCIRC output to dual-graph format for GNN training.
55
+
-`dual_graph.py` — dual-graph construction for ML training datasets.
56
+
-`generate_training_data.py` — forces ADCIRC with IBTrACS historical U.S. landfalling storms (1980–2024) to generate SurgeNet training data.
57
+
-`wrap.py` — orchestrates parallel ADCIRC runs on Archer2; the main file to edit when porting to a new machine.
58
+
59
+
Supports `pyproj` and a fast `sphere` approximation for distance calculations (controlled by `geoid` in `adforce/config/grid/grid_fort22.yaml`; defaults to `sphere`).
33
60
34
61
```bash
35
62
python -m adforce.wrap
36
63
```
37
64
38
-
Needs an executatable directory for ADCIRC that includes a `padcirc` and `adcprep`executable stored in `adforce/config/files/`.
65
+
Requires `padcirc` and `adcprep`executables placed in `adforce/config/files/`. A repo with compilation settings and minor edits is available at <https://github.com/sdat2/adcirc-v55.02>.
39
66
40
-
A repo with our compilation settings for ADCIRC, and small edits, is available at <https://github.com/sdat2/adcirc-v55.02>.
67
+
### `adbo`
41
68
42
-
## adbo
69
+
Bayesian optimization using `adforce` to drive ADCIRC via a `trieste` optimization loop. Supports multiple GP kernels and acquisition functions. Uses `argparse` for top-level config management, then delegates to `hydra` inside `adbo`.
43
70
44
-
Bayesian optimization using `adforce` to force ADCIRC with a `trieste` Bayesian optimization loop. Runs using `argparse` for config management, and then calls `adbo` which uses `hydra` (it was not possible to have two layers of hydra configs for the two modules).
-`exp_2d.py` / `exp_3d.py` — 2D and 3D experiments.
74
+
-`gp_exp.py` — exploration of different GP kernels.
75
+
-`create_test_set.py` — builds the potential-height test set (best BO run per location) for SurgeNet training.
45
76
46
77
```bash
47
78
python -m adbo.exp_1d --test True --exp_name test
48
79
```
49
80
50
-
##worst
81
+
### `worst`
51
82
52
-
Statistical worst-case GEV fit using `tensorflow`. Varies whether to assume an upper bound ahead of time. Uses `hydra` for the config management.
83
+
Statistical worst-case GEV fit with `scipy` (`sci.py`) and `tensorflow` (`tens.py`). Explores the effect of knowing the upper bound ahead of time on sampling uncertainty and bias. Uses `hydra` for config management.
Early-stage work on a graph neural network (GNN) emulator for storm surge, trained on ADCIRC output. Currently contains a toy example (`toy_example.py`) demonstrating pathological extrapolation behaviour of ReLU neural networks compared with the true analytical exceedance probability.
0 commit comments