ODINN.jl
Global glacier model using Universal Differential Equations for climate-glacier interactions.
https://github.com/ODINN-SciML/ODINN.jl
Category: Cryosphere
Sub Category: Glacier and Ice Sheets
Keywords
climate cryosphere differential-equations glaciers julia scientific-machine-learning sciml
Keywords from Contributors
glacier-modelling iceflow glaciology
Last synced: about 18 hours ago
JSON representation
Repository metadata
SciML glacier model
- Host: GitHub
- URL: https://github.com/ODINN-SciML/ODINN.jl
- Owner: ODINN-SciML
- License: mit
- Created: 2021-03-17T16:12:29.000Z (about 4 years ago)
- Default Branch: main
- Last Pushed: 2025-04-25T07:27:38.000Z (2 days ago)
- Last Synced: 2025-04-25T08:34:47.109Z (2 days ago)
- Topics: climate, cryosphere, differential-equations, glaciers, julia, scientific-machine-learning, sciml
- Language: Julia
- Homepage:
- Size: 63.4 MB
- Stars: 80
- Watchers: 4
- Forks: 14
- Open Issues: 51
- Releases: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE
README.md
ODINN
⚠️ New publication available! ⚠️
For a detailed description of the model and the application of Universal Differential Equations to glacier ice flow modelling, take a look at our recent publication at Geoscientific Model Development.
About ODINN.jl
Global glacier evolution model using Universal Differential Equations to model and discover processes of climate-glacier interactions.
ODINN.jl
uses neural networks and differential equations in order to combine mechanistic models describing glacier physical processes (e.g. ice creep, basal sliding, surface mass balance) with machine learning. Neural networks are used to learn parts of the equations. ODINN uses the Open Global Glacier Model (OGGM, Maussion et al., 2019) through Gungnir as a basic framework to retrieve all the topographical and climate data for the initial state of the simulations. Then, all the simulations and processing are performed in Julia, benefitting from its high performance and the SciML ecosystem.
Overview of
ODINN.jl
’s workflow to perform functional inversions of glacier physical processes using Universal Differential Equations. The parameters ($θ$) of a function determining a given physical process ($D_θ$), expressed by a neural network $NN_θ$, are optimized in order to minimize a loss function. In this example, the physical to be inferred law was constrained only by climate data, but any other proxies of interest can be used to design it. The climate data, and therefore the glacier mass balance, are downscaled (i.e. it depends on $S$), with $S$ being updated by the solver, thus dynamically updating the state of the simulation for a given timestep.
Installing ODINN
In order to install ODINN
in a given environment, just do in the REPL:
julia> ] # enter Pkg mode
(@v1.10) pkg> activate MyEnvironment # or activate whatever path for the Julia environment
(MyEnvironment) pkg> add ODINN
Using OGGM for the initial conditions of the training/simulations
OGGM works as a front-end of ODINN, utilizing all its tools to retrieve RGI data, topographical data, climate data and other datasets from the OGGM shop. We use these data to specify the initial state of the simulations, and to retrieve the climate data to force the model. Everything related to the mass balance and ice flow dynamics models is written 100% in Julia. This allows us to run tests with this toy model for any glacier on Earth. In order to choose a glacier, you just need to specify the RGI ID, which you can find here.
How to use ODINN
ODINN's architecture makes it really straightforward to retrieve all the necessary glacier and climate data for both the initial conditions and the loss function of a problem. Here's a quick example based on a FunctionalInversion
using Universal Differential Equations:
using ODINN
# Data are automatically downloaded, retrieve the local paths
rgi_paths = get_rgi_paths()
# We create the necessary parameters
params = Parameters(simulation = SimulationParameters(working_dir=working_dir,
tspan=(2010.0, 2015.0),
workers=5,
rgi_paths=rgi_paths),
hyper = Hyperparameters(batch_size=4,
epochs=10,
optimizer=ODINN.ADAM(0.01)),
UDE = UDEparameters(target = "A")
)
# We define which glacier RGI IDs we want to work with
rgi_ids = ["RGI60-11.03638", "RGI60-11.01450", "RGI60-08.00213", "RGI60-04.04351"]
# We specify a model based on an iceflow model, a mass balance model and a machine learning model
model = Model(iceflow = SIA2Dmodel(params),
mass_balance = mass_balance = TImodel1(params; DDF=6.0/1000.0, acc_factor=1.2/1000.0),
machine_learning = NN(params))
# We initialize the glaciers with all the necessary data
glaciers = initialize_glaciers(rgi_ids, params)
# We specify the type of simulation we want to perform
functional_inversion = FunctionalInversion(model, glaciers, params)
# And finally, we just run! the simulation
run!(functional_inversion)
How to cite 📖
If you want to cite this work, please use this BibTex citation from our latest paper:
@article{bolibar_sapienza_universal_2023,
title = {Universal differential equations for glacier ice flow modelling},
author = {Bolibar, J. and Sapienza, F. and Maussion, F. and Lguensat, R. and Wouters, B. and P\'erez, F.},
journal = {Geoscientific Model Development},
volume = {16},
year = {2023},
number = {22},
pages = {6671--6687},
url = {https://gmd.copernicus.org/articles/16/6671/2023/},
doi = {10.5194/gmd-16-6671-2023}
}
Owner metadata
- Name: ODINN
- Login: ODINN-SciML
- Email:
- Kind: organization
- Description: Global climate-glacier interactions modelling with Universal Differential Equations
- Website:
- Location: Earth
- Twitter: ODINN_org
- Company:
- Icon url: https://avatars.githubusercontent.com/u/80704461?v=4
- Repositories: 3
- Last ynced at: 2023-05-09T20:23:40.801Z
- Profile URL: https://github.com/ODINN-SciML
GitHub Events
Total
- Create event: 101
- Issues event: 41
- Watch event: 9
- Delete event: 105
- Issue comment event: 114
- Member event: 1
- Push event: 165
- Pull request review event: 75
- Pull request review comment event: 100
- Pull request event: 210
- Fork event: 4
Last Year
- Create event: 101
- Issues event: 41
- Watch event: 9
- Delete event: 105
- Issue comment event: 114
- Member event: 1
- Push event: 165
- Pull request review event: 75
- Pull request review comment event: 100
- Pull request event: 210
- Fork event: 4
Committers metadata
Last synced: 5 days ago
Total Commits: 427
Total Committers: 6
Avg Commits per committer: 71.167
Development Distribution Score (DDS): 0.314
Commits in past year: 103
Committers in past year: 5
Avg Commits per committer in past year: 20.6
Development Distribution Score (DDS) in past year: 0.65
Name | Commits | |
---|---|---|
Jordi Bolibar | j****r@g****m | 293 |
Facundo Sapienza | f****a@b****u | 97 |
Alban Gossard | a****d@g****m | 18 |
CompatHelper Julia | c****y@j****g | 16 |
Bolibar | b****1@s****l | 2 |
Vivek | 1****7 | 1 |
Committer domains:
Issue and Pull Request metadata
Last synced: 2 days ago
Total issues: 96
Total pull requests: 255
Average time to close issues: 8 months
Average time to close pull requests: 24 days
Total issue authors: 4
Total pull request authors: 6
Average comments per issue: 1.61
Average comments per pull request: 0.33
Merged pull request: 139
Bot issues: 0
Bot pull requests: 148
Past year issues: 39
Past year pull requests: 175
Past year average time to close issues: 3 months
Past year average time to close pull requests: about 1 month
Past year issue authors: 3
Past year pull request authors: 5
Past year average comments per issue: 1.41
Past year average comments per pull request: 0.41
Past year merged pull request: 64
Past year bot issues: 0
Past year bot pull requests: 135
Top Issue Authors
- JordiBolibar (72)
- facusapienza21 (13)
- albangossard (10)
- JuliaTagBot (1)
Top Pull Request Authors
- github-actions[bot] (148)
- JordiBolibar (74)
- albangossard (16)
- facusapienza21 (14)
- ChrisRackauckas (2)
- vivekag7 (1)
Top Issue Labels
- enhancement (41)
- performance (17)
- bug (12)
- documentation (8)
- CI (7)
- math (6)
- good first issue (3)
- code style (3)
Top Pull Request Labels
- enhancement (7)
- sync (3)
- math (3)
- bug (3)
- documentation (2)
- performance (1)
Package metadata
- Total packages: 1
-
Total downloads:
- julia: 1 total
- Total dependent packages: 0
- Total dependent repositories: 0
- Total versions: 1
juliahub.com: ODINN
SciML glacier model
- Homepage:
- Documentation: https://docs.juliahub.com/General/ODINN/stable/
- Licenses: MIT
- Latest release: 0.1.0 (published about 3 years ago)
- Last Synced: 2025-04-25T12:05:32.264Z (2 days ago)
- Versions: 1
- Dependent Packages: 0
- Dependent Repositories: 0
- Downloads: 1 Total
-
Rankings:
- Dependent repos count: 9.94%
- Forks count: 19.353%
- Average: 23.293%
- Stargazers count: 24.964%
- Dependent packages count: 38.915%
Dependencies
- actions/cache v1 composite
- actions/checkout v2 composite
- codecov/codecov-action v1 composite
- julia-actions/julia-buildpkg v1 composite
- julia-actions/julia-processcoverage v1 composite
- julia-actions/julia-runtest v1 composite
- julia-actions/setup-julia v1 composite
- JuliaRegistries/TagBot v1 composite
- certifi *
- joblib *
- oggm ==1.6.0
- progressbar2 *
Score: 6.666956792429206