A Python library for solving ice sheet modeling problems using Physics Informed Neural Networks
Project description
PINNICLE: Physics-Informed Neural Networks for Ice and CLimatE
PINNICLE (Physics-Informed Neural Networks for Ice and CLimatE) is an open-source Python library for modeling ice sheets using physics-informed neural networks. It is designed to integrate physical laws with observational data to solve both forward and inverse problems in glaciology. The library currently supports stress balance approximations, mass conservation, and time-dependent simulations, etc. Built on top of DeepXDE, it supports TensorFlow, PyTorch, and JAX backends.
Developed at the Department of Earth Sciences, Dartmouth College, USA.
🚀 Features
- Solve forward and inverse glaciological problems
- Built-in support for:
- Shelfy-Stream Approximation (SSA)
- Mono-Layer Higher-Order (MOLHO) stress balance
- Mass conservation
- Support for multiple backends: TensorFlow, PyTorch, JAX
- Integration with observational data: ISSM data format, MATLAB general
.mat, HDF5, NetCDF. - Fourier Feature Transform for input and output
- Fully modular and customizable architecture
📦 Installation
Install from PyPI (recommended)
pip install pinnicle
Install from source
git clone https://github.com/ISSMteam/PINNICLE.git
cd PINNICLE
pip install -e .
Dependencies
PINNICLE requires:
- Python ≥ 3.9
- DeepXDE
- NumPy, SciPy, pandas, matplotlib, scikit-learn
- mat73 (for MATLAB v7.3 files)
⚙️ Backend Selection
PINNICLE supports TensorFlow, PyTorch, and JAX backends via DeepXDE.
Choose your backend:
DDE_BACKEND=tensorflow python your_script.py
You can also export the backend globally (Linux/macOS):
export DDE_BACKEND=pytorch
Alternatively, edit ~/.deepxde/config.json:
{
"backend": "tensorflow"
}
🧪 Examples
Example scripts and input files are located in the examples/ directory.
-
Example 1: Inverse problem on Helheim Glacier using SSA to infer basal friction
-
Example 2: Simultaneous Inference of Basal Friction and Ice Rheology for Pine Island Glacier, Antarctica
-
Example 3: Time-dependent forward modeling of Helheim Glacier (2008–2009)
Each example includes a complete Python script and configuration dictionary.
📖 Documentation
Full documentation is available in the docs/ folder or at:
📚 Citation
If you use PINNICLE in your research, please cite:
Cheng, G., Krishna, M., and Morlighem, M.: A Python library for solving ice sheet modeling problems using physics-informed neural networks, PINNICLE v1.0, Geosci. Model Dev., 18, 5311–5327, https://doi.org/10.5194/gmd-18-5311-2025, 2025.
BibTeX:
@Article{gmd-18-5311-2025,
AUTHOR = {Cheng, G. and Krishna, M. and Morlighem, M.},
TITLE = {A Python library for solving ice sheet modeling problems using physics-informed neural networks, PINNICLE v1.0},
JOURNAL = {Geoscientific Model Development},
VOLUME = {18},
YEAR = {2025},
NUMBER = {16},
PAGES = {5311--5327},
URL = {https://gmd.copernicus.org/articles/18/5311/2025/},
DOI = {10.5194/gmd-18-5311-2025}
}
📂 License
This project is licensed under the GNU Lesser General Public License v2.1.
🤝 Acknowledgements
Supported by:
- National Science Foundation [#2118285, #2147601]
- Novo Nordisk Foundation [NNF23OC00807040]
- Heising-Simons Foundation [2019-1161, 2021-3059]
🔗 Links
- 📦 PyPI: pinnicle
- 📖 Documentation: pinnicle.readthedocs.io
- 📄 Zenodo Archive: doi.org/10.5281/zenodo.15643042
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pinnicle-1.0.4.tar.gz.
File metadata
- Download URL: pinnicle-1.0.4.tar.gz
- Upload date:
- Size: 74.8 MB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e61c991097df2c3fb598164ff16e1d0a1bd7e176c18fa590a32e7babec3168dd
|
|
| MD5 |
eb7fe9c43c10994d1a52c55829a029d0
|
|
| BLAKE2b-256 |
e0972428b59f11a04613d12f5e66930bda676a402657592f10576b658a703fc0
|
Provenance
The following attestation bundles were made for pinnicle-1.0.4.tar.gz:
Publisher:
python-publish.yml on ISSMteam/PINNICLE
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pinnicle-1.0.4.tar.gz -
Subject digest:
e61c991097df2c3fb598164ff16e1d0a1bd7e176c18fa590a32e7babec3168dd - Sigstore transparency entry: 662468713
- Sigstore integration time:
-
Permalink:
ISSMteam/PINNICLE@1bc91bd57265891e258d73160d70d1a0cebae79f -
Branch / Tag:
refs/tags/v1.0.4 - Owner: https://github.com/ISSMteam
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-publish.yml@1bc91bd57265891e258d73160d70d1a0cebae79f -
Trigger Event:
release
-
Statement type:
File details
Details for the file pinnicle-1.0.4-py3-none-any.whl.
File metadata
- Download URL: pinnicle-1.0.4-py3-none-any.whl
- Upload date:
- Size: 82.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
498d556844008f51e6b0c0878b7c06dd4e4c741e3069aa2a5828026ff24adc53
|
|
| MD5 |
4634f5638d9038e600b0e8644e77ad9e
|
|
| BLAKE2b-256 |
42821f0fc57eefba44035467cda9206423c280dd4b594804cf57d5acbccbf60e
|
Provenance
The following attestation bundles were made for pinnicle-1.0.4-py3-none-any.whl:
Publisher:
python-publish.yml on ISSMteam/PINNICLE
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pinnicle-1.0.4-py3-none-any.whl -
Subject digest:
498d556844008f51e6b0c0878b7c06dd4e4c741e3069aa2a5828026ff24adc53 - Sigstore transparency entry: 662468716
- Sigstore integration time:
-
Permalink:
ISSMteam/PINNICLE@1bc91bd57265891e258d73160d70d1a0cebae79f -
Branch / Tag:
refs/tags/v1.0.4 - Owner: https://github.com/ISSMteam
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-publish.yml@1bc91bd57265891e258d73160d70d1a0cebae79f -
Trigger Event:
release
-
Statement type: