-
Notifications
You must be signed in to change notification settings - Fork 10
JOSS paper #343
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
JOSS paper #343
Changes from 87 commits
Commits
Show all changes
118 commits
Select commit
Hold shift + click to select a range
fd2ecc0
add paper again
albert-de-montserrat 7661886
update MS and add figs
albert-de-montserrat 54bebe3
fix IGG name
albert-de-montserrat d466e5d
a few fixes
aelligp 3191721
update
aelligp e2002eb
add orcid and affiliations
aelligp 39dd83f
add hugo
aelligp ec1c268
new fig
albert-de-montserrat 3106526
update
albert-de-montserrat eacdeab
add ERC to funding
albert-de-montserrat 77978a8
couple of changes
albert-de-montserrat b6fed07
typos
albert-de-montserrat 2dc80f7
Add ENS to typo list
aelligp 6caac7d
fix?
aelligp 3affe80
fix again to allow white space
aelligp f5b8290
typos and small language improvements
Iddingsite 1ca8cc0
use `k` for conductivity instead of kappa
albert-de-montserrat 9746086
few changes
albert-de-montserrat 02dc7ee
Update docs/paper/joss.md
albert-de-montserrat 545546b
Update docs/paper/joss.md
albert-de-montserrat fb31763
Update docs/paper/joss.md
albert-de-montserrat 088b921
Update docs/paper/joss.md
albert-de-montserrat 321b3d8
Update docs/paper/joss.md
albert-de-montserrat ca3c301
Update docs/paper/joss.md
albert-de-montserrat a194b9b
Update docs/paper/joss.md
albert-de-montserrat 1a5370d
up
albert-de-montserrat 4b50a91
Update docs/paper/joss.md
albert-de-montserrat 0d05cfd
up
albert-de-montserrat ca1ee2f
up
albert-de-montserrat dcc062e
up
albert-de-montserrat bd2c400
Update docs/paper/joss.md
albert-de-montserrat d84d789
Update docs/paper/joss.md
albert-de-montserrat 92c4c89
Update docs/paper/joss.md
albert-de-montserrat 3520d4c
Update docs/paper/joss.md
albert-de-montserrat 638c697
Update docs/paper/joss.md
albert-de-montserrat 0b0a608
Update docs/paper/joss.md
albert-de-montserrat 1994f00
Update docs/paper/joss.md
albert-de-montserrat 173282d
Update docs/paper/joss.md
albert-de-montserrat 20bdee5
Update docs/paper/joss.md
albert-de-montserrat ef4945b
Apply suggestion from @luraess
albert-de-montserrat 112e684
up
albert-de-montserrat 802b376
up
albert-de-montserrat bea060e
Apply suggestion from @luraess
albert-de-montserrat 63b4a41
up
albert-de-montserrat e772a0a
up
albert-de-montserrat 7c1f95e
up
albert-de-montserrat ce9fabc
update MS and new figure
albert-de-montserrat 04c8ffd
Merge branch 'main' into adm/JOSS
albert-de-montserrat a760ad6
3D weak scaling fig
albert-de-montserrat 2e8f83f
typo
albert-de-montserrat 5ebcdc9
up
albert-de-montserrat 0cdf06b
rename files; add shearband figure more prominently
aelligp 473f673
typo
aelligp b0351ee
ref ∂GPU4GEO
aelligp 9afa5f0
fix name (oops)
aelligp c102499
update color
aelligp 93b4e93
white circle around inclusion
aelligp 25ed25e
update figure again
aelligp 6a3bf31
update README accordingly
aelligp 3198b12
Merge branch 'main' into adm/JOSS
aelligp 5bf5441
Merge branch 'main' into adm/JOSS
albert-de-montserrat 4e7d3f8
few text changes
albert-de-montserrat c0c6f88
typo
albert-de-montserrat 9ea42a6
partials -> D()/D t
albert-de-montserrat 64f29d1
up
albert-de-montserrat d379dad
add JOSS GH Action
albert-de-montserrat bb652e1
change eq format
albert-de-montserrat 02736b2
fix broken refs
albert-de-montserrat 5803031
fix refs
albert-de-montserrat 22e2f31
fix some latex maths
albert-de-montserrat 5ff6b0a
typo
albert-de-montserrat de49300
Merge branch 'main' into adm/JOSS
aelligp 81112fa
Update terminology from 'visco-elasto-viscoelastic' to 'visco-elasto-…
albert-de-montserrat 3b7b8fc
Merge branch 'main' into adm/JOSS
albert-de-montserrat d6e44f3
shortened paper
albert-de-montserrat edb819b
update shortened version
albert-de-montserrat 65247b4
add missing DOI
aelligp 4d0cbbd
update paper file names
albert-de-montserrat b50fde0
Merge branch 'main' into adm/JOSS
albert-de-montserrat fd16b77
even shorter paper for JOSS
aelligp b30dfb3
update figure
aelligp 050322d
revised short paper
albert-de-montserrat f5de93c
Update docs/paper/paper.md
albert-de-montserrat dce746f
typo
albert-de-montserrat a7841fb
shorten even more
albert-de-montserrat 02918ab
Merge branch 'main' into adm/JOSS
albert-de-montserrat 4cbcaa9
update MS and refs
albert-de-montserrat 303b1f1
add Hugo's suggestion
albert-de-montserrat e832d6e
update links to docs
albert-de-montserrat e79e643
update shear band docs
albert-de-montserrat ce1e3ba
update SB miniapp
albert-de-montserrat b431efc
Merge branch 'main' into adm/JOSS
albert-de-montserrat a5dd183
Ludovic editing suggestion
albert-de-montserrat 2259462
update models figure & caption
albert-de-montserrat 61eadb2
update parallel efficiency definition
albert-de-montserrat 7732ac4
update fig background
albert-de-montserrat c15bdd7
crop figure...
albert-de-montserrat 68f5449
Merge branch 'main' into adm/JOSS
albert-de-montserrat d50a52a
fix syntax in `plume3D.md`
albert-de-montserrat 4c4c212
Implement most of Rene's suggestions (#399) & some grammar/typo fixes
albert-de-montserrat 9468204
add last suggestion from Rene's comments
albert-de-montserrat 8ce1a99
Merge branch 'main' into adm/JOSS
aelligp 080fd8e
Merge branch 'main' into adm/JOSS
albert-de-montserrat 7d580bd
fix markdown rendering
albert-de-montserrat 325ad02
remove file
albert-de-montserrat 7f5e2f9
fix fig 3 caption
albert-de-montserrat 592b7d1
Merge branch 'main' into adm/JOSS
albert-de-montserrat 5a8a874
fix references
albert-de-montserrat 8ab4fa5
change lamem ref
albert-de-montserrat 744d212
update CONTRIBUTING.md
albert-de-montserrat 6fe59be
update PR template
albert-de-montserrat 7e5bd0e
Merge branch 'main' into adm/JOSS
albert-de-montserrat 7a846af
update URL to PR template
albert-de-montserrat 84f7946
update AUTHORS.md
albert-de-montserrat 04671c1
replace GLMakie by CairoMakie
albert-de-montserrat 08677ce
small change to PR template
albert-de-montserrat 2429ef0
fix references
albert-de-montserrat ea04195
Merge branch 'main' into adm/JOSS
albert-de-montserrat File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,24 @@ | ||
| name: Draft PDF | ||
| on: [push] | ||
|
|
||
| jobs: | ||
| paper: | ||
| runs-on: ubuntu-latest | ||
| name: Paper Draft | ||
| steps: | ||
| - name: Checkout | ||
| uses: actions/checkout@v4 | ||
| - name: Build draft PDF | ||
| uses: openjournals/openjournals-draft-action@master | ||
| with: | ||
| journal: joss | ||
| # This should be the path to the paper within your repo. | ||
| paper-path: docs/paper/paper.md | ||
| - name: Upload | ||
| uses: actions/upload-artifact@v4 | ||
| with: | ||
| name: paper | ||
| # This is the output path where Pandoc will write the compiled | ||
| # PDF. Note, this should be the same directory as the input | ||
| # paper.md | ||
| path: docs/paper/paper.pdf |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,242 @@ | ||
| @article{bezanson2017julia, | ||
| author = {Bezanson, Jeff and Edelman, Alan and Karpinski, Stefan and Shah, Viral B.}, | ||
| title = {Julia: A Fresh Approach to Numerical Computing}, | ||
| journal = {SIAM Review}, | ||
| volume = {59}, | ||
| number = {1}, | ||
| pages = {65-98}, | ||
| year = {2017}, | ||
| doi = {10.1137/141000671}, | ||
| URL = {https://doi.org/10.1137/141000671} | ||
| } | ||
|
|
||
| @article{GeoParams, | ||
| author = {Kaus, Boris and de Montserrat, Albert and Medinger, Nils and Aellig, Pascal and Dominguez, Hugo and Riel, Nicolas and Cosarinsky, Matias and Spang, Arne and Berlie, Nicolas and Kiss, Daniel and Ranocha, Hendrik and Fuchs, Lukas and Frasunkiewicz, Jacob and Räss, Ludovic and Lueder, Mona and Seiler, Alexander and Duretz, Thibault}, | ||
| title = {GeoParams.jl: v0.7.4}, | ||
| year = {2025}, | ||
| URL = {https://doi.org/10.5281/zenodo.15719680} | ||
| } | ||
|
|
||
| @article{JustPIC, | ||
| author = {de Montserrat, Albert and Aellig, Pascal and Räss, Ludovic and Duretz, Thibault and Utkin, Ivan and Kaus, Boris and Ranocha, Hendrik}, | ||
| title = {JustPIC.jl: v0.5.10}, | ||
| year = {2025}, | ||
| URL = {https://doi.org/10.5281/zenodo.15704602} | ||
| } | ||
|
|
||
| @article{WriteVTK, | ||
| author = {Polanco, J. I.}, | ||
| title = {WriteVTK.jl: a Julia package for writing VTK XML files (v1.18.0)}, | ||
| year = {2023}, | ||
| URL = {https://doi.org/10.5281/zenodo.7804590} | ||
| } | ||
| @article{Byrne2021, | ||
| doi = {10.21105/jcon.00068}, | ||
| url = {https://doi.org/10.21105/jcon.00068}, | ||
| year = {2021}, | ||
| publisher = {The Open Journal}, | ||
| volume = {1}, | ||
| number = {1}, | ||
| pages = {68}, | ||
| author = {Simon Byrne and Lucas C. Wilcox and Valentin Churavy}, | ||
| title = {MPI.jl: Julia bindings for the Message Passing Interface}, | ||
| journal = {Proceedings of the JuliaCon Conferences} | ||
| } | ||
|
|
||
| @article{besard2018juliagpu, | ||
| author = {Besard, Tim and Foket, Christophe and De Sutter, Bjorn}, | ||
| title = {Effective Extensible Programming: Unleashing {Julia} on {GPUs}}, | ||
| journal = {IEEE Transactions on Parallel and Distributed Systems}, | ||
| year = {2018}, | ||
| doi = {10.1109/TPDS.2018.2872064}, | ||
| ISSN = {1045-9219}, | ||
| archivePrefix = {arXiv}, | ||
| eprint = {1712.03112}, | ||
| primaryClass = {cs.PL}, | ||
| } | ||
|
|
||
| @article{larionov2017variational, | ||
| author = {Larionov, Egor and Batty, Christopher and Bridson, Robert}, | ||
| title = {Variational stokes: a unified pressure-viscosity solver for accurate viscous liquids}, | ||
| year = {2017}, | ||
| issue_date = {August 2017}, | ||
| publisher = {Association for Computing Machinery}, | ||
| address = {New York, NY, USA}, | ||
| volume = {36}, | ||
| number = {4}, | ||
| issn = {0730-0301}, | ||
| url = {https://doi.org/10.1145/3072959.3073628}, | ||
| doi = {10.1145/3072959.3073628}, | ||
| } | ||
|
|
||
| @article{Harlow1965, | ||
| title = {{Numerical Calculation of Time‐Dependent Viscous Incompressible Flow of Fluid with Free Surface}}, | ||
| year = {1965}, | ||
| journal = {The Physics of Fluids}, | ||
| author = {Harlow, Francis H. and Welch, J. Eddie}, | ||
| number = {12}, | ||
| month = {12}, | ||
| pages = {2182--2189}, | ||
| volume = {8}, | ||
| publisher = {AIP Publishing}, | ||
| doi = {10.1063/1.1761178}, | ||
| issn = {0031-9171} | ||
| } | ||
|
|
||
| @article{Omlin2024, | ||
| doi = {10.21105/jcon.00137}, | ||
| url = {https://doi.org/10.21105/jcon.00137}, | ||
| year = {2024}, | ||
| publisher = {The Open Journal}, | ||
| volume = {6}, number = {65}, | ||
| pages = {137}, | ||
| author = {Samuel Omlin and Ludovic Räss and Ivan Utkin}, | ||
| title = {Distributed Parallelization of xPU Stencil Computations in Julia}, | ||
| journal = {Proceedings of the JuliaCon Conferences} | ||
| } | ||
|
|
||
| @article{i3elvis, | ||
| title={Robust characteristics method for modelling multiphase visco-elasto-plastic thermo-mechanical problems}, | ||
| author={Gerya, Taras V and Yuen, David A}, | ||
| journal={Physics of the Earth and Planetary Interiors}, | ||
| volume={163}, | ||
| number={1-4}, | ||
| pages={83--105}, | ||
| year={2007}, | ||
| note = {Computational Challenges in the Earth Sciences}, | ||
| issn = {0031-9201}, | ||
| doi = {https://doi.org/10.1016/j.pepi.2007.04.015}, | ||
| url = {https://www.sciencedirect.com/science/article/pii/S0031920107000969}, | ||
| publisher={Elsevier} | ||
| } | ||
|
|
||
| @article{gerya2015plate, | ||
| title={Plate tectonics on the Earth triggered by plume-induced subduction initiation}, | ||
| author={Gerya, Taras V and Stern, Robert J and Baes, Marzieh and Sobolev, Stephan V and Whattam, Scott A}, | ||
| journal={Nature}, | ||
| volume={527}, | ||
| number={7577}, | ||
| pages={221--225}, | ||
| year={2015}, | ||
| doi = {10.1038/nature15752}, | ||
| url = {https://doi.org/10.1038/nature15752}, | ||
| publisher={Nature Publishing Group UK London} | ||
| } | ||
|
|
||
| @article{Raess2022, | ||
| title={Assessing the robustness and scalability of the accelerated pseudo-transient method}, | ||
| author={R{\"a}ss, Ludovic and Utkin, Ivan and Duretz, Thibault and Omlin, Samuel and Podladchikov, Yuri Y}, | ||
| journal={Geoscientific Model Development}, | ||
| volume={15}, | ||
| number={14}, | ||
| pages={5757--5786}, | ||
| year={2022}, | ||
| url = {https://gmd.copernicus.org/articles/15/5757/2022/}, | ||
| doi = {10.5194/gmd-15-5757-2022}, | ||
| publisher={Copernicus Publications G{\"o}ttingen, Germany} | ||
| } | ||
|
|
||
| @article{stagyy, | ||
| title={Modelling compressible mantle convection with large viscosity contrasts in a three-dimensional spherical shell using the yin-yang grid}, | ||
| author={Tackley, Paul J}, | ||
| journal={Physics of the Earth and Planetary Interiors}, | ||
| volume={171}, | ||
| number={1-4}, | ||
| pages={7--18}, | ||
| year={2008}, | ||
| doi = {10.1016/j.pepi.2008.08.005}, | ||
| publisher={Elsevier} | ||
| } | ||
|
|
||
|
|
||
| @inproceedings{lamem, | ||
| title={Forward and inverse modelling of lithospheric deformation on geological timescales}, | ||
| author={Kaus, Boris JP and Popov, Anton A and Baumann, T and Pusok, A and Bauville, Arthur and Fernandez, Naiara and Collignon, Marine}, | ||
| booktitle={Proceedings of nic symposium}, | ||
| volume={48}, | ||
| pages={978--983}, | ||
| year={2016}, | ||
| organization={John von Neumann Institute for Computing (NIC), NIC Series} | ||
| } | ||
|
|
||
| @article{citcom, | ||
| title={Role of temperature-dependent viscosity and surface plates in spherical shell models of mantle convection}, | ||
| author={Zhong, Shijie and Zuber, Maria T and Moresi, Louis and Gurnis, Michael}, | ||
| journal={Journal of Geophysical Research: Solid Earth}, | ||
| volume={105}, | ||
| number={B5}, | ||
| pages={11063--11082}, | ||
| year={2000}, | ||
| doi = {https://doi.org/10.1029/2000JB900003}, | ||
| url = {https://agupubs.onlinelibrary.wiley.com/doi/abs/10.1029/2000JB900003}, | ||
| publisher={Wiley Online Library} | ||
| } | ||
|
|
||
| @inproceedings{ptatin, | ||
| title={pTatin3D: High-performance methods for long-term lithospheric dynamics}, | ||
| author={May, Dave A and Brown, Jed and Le Pourhiet, Laetitia}, | ||
| booktitle={SC'14: Proceedings of the International Conference for High Performance Computing, Networking, Storage and Analysis}, | ||
| pages={274--284}, | ||
| year={2014}, | ||
| organization={IEEE}, | ||
| doi={10.1109/SC.2014.28} | ||
| } | ||
|
|
||
|
|
||
| @article{underworld, | ||
| title={Computational approaches to studying non-linear dynamics of the crust and mantle}, | ||
| author={Moresi, L and Quenette, Steve and Lemiale, Vincent and Meriaux, C and Appelbe, B and M{\"u}hlhaus, H-B}, | ||
| journal={Physics of the Earth and Planetary Interiors}, | ||
| volume={163}, | ||
| number={1-4}, | ||
| pages={69--82}, | ||
| year={2007}, | ||
| doi = {10.1016/j.pepi.2007.06.009}, | ||
| publisher={Elsevier} | ||
| } | ||
|
|
||
| @article{lacode, | ||
| title={LaCoDe: a Lagrangian two-dimensional thermo-mechanical code for large-strain compressible visco-elastic geodynamical modeling}, | ||
| author={de Montserrat, Albert and Morgan, Jason P and Hasenclever, J{\"o}rg}, | ||
| journal={Tectonophysics}, | ||
| volume={767}, | ||
| pages={228173}, | ||
| year={2019}, | ||
| doi = {10.1016/j.tecto.2019.228173}, | ||
| url = {https://www.sciencedirect.com/science/article/pii/S004019511930280X}, | ||
| publisher={Elsevier} | ||
| } | ||
|
|
||
| @misc{aspect, | ||
| title = {{{ASPECT}: Advanced Solver for Planetary Evolution, Convection, and Tectonics, User Manual}}, | ||
| author = {Bangerth, Wolfgang and Dannberg, Juliane and Fraters, Menno and Gassmoeller, Rene and Glerum, Anne and Heister, Timo and Myhill, Robert and Naliboff, John}, | ||
| year = {2024}, | ||
| month = dec, | ||
| DOI = {10.6084/m9.figshare.4865333}, | ||
| URL = {https://doi.org/10.6084/m9.figshare.4865333} | ||
| } | ||
|
|
||
| @article{CUDA.jl, | ||
| author={Besard, Tim and Foket, Christophe and De Sutter, Bjorn}, | ||
| journal={IEEE Transactions on Parallel and Distributed Systems}, | ||
| title={Effective Extensible Programming: Unleashing Julia on GPUs}, | ||
| year={2019}, | ||
| volume={30}, | ||
| number={4}, | ||
| pages={827-841}, | ||
| keywords={Graphics processing units;Programming;Hardware;High level languages;Libraries;Graphics processors;very high-level languages;code generation;retargetable compilers}, | ||
| doi={10.1109/TPDS.2018.2872064} | ||
| } | ||
|
|
||
| @article{MPI.jl, | ||
| doi = {10.21105/jcon.00068}, | ||
| url = {https://doi.org/10.21105/jcon.00068}, | ||
| year = {2021}, | ||
| publisher = {The Open Journal}, | ||
| volume = {1}, | ||
| number = {1}, | ||
| pages = {68}, | ||
| author = {Simon Byrne and Lucas C. Wilcox and Valentin Churavy}, | ||
| title = {MPI.jl: Julia bindings for the Message Passing Interface}, | ||
| journal = {Proceedings of the JuliaCon Conferences} | ||
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change | ||||
|---|---|---|---|---|---|---|
| @@ -0,0 +1,95 @@ | ||||||
| --- | ||||||
| title: '`JustRelax.jl`: A Julia package for geodynamic modeling with matrix-free solvers' | ||||||
| tags: | ||||||
| - Julia | ||||||
| - Geosciences | ||||||
| - Geodynamics | ||||||
| - Tectonics | ||||||
| - Geophysics | ||||||
| - Computational geosciences | ||||||
| authors: | ||||||
| - name: Albert de Montserrat | ||||||
| orcid: 0000-0003-1694-3735 | ||||||
| affiliation: 1 | ||||||
| - name: Pascal S. Aellig | ||||||
| orcid: 0009-0008-9039-5646 | ||||||
| affiliation: 2 | ||||||
| - name: Christian Schuler | ||||||
| orcid: 0009-0004-9873-9774 | ||||||
| affiliation: 2 | ||||||
| - name: Ivan Navarrete | ||||||
| orcid: 0009-0004-9272-511X | ||||||
| affiliation: 3 | ||||||
| - name: Ludovic Räss | ||||||
| orcid: 0000-0002-1136-899X | ||||||
| affiliation: 4 | ||||||
| - name: Lukas Fuchs | ||||||
| orcid: 0000-0002-9165-6384 | ||||||
| affiliation: 5 | ||||||
| - name: Boris J.P. Kaus | ||||||
| orcid: 0000-0002-0247-8660 | ||||||
| affiliation: 2 | ||||||
| - name: Hugo Dominguez | ||||||
| orcid: 0009-0001-8425-0503 | ||||||
| affiliation: 2 | ||||||
|
|
||||||
| affiliations: | ||||||
| - name: ETH Zürich, Switzerland | ||||||
| index: 1 | ||||||
| - name: Johannes Gutenberg-University Mainz, Germany | ||||||
| index: 2 | ||||||
| - name: École Normale Supérieure - PSL University, France | ||||||
| index: 3 | ||||||
| - name: University of Lausanne, Switzerland | ||||||
| index: 4 | ||||||
| - name: Frankfurt University, Germany | ||||||
| index: 5 | ||||||
|
|
||||||
| date: 21 October 2025 | ||||||
| bibliography: paper.bib | ||||||
| --- | ||||||
|
|
||||||
| # Summary | ||||||
|
|
||||||
| `JustRelax.jl` is an open source, highly portable, and high-performance [Julia](https://julialang.org/) [@bezanson2017julia] package designed for geodynamic modeling. It employs the Accelerated Pseudo-Transient (APT) method —a matrix-free, embarrassingly parallel iterative method— to solve the Stokes and diffusion equations, making it well-suited to exploit Graphics Processing Unit (GPU) hardware accelerators. | ||||||
|
|
||||||
| `JustRelax.jl` incorporates a wide range of features critical to computational geodynamics, including complex and highly non-linear rheologies, free surface, and a particle-in-cell method to advect material information. Several of the features available in `JustRelax.jl` are are outsourced to specialized external packages, reducing the core code base, and improving maintainability and reusability. | ||||||
|
|
||||||
| # Statement of Need | ||||||
|
|
||||||
| Simulating Earth's thermo-mechanical evolution requires solving coupled, nonlinear Stokes and heat‑diffusion problems across large domains with sharp material contrasts, complex rheologies and long time scales. These calculations are computationally demanding and traditionally rely on monolithic, CPU‑oriented codes built around matrix‑based linear solvers. Such designs are hard to port efficiently to modern heterogeneous HPC systems (e.g. multi‑GPU nodes). | ||||||
|
|
||||||
| `JustRelax.jl` addresses this gap by providing a compact, modular, GPU‑ready toolkit implemented in Julia. It implements a matrix‑free Accelerated Pseudo‑Transient (APT) solver that reduces global linear‑algebra bottlenecks and ports efficiently to accelerators, while outsourcing some physical calculations, parallalelization, and IO to other packages, shown in \ref{fig:dependencies}. This keeps the core solver as contained as possible and makes the software more flexible. Julia’s high‑level syntax and package manager simplify installation, scripting and extension, lowering the barrier for students and researchers to prototype and test new physics. | ||||||
|
|
||||||
|  [@GeoParams]), Particles-in-Cell based advection ([JustPIC.jl](https://github.com/JuliaGeodynamics/JustPIC.jl) [@JustPIC], where data structures are handled by [CellArrays.jl](https://github.com/omlins/CellArrays.jl)); b) parallelization: domain decomposition and distributed parallelism is handled by [ImplicitGlobalGrid.jl](https://github.com/eth-cscs/ImplicitGlobalGrid.jl) [@Omlin2024] and [MPI.jl](https://github.com/JuliaParallel/MPI.jl) [Byrne2021], and backend abstraction is implemented with [ParallelStencil.jl](https://github.com/omlins/ParallelStencil.jl) [@Omlin2024], which supports Julia's native multi-threading ([Threads.jl](https://docs.julialang.org/en/v1/manual/multi-threading/)), and NVIDIA ([CUDA.jl](https://github.com/JuliaGPU/CUDA.jl) [besard2018juliagpu]) and [AMDGPU.jl](https://github.com/JuliaGPU/AMDGPU.jl) GPU cards; and c) I/O and data visualization: HDF5 binary files ([HDF5.jl](https://github.com/JuliaIO/HDF5.jl) and [JLD2.jl](https://github.com/JuliaIO/JLD2.jl)), and VTK files for visualization ([WriteVTK.jl](https://github.com/JuliaVTK/WriteVTK.jl) [@WriteVTK]). \label{fig:dependencies}](figs/dependencies.png){width=75%} | ||||||
|
|
||||||
| In short, `JustRelax.jl` delivers a high‑performance, portable alternative to legacy geodynamics codes: it (i) exploits modern GPUs without extensive rewrites; (ii) avoids costly matrix assembly via matrix‑free algorithms; and (iii) promotes modularity, reproducibility, and rapid development. Together with CI, scalable I/O and checkpointing, these features make `JustRelax.jl` practical for both exploratory studies and production‑scale simulations on modern multi-XPU platforms. | ||||||
|
|
||||||
| # Methods | ||||||
|
|
||||||
| `JustRelax.jl` solves the (in)compressible Stokes equations, described by the equations of conservation of momentum and mass, as well as the conservation of energy equation. This system of equations is solved using the APT method [@Raess2022], which transforms the elliptic PDEs into damped wave equations by augmenting them with a second order pseudo-time derivative which should vanish upon convergence, thus recovering the original form of the PDE. For an in-depth description of this method, we refer the reader to @Raess2022. | ||||||
|
|
||||||
| # Package summary | ||||||
|
|
||||||
| `JustRelax.jl` features: | ||||||
|
|
||||||
| - **High-performance and scalable matrix-free solver**: `JustRelax.jl` implements the APT method for (in)compressible Stokes and diffusion problems to circumvent the need for computationally expensive linear algebra operations and direct solvers, significantly improving computational efficiency for large-scale simulations. The embarrassingly parallel nature of the APT method makes it an excellent solver to exploit hardware accelerators. The weak scaling curve of the 3D Stokes solver is shown in Fig. \ref{fig:scaling}, where the parallel efficiency is the wall-time of any simulation normalized against the wall-time of a simulation with a single process. Distributed parallelism across multiple CPU/GPU nodes is achieved with [ImplicitGlobalGrid.jl](https://github.com/eth-cscs/ImplicitGlobalGrid.jl) [@Omlin2024]. | ||||||
|
|
||||||
| {width=50%} | ||||||
|
|
||||||
| - **Advanced non-linear rheology**: The package supports a comprehensive suite of geologically relevant rheology models, such as visco-elasto-plastic and non-Newtonian constitutive laws, allowing for simulations with complex Earth-like materials, essential for modeling geological processes at a wide range of scales. All the local material physics calculations are computed by [GeoParams.jl](https://github.com/JuliaGeodynamics/GeoParams.jl) [@GeoParams]. | ||||||
|
|
||||||
| - **Portability**: `JustRelax.jl` is designed to run efficiently on multiple hardware architectures, including CPUs, GPUs (CUDA and AMD), and on multi-node clusters. This portability is achieved through Julia's advanced meta-programming capabilities, which generate the code for the specific target hardware during compile or parse time. This abstraction of the hardware backend is implemented in [ParallelStencil.jl](https://github.com/omlins/ParallelStencil.jl) [@Omlin2024]. | ||||||
|
|
||||||
| - **Continuous integration (CI) and testing**: The package is tested and validated against a suite of benchmarks and model examples to ensure correctness and performance on various hardware. The default CI/CD pipeline is implemented using GitHub Actions, automatically running tests on every commit and pull request. Single GPU CI is run on using JuliaGPU Buildkite and multi-GPU CI executes on the Swiss National Supercomputing Centre (CSCS) ALPS supercomputer. This ensures that the package remains robust and reliable across different hardware architectures and Julia versions. | ||||||
|
|
||||||
| # Examples | ||||||
|
|
||||||
| An extensive set of benchmarks and model examples are available in the GitHub repository of [`JustRelax.jl`](https://github.com/PTsolvers/`JustRelax.jl`). Some examples such as [shear band localization](https://ptsolvers.github.io/`JustRelax.jl`/dev/man/ShearBands), [2D subduction](https://ptsolvers.github.io/`JustRelax.jl`/dev/man/subduction2D/subduction2D) or the rise of a [3D plume](https://ptsolvers.github.io/`JustRelax.jl`/dev/man/plume3D/plume3D) are described in the [documentation](https://ptsolvers.github.io/`JustRelax.jl`/dev/). Here we limit ourselves to show some snapshots of the results of these examples in Fig. \ref{fig:examples}. | ||||||
|
||||||
| An extensive set of benchmarks and model examples are available in the GitHub repository of [`JustRelax.jl`](https://github.com/PTsolvers/JustRelax.jl). Some examples such as [shear band localization](https://ptsolvers.github.io/JustRelax.jl/dev/man/ShearBands), [2D subduction](https://ptsolvers.github.io/JustRelax.jl/dev/man/subduction2D/subduction2D) or the rise of a [3D plume](https://ptsolvers.github.io/JustRelax.jl/dev/man/plume3D/plume3D) are described in the [documentation](https://ptsolvers.github.io/JustRelax.jl/dev/). Here we limit ourselves to show some snapshots of the results of these examples in Fig. \ref{fig:examples}. |
luraess marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
luraess marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.