Flexible modeling and simulation software for free-surface flows.
Zoomy's main objective is to provide a convenient modeling interface for complex free-surface flow models. Zoomy transitions from a symbolic modeling layer to a numerical layer, compatible with a multitude of numerical solvers, e.g. NumPy, JAX, Firedrake, FEniCSx, OpenFOAM, and AMReX. Additionally, we support the preCICE coupling framework for some numerical backends, enabling convenient integration of our solver with your existing code.
See the Zoomy documentation for the user guide, tutorials, API reference, and full installation / development setup.
- Try it now in your browser — interactive GUI at zoomylab.github.io/Zoomy/gui.
- Try a notebook in your browser — open the shallow-water Pyodide tour in JupyterLite (walks
Model→SystemModel→NumericalSystemModel→ C++ codegen → solve & plot, all running in the browser). - Install the published packages (NumPy and JAX backends): Get started → Install.
- Containers (Docker / Apptainer, CPU and GPU, AMReX, OpenFOAM): Get started → Containers.
- Develop Zoomy (clone with submodules, editable installs, local images): Developer guide → Developer installation.
Zoomy's symbolic layer compiles to several solver backends. NumPy, JAX, AMReX and OpenFOAM share one page in the documentation: Solver backends.
The test matrix, the timings and the CI status are on the Testing page of the documentation.
The Zoomy source code is free open-source software, licensed under version 3 or later of the GNU Lesser General Public License (LGPLv3+). See LICENSE for full copying permissions.
BibTeX
@misc{steldermann_dimensionally_2025,
author = {Steldermann, Ingo and Bünning, Jonas and Pummer, Elena and Kowalski, Julia},
editor = {Pummer, Elena and Albayrak, Ismail},
title = {Dimensionally Reduced Shallow Moment Simulations of a Pumped-Storage Plant Tunnel System},
publisher = {ETH Zurich},
date = {2025},
doi = {10.3929/ETHZ-B-000727194},
url = {http://hdl.handle.net/20.500.11850/727194},
}Plain text
Steldermann, I., Bünning, J., Pummer, E., Kowalski, J. (2025). Dimensionally Reduced Shallow Moment Simulations of a Pumped-Storage Plant Tunnel System. ETH Zurich. Edited by E. Pummer and I. Albayrak. https://doi.org/10.3929/ETHZ-B-000727194
@misc{steldermann_dimensionally_2025,
author = {Steldermann, Ingo and Bünning, Jonas and Pummer, Elena and Kowalski, Julia},
editor = {Pummer, Elena and Albayrak, Ismail},
title = {Dimensionally Reduced Shallow Moment Simulations of a Pumped-Storage Plant Tunnel System},
publisher = {ETH Zurich},
date = {2025},
doi = {10.3929/ETHZ-B-000727194},
url = {http://hdl.handle.net/20.500.11850/727194},
}
@incollection{steldermann_shallow_2024,
author = {Steldermann, Ingo and Torrilhon, Manuel and Kowalski, Julia},
editor = {Parés, Carlos and Castro, Manuel J. and Morales De Luna, Tomás and Muñoz-Ruiz, María Luz},
title = {Shallow Moment Equations—Comparing Legendre and Chebyshev Basis Functions},
booktitle = {Hyperbolic Problems: Theory, Numerics, Applications. Volume {II}},
volume = {35},
pages = {457--466},
publisher = {Springer Nature Switzerland},
location = {Cham},
date = {2024},
isbn = {978-3-031-55264-9},
doi = {10.1007/978-3-031-55264-9_39},
url = {https://link.springer.com/10.1007/978-3-031-55264-9_39},
}
@article{steldermann_shallow_2023,
author = {Steldermann, Ingo and Torrilhon, Manuel and Kowalski, Julia},
title = {Shallow Moments to Capture Vertical Structure in Open Curved Shallow Flow},
journaltitle = {Journal of Computational and Theoretical Transport},
volume = {52},
number = {7},
pages = {475--505},
date = {2023-11-10},
issn = {2332-4309},
doi = {10.1080/23324309.2023.2284202},
url = {https://www.tandfonline.com/doi/full/10.1080/23324309.2023.2284202},
}The full list of third-party software, numerical methods and models Zoomy builds on, with how to cite each, is on the Acknowledgements page of the documentation. The BibTeX for all of them is in docs/book/references/third_party.bib.
Zoomy builds on, integrates with, or uses logos from the following open-source projects. We gratefully acknowledge their authors and the licenses under which we use their work:
| Project | Role in Zoomy | License | Notes |
|---|---|---|---|
| SymPy | symbolic modeling layer | BSD-3-Clause | logo by Fredrik Johansson, free use under the same terms as SymPy |
| NumPy | reference solver, arrays | BSD-3-Clause | |
| JAX | zoomy_jax backend |
Apache-2.0 | |
| Firedrake | zoomy_firedrake backend |
LGPLv3+ | |
| FEniCSx / DOLFINx | zoomy_fenicsx backend |
LGPLv3+ | |
| PETSc | DMPlex backend, Firedrake | BSD-2-Clause | |
| AMReX | zoomy_amrex backend |
BSD-3-Clause | |
| OpenFOAM | OpenFOAM backend | GPL-3.0 | logo: Carnby, CC BY-SA 4.0, via Wikimedia Commons |
| preCICE | coupling framework | LGPLv3+ | |
| Gmsh | mesh generation | GPLv2+ | |
| ParaView | post-processing | BSD-3-Clause | macros in tools/paraview_macros/ |
| Jupyter Book | this documentation site | BSD-3-Clause | |
| JupyterLite / Pyodide | in-browser notebook execution | BSD-3-Clause / MPL-2.0 |
If you spot a project we use but haven't credited, please open an issue.

