This study aims to provide a graphics processing unit accelerated ice flow solver for unstructured meshes using the Shallow Shelf Approximation.
This repository relates to the original research article published in the Geoscientific Model Development journal:
@Article{gmd-xx,
AUTHOR = {Sandip, A. and R\"ass, L. and Morlighem, M.},
TITLE = {Graphics processing unit accelerated ice flow solver for unstructured meshes using the Shallow Shelf Approximation (FastIceFlo v1.0)},
JOURNAL = {Geoscientific Model Development},
VOLUME = {17},
YEAR = {2024},
NUMBER = {2},
PAGES = {899-909},
URL = {https://gmd.copernicus.org/articles/17/899/2024/},
DOI = {10.5194/gmd-17-899-2024}
}
We employ SSA to solve the momentum balance to predict ice-sheet flow:
where
As boundary conditions, we apply water pressure at the ice front
We reformulate the 2-D SSA steady-state momentum balance equations to incorporate the usually ignored inertial terms:
which allows us to turn the steady-state equations into transient diffusion of velocities
The weak form (assuming homogeneous Dirichlet conditions along all model boundaries for simplicity) reads:
where
Once discretized using the finite-element method, the matrix system to solve is:
where
For every nonlinear PT iteration, we compute the rate of change in velocity
To test the performance of the PT method beyond simple idealized geometries, we apply it to two regional-scale glaciers: Jakobshavn Isbræ, in western Greenland, and Pine IslandGlacier, in west Antarctica.
To generate the glacier model configurations, follow the steps listed below:
- Install ISSM and download the datasets
- Run
runme.m
script to generate the Jakobshavn Isbræ or Pine Island Glacier models - Save the
.mat
file and corresponding.bin
file
We developed a CUDA C implementation to solve the SSA equations using the PT approach on unstructured meshes. We choose a stopping criterion of
- Clone or download this repository.
- Transfer the
.bin
file generated along with files in src folder to a directory on a system hosting a (recent) Nvidia CUDA-capable GPU (here shown for a Tesla V100) - Plug in the damping parameter
$\gamma$ , non-linear viscosity relaxation scalar$\theta_{\mu}$ and relaxation$\theta_v$ for the chosen glacier model configuration and spatial resolution - Compile the
ssa_fem_pt.cu
routine
nvcc -arch=sm_70 -O3 -lineinfo ssa_fem_pt.cu -Ddmp=$damp -Dstability=$vel_rela -Drela=$visc_rela
- Run the generated executable
./a.out
- Along with a
.txt
file that stores the computational time, effective memory throughput and the PT iterations to meet stopping criterion, a.outbin
file will be generated. - Save the
.outbin
file
Jakobshavn Isbræ number of vertices | Block size | |||
---|---|---|---|---|
44229 | 0.98 | 0.99 | 3e-2 | 128 |
164681 | 0.987 | 0.98 | 7e-2 | 128 |
393771 | 0.99 | 0.99 | 1e-1 | 1024 |
667729 | 0.992 | 0.999 | 1e-1 | 1024 |
10664257 | 0.998 | 0.999 | 1e-1 | 1024 |
Pine Island Glacier number of vertices | Block size | |||
---|---|---|---|---|
14460 | 0.98 | 0.6 | 1e-1 | 128 |
35646 | 0.99 | 0.49 | 8e-2 | 256 |
69789 | 0.991 | 0.99 | 2e-2 | 512 |
1110705 | 0.998 | 0.995 | 1e-2 | 1024 |
Table 1. Optimal combination of damping parameter
To extract and plot the ice velocity distribution, follow the steps listed below:
- Transfer
.mat
file and the.outbin
files generated from steps 1 and 2 to a directory in MATLAB - Activate the ISSM environment
- Execute the following statements in the MATLAB command window:
Matlab load "insert name of .mat file here" md.miscellaneous.name = 'output'; md=loadresultsfromdisk(md, 'output.outbin'); plotmodel(md,'data',sqrt(md.results.PTsolution.Vx.^2 + md.results.PTsolution.Vy.^2));
- View results
For questions, comments and discussions please post in the FastIceFlo discussions discussions forum.