Appendix A

Code

A.1 The PotentialHeight repository

All of the main final code is now in the PotentialHeight repository1, broken down into a set of Python modules. I essentially followed the mono-repo approach (Winters et al. 2020), of creating a set of packages in a single repository so that they were always guaranteed to be compatible with each other. The modules are themselves hopefully not too tightly coupled, leading to adequate separation of concerns. The repository is structured as follows:

An important aspect of the repository is that it is fairly well unit tested, with doctests in many of the most important functions. All tests are run as a GitHub Action with each push to the repository’s main branch. The documentation is also automatically generated using Sphinx/Read the Docs with each push to the repository’s main branch. The documentation is available at https://worstsurge.readthedocs.io/en/latest/. As all of the tests are doctests, they also form part of the documentation, leading to a less repetitive (more ‘DRY,’ Thomas and Hunt 2019) coding style. Hopefully these practices, inspired by software engineering, will make the code more maintainable and reusable in the future.

In general I also sought to develop the project in an ‘agile’ manner (Thomas and Hunt 2019) with the core product completed (Chapter 3) before the parts of the framework were improved, including the calculation of potential sizes (Chapter 2) and the Bayesian optimisation loop (Chapter 4). There are still many ways to expand the potential height framework (see Chapter 6), but hopefully the design of this repository will make it easier.

A.2 Other repositories

A.2.1 ADCIRC v55.02

A version of ADCIRC-v55 (Pringle et al. 2021) is adapted to compile on ARCHER2, with slight alterations to implement the bug fixes announced in v55.02 etc. It is available at https://github.com/sdat2/adcirc-v55.02. It should be similar to https://github.com/adcirc/adcirc/releases/tag/v55.02

A.2.2 adcirc-emulation

adcirc-emulation is a Python repository that includes all the initial exploration and scoping for the thesis (but not the final work included here) (Simon Donald Alistair Thomas 2025). It includes code for setting up ADCIRC runs with text data input, processing ADCIRC output, and initial Bayesian optimisation experiments. It is available at https://github.com/sdat2/adcirc-emulation.

A.2.3 sithom

sithom is a Python package with a set of general Python utilities used in this project and others (Thomas 2024), which standardizes plotting style and other things. It also has doctest unit tests that run with every push and automatically compiled documentation. It is available at https://github.com/sdat2/sithom. Install by pip install sithom. https://sithom.readthedocs.io/en/latest/MAIN_README.html has the documentation.

A.2.4 mSWE-GNN/sdat2

The code for training the full ADCIRC surrogate models is available at https://github.com/sdat2/mSWE-GNN/tree/sdat2 (Simon D. A. Thomas 2025b). It builds upon pytorch-geometric/pyg (Fey and Lenssen 2019; Fey et al. 2025), which is a pytorch (Paszke et al. 2019) based geometric deep learning library. It has its own doctests that run as a GitHub Action on each push to the sdat2 branch with a CPU only micromamba environment, and it also includes a working environment.yaml specification for GPU training.

References

Abadi, Martín, Ashish Agarwal, Paul Barham, et al. 2015. TensorFlow: Large-Scale Machine Learning on Heterogeneous Systems. https://www.tensorflow.org/.
Chavas, Daniel Robert. 2022. Code for Tropical Cyclone Wind Profile Model of Chavas Et Al (2015, JAS). Released June. https://doi.org/10.4231/CZ4P-D448.
Fey, Matthias, and Jan Eric Lenssen. 2019. “Fast Graph Representation Learning with PyTorch Geometric.” arXiv Preprint arXiv:1903.02428.
Fey, Matthias, Jinu Sunil, Akihiro Nitta, et al. 2025. “PyG 2.0: Scalable Learning on Real World Graphs.” arXiv Preprint arXiv:2507.16991.
Gilford, Daniel. 2020. Dgilford/pyPI: pyPI V1.3 (Initial Package Release). V. v1.3. Zenodo, released August. https://doi.org/10.5281/zenodo.3985975.
Paszke, Adam, Sam Gross, Francisco Massa, et al. 2019. “Pytorch: An Imperative Style, High-Performance Deep Learning Library.” Advances in Neural Information Processing Systems 32.
Picheny, Victor, Joel Berkeley, Henry B Moss, et al. 2023. Trieste: Efficiently Exploring the Depths of Black-Box Functions with TensorFlow.” arXiv Preprint arXiv:2302.08436.
Pringle, W. J., D. Wirasaet, K. J. Roberts, and J. J. Westerink. 2021. “Global Storm Tide Modeling with ADCIRC V55: Unstructured Mesh Design and Performance.” Geoscientific Model Development 14 (2): 1125–45. https://doi.org/10.5194/gmd-14-1125-2021.
Thomas, David, and Andrew Hunt. 2019. The Pragmatic Programmer: Your Journey to Mastery. Addison-Wesley Professional.
Thomas, Simon D. A. 2025a. Finding the potential height of tropical cyclone storm surges in a changing climate using Bayesian Optimization. V. v0.1.3. Released November. https://doi.org/10.5281/zenodo.15073504.
Thomas, Simon D. A. 2025b. Sdat2/mSWE-GNN: V0 - SurgeNet MVP. V. v0. Zenodo, released. https://doi.org/10.5281/zenodo.17711456.
Thomas, Simon D. A. 2025c. SurgeNet Test Dataset – Potential Height Simulations – Alpha Version. Hugging Face. https://doi.org/ 10.57967/hf/7006 .
Thomas, Simon D. A. 2025d. SurgeNet Training Dataset. Hugging Face. https://doi.org/10.57967/hf/6971.
Thomas, Simon Donald Alistair. 2024. Sithom’s Scientific Python Utilities Package. V. v0.1.1. Zenodo, released October. https://doi.org/10.5281/zenodo.13902997.
Thomas, Simon Donald Alistair. 2025. New Orleans Storm Surge Emulation Package. V. v0.0.1. Zenodo, released April. https://doi.org/10.5281/zenodo.15167920.
Wang, Danyang, Yanluan Lin, and Daniel R Chavas. 2022. “Tropical Cyclone Potential Size.” Journal of the Atmospheric Sciences 79 (11): 3001–25. https://doi.org/10.1175/jas-d-21-0325.1.
Winters, Titus, Tom Manshreck, and Hyrum Wright. 2020. Software Engineering at Google: Lessons Learned from Programming over Time. O’Reilly Media, Inc.

  1. The repository is available at https://github.com/sdat2/PotentialHeight (Simon D. A. Thomas 2025a).↩︎

Previous: Discussion and Future Work