ODINN.jl

SciML glacier model

https://github.com/ODINN-SciML/ODINN.jl

Science Score: 59.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 4 DOI reference(s) in README
  • Academic publication links
    Links to: zenodo.org
  • Committers with academic emails
    2 of 10 committers (20.0%) from academic institutions
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (15.5%) to scientific vocabulary

Keywords

climate cryosphere differential-equations glaciers julia scientific-machine-learning sciml

Keywords from Contributors

neural-sde pinn ode
Last synced: 6 months ago · JSON representation

Repository

SciML glacier model

Basic Info
Statistics
  • Stars: 82
  • Watchers: 4
  • Forks: 13
  • Open Issues: 41
  • Releases: 3
Topics
climate cryosphere differential-equations glaciers julia scientific-machine-learning sciml
Created almost 5 years ago · Last pushed 6 months ago
Metadata Files
Readme License

README.md

ODINN

Build Status Coverage CompatHelper

docs DOI

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 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:

```julia using ODINN

Data are automatically downloaded, retrieve the local paths

rgipaths = getrgi_paths()

We create the necessary parameters

params = Parameters( simulation = SimulationParameters( workingdir=workingdir, tspan=(2010.0, 2015.0), workers=5, rgipaths=rgipaths ), 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

nnmodel = NeuralNetwork(params) model = Model(iceflow = SIA2Dmodel(params; A=LawA(nnmodel, params)), massbalance = massbalance = TImodel1(params; DDF=6.0/1000.0, accfactor=1.2/1000.0), regressors = (; A=nnmodel))

We initialize the glaciers with all the necessary data

glaciers = initializeglaciers(rgiids, 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

  • Name: ODINN
  • Login: ODINN-SciML
  • Kind: organization
  • Location: Earth

Global climate-glacier interactions modelling with Universal Differential Equations

GitHub Events

Total
  • Fork event: 4
  • Create event: 129
  • Commit comment event: 4
  • Release event: 1
  • Issues event: 59
  • Watch event: 11
  • Delete event: 132
  • Issue comment event: 160
  • Member event: 1
  • Push event: 292
  • Pull request review event: 114
  • Pull request review comment event: 147
  • Pull request event: 276
Last Year
  • Fork event: 4
  • Create event: 129
  • Commit comment event: 4
  • Release event: 1
  • Issues event: 59
  • Watch event: 11
  • Delete event: 132
  • Issue comment event: 160
  • Member event: 1
  • Push event: 292
  • Pull request review event: 114
  • Pull request review comment event: 147
  • Pull request event: 276

Committers

Last synced: 6 months ago

All Time
  • Total Commits: 554
  • Total Committers: 10
  • Avg Commits per committer: 55.4
  • Development Distribution Score (DDS): 0.442
Past Year
  • Commits: 222
  • Committers: 7
  • Avg Commits per committer: 31.714
  • Development Distribution Score (DDS): 0.667
Top Committers
Name Email Commits
Jordi Bolibar j****r@g****m 309
Facundo Sapienza f****a@b****u 121
Alban Gossard a****d@g****m 74
CompatHelper Julia c****y@j****g 16
Facundo Sapienza f****1@g****m 12
Facundo Sapienza s****a@s****u 11
Jordi Bolibar j****5@g****m 4
mleseach 1****h@u****m 4
Bolibar b****1@s****l 2
Vivek 1****7@u****m 1
Committer Domains (Top 20 + Academic)

Issues and Pull Requests

Last synced: 6 months ago

All Time
  • Total issues: 105
  • Total pull requests: 395
  • Average time to close issues: 9 months
  • Average time to close pull requests: 20 days
  • Total issue authors: 4
  • Total pull request authors: 7
  • Average comments per issue: 1.1
  • Average comments per pull request: 0.44
  • Merged pull requests: 170
  • Bot issues: 0
  • Bot pull requests: 229
Past Year
  • Issues: 40
  • Pull requests: 301
  • Average time to close issues: 9 days
  • Average time to close pull requests: 15 days
  • Issue authors: 3
  • Pull request authors: 6
  • Average comments per issue: 0.28
  • Average comments per pull request: 0.42
  • Merged pull requests: 94
  • Bot issues: 0
  • Bot pull requests: 209
Top Authors
Issue Authors
  • JordiBolibar (70)
  • albangossard (20)
  • facusapienza21 (14)
  • JuliaTagBot (1)
Pull Request Authors
  • github-actions[bot] (229)
  • JordiBolibar (83)
  • albangossard (48)
  • facusapienza21 (28)
  • ChrisRackauckas (4)
  • vivekag7 (2)
  • mleseach (1)
Top Labels
Issue Labels
enhancement (43) performance (16) bug (16) documentation (9) CI (7) math (6) good first issue (3) code style (1)
Pull Request Labels
enhancement (17) CI needs new release (9) bug (8) math (6) sync (5) documentation (4) CI (3) performance (2)

Packages

  • Total packages: 3
  • Total downloads:
    • julia 1 total
  • Total dependent packages: 0
    (may contain duplicates)
  • Total dependent repositories: 0
    (may contain duplicates)
  • Total versions: 8
proxy.golang.org: github.com/ODINN-SciML/ODINN.jl
  • Versions: 3
  • Dependent Packages: 0
  • Dependent Repositories: 0
Rankings
Dependent packages count: 5.4%
Average: 5.6%
Dependent repos count: 5.8%
Last synced: 6 months ago
proxy.golang.org: github.com/odinn-sciml/odinn.jl
  • Versions: 3
  • Dependent Packages: 0
  • Dependent Repositories: 0
Rankings
Dependent packages count: 5.4%
Average: 5.6%
Dependent repos count: 5.8%
Last synced: 6 months ago
juliahub.com: ODINN

SciML glacier model

  • Versions: 2
  • Dependent Packages: 0
  • Dependent Repositories: 0
  • Downloads: 1 Total
Rankings
Dependent repos count: 9.9%
Forks count: 19.4%
Average: 23.3%
Stargazers count: 25.0%
Dependent packages count: 38.9%
Last synced: 6 months ago

Dependencies

.github/workflows/CI.yml actions
  • 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
.github/workflows/TagBot.yml actions
  • JuliaRegistries/TagBot v1 composite
.github/workflows/CompatHelper.yml actions
environment.yml pypi
  • certifi *
  • joblib *
  • oggm ==1.6.0
  • progressbar2 *