FastIsostasy.jl
❄ Fast and friendly glacial isostatic adjustment on CPU and GPU.
FastIsostasy is a friendly and flexible model that regionally computes the glacial isostatic adjustment (GIA) with laterally-variable mantle viscosity and lithospheric thickness. It is described in Swierczek-Jereczek et al. (2024) and is mainly adressed to ice-sheet modellers who seek for (1) a good representation of solid-Earth mechanics at virtually zero computational cost, (2) an approximation of the sea-level equation and (3) ready-to-use inversion tools to calibrate the model parameters to data. The simple interface of FastIsostasy allows to flexibly solve GIA problems within a few lines of code. The code is distributed under GNU general public license v3 and was succesfully benchmarked against analytical, 1D GIA and 3D GIA model solutions.
Based on the work of Cathles (1975) and Lingle and Clark (1985), an efficient way of solving for the vertical displacement was proposed by Bueler et al. (2007). FastIsostasy generalises this approach by relying on a hybrid Fourier/finite-difference collocation. Thanks to a simplification of the full problem from 3D to 2D space and the use of optimized software packages, running kiloyears of regional GIA with $\Delta x = \Delta y = 45 \, \mathrm{km}$ is a matter of seconds on a single CPU. For high resolution runs, the user can switch to GPU usage with minimal syntax change and enjoy the advantage of parallelization without requiring an HPC cluster. For GIA "purists", this package is likely to miss interesting processes but we belive that its ridiculous run-time can help to fast-prototype a problem before transfering it to a more comprehensive model.
If you have found this library useful, please consider starring it on GitHub. This gives us a lower bound of the satisfied user count.
Getting started
FastIsostasy.jl is a registered julia package. To install it, please run:
using Pkg
Pkg.add("FastIsostasy")
How to read the docs?
If you want a quick introduction to GIA, please go to Quick intro to GIA. If you want to have a thorough but still accessbile introduction to GIA, we highly recommend reading Whitehouse et al. (2019). If you want to get started right away, feel free to directly go to the Tutorial. If you face any problem using the code or want to know more about the functionalities of the package, visit the API reference. If you face a problem you cannot solve, please open a GitHub issue with a minimal and reproduceable example. We also welcome feature requests!
How to cite?
Swierczek-Jereczek, J., Montoya, M., Latychev, K., Robinson, A., Alvarez-Solas, J., & Mitrovica, J. (2024). FastIsostasy v1.0 – a regional, accelerated 2D glacial isostatic adjustment (GIA) model accounting for the lateral variability of the solid Earth. Geoscientific Model Development, 17(13), 5263-5290.
Julia ecosystem
FastIsostasy.jl was written thanks to the sheer amount of work that people invested in the vast and well-documented Julia ecosystem. Major help from packages deserves major appreciation, in particular for:
- FFTW.jl
- CUDA.jl
- ParallelStencil.jl
- Interpolations.jl
- OrdinaryDiffEq.jl
- DynamicalSystemsBase.jl
- KalmanEnsembleProcesses.jl
- SpecialFunctions.jl
- FastGaussQuadrature.jl
- And all the fantastic development tools that ease the every-day work so much: Documenter.jl, Literate.jl, Test.jl and DocumenterCitations.jl. Despite being quite unrelated, Oceananigans was a great template of how well geoscientific models can be documented.