Underworld2

Underworld2: Python Geodynamics Modelling for Desktop, HPC and Cloud - Published in JOSS (2020)

https://github.com/underworldcode/underworld2

Science Score: 95.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 19 DOI reference(s) in README and JOSS metadata
  • Academic publication links
    Links to: joss.theoj.org, zenodo.org
  • Committers with academic emails
    14 of 34 committers (41.2%) from academic institutions
  • Institutional organization owner
  • JOSS paper metadata
    Published in Journal of Open Source Software

Keywords

auscope docker finite-element-methods geodynamics hacktoberfest hacktoberfest2020 hacktoberfest2021 particle-in-cell petsc python underworld

Keywords from Contributors

geophysics geodynamics-models underworld-modelling meshes spherical-geometry triangulation-delaunay

Scientific Fields

Mathematics Computer Science - 40% confidence
Last synced: 4 months ago · JSON representation

Repository

underworld2: A parallel, particle-in-cell, finite element code for Geodynamics.

Basic Info
Statistics
  • Stars: 196
  • Watchers: 29
  • Forks: 64
  • Open Issues: 49
  • Releases: 35
Topics
auscope docker finite-element-methods geodynamics hacktoberfest hacktoberfest2020 hacktoberfest2021 particle-in-cell petsc python underworld
Created over 10 years ago · Last pushed 4 months ago
Metadata Files
Readme Changelog Contributing License Zenodo

README.md

Underworld

Underworld Montage

DOI DOI Docs Status Binder

Underworld is a Python API (Application Programming Interface) which provides functionality for the modelling of geodynamics processes, and is designed to work (almost) seamlessly across PC, cloud and HPC infrastructure. Primarily the API consists of a set of Python classes from which numerical geodynamics models may be constructed. The API also provides the tools required for inline analysis and data management. For scalability across multiprocessor platforms, MPI (Message Passing Interface) is leveraged, and for performant operation all heavy computations are executed within a statically typed layer.

Underworld2 provides capacity for modelling 2- and 3-dimensional geodynamics processes, utilising a particle-in-cell finite element approach for solution to Stokes flow type configurations. In Underworld, the finite element mesh can be static or dynamic, but it is not constrained to move in lock-step with the evolving geometry of the fluid. This hybrid approach allows Underworld to obtain accurate velocity solutions (on the mesh) for a given material configuration, while simultaneously ensuring the accurate advection of material interfaces and history information (using particle swarms).

A primary aim of Underworld is to enable rapid prototyping of models, and to this end embedded visualisation (LavaVu) and modern development environments such as Jupyter Notebooks have been embraced, with the latter also providing a path to cloud computing amenability. The Jupyter Notebook front end provisioned across cloud facilities has also proven to be an appropriate environment for the use of Underworld as a teaching tool for solid Earth geoscience.

Underworld provides a minimal set of highly flexible core functionality, with user domain concerns left to the users themselves to construct. At the centre of this design is the Function class, which aims to provide a natural interface from which users can describe their problem mathematics. For example, the user may describe a viscosity which is piecewise constant, temperature dependent, or visco-elasto-plastic in behaviour. Simulation chronology is also fully exposed and the user is expected to explicitly specify when events should occur. This approach allows users to specify exactly their modelling requirements and provides transparency.

The Underworld development is led by Louis Moresi and is a collaboration between University of Melbourne, Monash University and the Australian National University. This project was enabled by AuScope and the Australian Government via the National Collaborative Research Infrastructure Strategy (NCRIS): (auscope.org.au). Additional funding for specific improvements and additional functionality has come from the Australian Research Council (http://www.arc.gov.au). The Python toolkit was funded by the NeCTAR eresearch_tools program. Underworld was originally developed in collaboration with the Victorian Partnership for Advanced Computing.

Underworld Geodynamics High-level API

image

image image

The UWGeodynamics module (from underworld import UWGoedynamics) facilitates prototyping of geodynamics models using Underworld. It can be seen as a set of high-level functions within the Underworld ecosystem. It is a means to quickly get the user into Underworld modelling and assumes very little knowledge in coding. The module make some assumptions based on how the user defines the boundary conditions and the properties of the materials (rocks, phases). Its simplicity comes with a relatively more rigid workflow (compared to the classic Underworld functions). However, the user can easily break the high level objects and get back to core Underworld function at any step of model design.

The UWGeodynamics is inspired by the Lithospheric Modelling Recipe (LMR) originally developed by Luke Mondy, Guillaume Duclaux and Patrice Rey for Underworld 1. Some of the naming conventions have been reused to facilitate the transition from LMR. The Rheological libraries is also taken from LMR.

As we think the low-level interface is more flexible, and in so allows for more complex models, we strongly encourage users to explore and break the High Level functions.

We hope that the user will naturally move to the low-level functionalities as he or her gets more confident, and by doing so will access the wide range of possibilities offered by Underworld.

Documentation

Please visit the Underworld documentation site for an overview of installation, numerical methods, usage and the API reference.

https://underworld2.readthedocs.io

In particular, the Getting Started section of the User Guide might be useful place to start.

Trying out Underworld

You can try out the code immediately via a Jupyter Binder cloud instance. The Binder environment is identical to that obtained through running an Underworld Docker image locally. Note that it can take a while for the site to fire up and that it will time-out after 30 minutes of inactivity and reset if you log back in.

| | | |-|-| | Try v2.16.x | Binder | | Try dev | Binder |

Getting Underworld

The Underworld2 Docker container is the recommended method of installation on Windows, Mac OSX and Linux. Native compilation is generally not recommended for personal computers, although may be necessary in HPC environments which do not support containerisation.

Please refer to the documentation site for further information.

Where to find things

  • underworld - Underworld python modules.
  • docs/examples - Basic usage examples.
  • docs/user_guide - The user guide.
  • docs/cheatsheet - One pager with quick examples.
  • docs/install_guides - HPC installation guides.
  • docs/tests - Development tests.

Privacy

Note that basic usage metrics are dispatched when you use Underworld. To opt out, set the UWNOUSAGE_METRICS environment variable. See PRIVACY.md for full details.

Licensing

Underworld is an open-source project licensed under LGPL Version 3. See LICENSE.md and LGPLv3.txt for details.

Note that for releases 2.9.0, 2.9.1, 2.9.2, 2.9.3 and 2.9.4, the incorrect text was erroneously included within LGPLv3.txt, although these releases must still to be considered as licensed under LGPL Version 3.

Citing Underworld

If you use this software, please remember to cite it using one or more of the following references.

To cite the Underworld/UWGeodynamics software package, please use:

Mansour, J., Giordani, J., Moresi, L., Beucher, R., Kaluza, O., Velic, M., Farrington, R., Quenette, S., Beall, A., 2020, Underworld2: Python Geodynamics Modelling for Desktop, HPC and Cloud, Journal of Open Source Software, 5(47), 1797, https://doi.org/10.21105/joss.01797

Beucher et al., (2019). UWGeodynamics: A teaching and research tool for numerical geodynamic modelling. Journal of Open Source Software, 4(36), 1136, https://doi.org/10.21105/joss.01136

If you would also like to cite the codebase itself, you may use the Zenodo reference:

https://doi.org/10.5281/zenodo.1436039

Note that the above DOI URL will always resolve to the latest Underworld2 release. DOIs for previous versions are also available via the above DOI.

Details of the algorithms are citeable via the following references:

Moresi, L., Dufour, F., and Muhlhaus, H.B., 2002, Mantle convection modeling with viscoelastic/brittle lithosphere: Numerical methodology and plate tectonic modeling: Pure And Applied Geophysics, v. 159, no. 10, p. 23352356, https://doi.org/10.1007/s00024-002-8738-3

Moresi, L., Dufour, F., and Muhlhaus, H.B., 2003, A Lagrangian integration point finite element method for large deformation modeling of viscoelastic geomaterials: Journal of Computational Physics, v. 184, no. 2, p. 476497, https://doi.org/10.1016/S0021-9991(02)00031-1

Moresi, L., Quenette, S., Lemiale, V., Mriaux, C., Appelbe, W., Mhlhaus, 2007, Computational approaches to studying non-linear dynamics of the crust and mantle: Phys. Earth Planet. Inter, v. 163, p. 6982, https://doi.org/10.1016/j.pepi.2007.06.009

Owner

  • Name: Underworld geodynamics software platform and tools
  • Login: underworldcode
  • Kind: organization
  • Email: help@underworldcode.org

Computational tools for the geodynamics community. Built in Australia, used all over (and under) the world. For support / help visit @underworld-community

JOSS Publication

Underworld2: Python Geodynamics Modelling for Desktop, HPC and Cloud
Published
March 06, 2020
Volume 5, Issue 47, Page 1797
Authors
John Mansour ORCID
Monash eResearch Centre, Monash University, Clayton, Australia.
Julian Giordani ORCID
School of Earth Science, The University of Melbourne, Melbourne, Australia.
Louis Moresi ORCID
Research School of Earth Sciences, The Australian National University, Canberra, Australia., School of Earth Science, The University of Melbourne, Melbourne, Australia.
Romain Beucher ORCID
School of Earth Science, The University of Melbourne, Melbourne, Australia.
Owen Kaluza ORCID
Monash eResearch Centre, Monash University, Clayton, Australia.
Mirko Velic
School of Earth Science, The University of Melbourne, Melbourne, Australia.
Rebecca Farrington ORCID
School of Earth Science, The University of Melbourne, Melbourne, Australia.
Steve Quenette ORCID
Monash eResearch Centre, Monash University, Clayton, Australia.
Adam Beall ORCID
School of Earth and Ocean Sciences, Cardiff University, Cardiff, UK.
Editor
Leonardo Uieda ORCID
Tags
geodynamics HPC FEM subduction

GitHub Events

Total
  • Create event: 8
  • Release event: 4
  • Issues event: 15
  • Watch event: 25
  • Delete event: 4
  • Issue comment event: 77
  • Push event: 93
  • Pull request review comment event: 6
  • Pull request review event: 12
  • Pull request event: 23
  • Fork event: 7
Last Year
  • Create event: 8
  • Release event: 4
  • Issues event: 16
  • Watch event: 25
  • Delete event: 4
  • Issue comment event: 79
  • Push event: 93
  • Pull request review comment event: 6
  • Pull request review event: 12
  • Pull request event: 23
  • Fork event: 7

Committers

Last synced: 9 months ago

All Time
  • Total Commits: 1,967
  • Total Committers: 34
  • Avg Commits per committer: 57.853
  • Development Distribution Score (DDS): 0.647
Past Year
  • Commits: 4
  • Committers: 1
  • Avg Commits per committer: 4.0
  • Development Distribution Score (DDS): 0.0
Top Committers
Name Email Commits
jmansour m****n@g****m 694
julian h****s@g****m 482
Owen Kaluza o****a@m****u 316
Romain Beucher r****r@u****u 127
Romain Beucher r****r@a****u 60
Gareth Kennedy g****y@h****m 58
Rebecca Farrington R****n@u****u 56
Louis Moresi l****i@u****u 53
Mirko Velic m****c@u****u 25
Mirko Velic m****c@g****m 16
adambeall1 a****1@g****m 14
Arijit Laik a****m@g****m 10
Rebecca Farrington r****n@u****u 8
Ben Knight 5****1 7
Romain Beucher r****r@u****u 7
john mansour j****r@m****u 7
Romain Beucher r****r@g****o 3
Dan Sandiford s****d@g****m 3
Leonardo Uieda l****a@g****m 2
John Mansour j****5@g****u 2
John Mansour j****r@s****l 2
Romain Beucher r****r@t****r 2
Romain Beucher r****r@t****r 2
Ben Mather b****1@g****m 1
Geoffrey Squire s****2@t****u 1
John Mansour j****5@g****u 1
Julian j****n@r****u 1
Julian Giordani j****i@m****u 1
Julian Giordani j****i@u****u 1
Julian Giordani j****n@m****u 1
and 4 more...

Issues and Pull Requests

Last synced: 4 months ago

All Time
  • Total issues: 130
  • Total pull requests: 52
  • Average time to close issues: 11 months
  • Average time to close pull requests: 16 days
  • Total issue authors: 61
  • Total pull request authors: 6
  • Average comments per issue: 5.25
  • Average comments per pull request: 0.6
  • Merged pull requests: 44
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 16
  • Pull requests: 26
  • Average time to close issues: 17 days
  • Average time to close pull requests: 5 days
  • Issue authors: 11
  • Pull request authors: 4
  • Average comments per issue: 4.44
  • Average comments per pull request: 0.31
  • Merged pull requests: 22
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • jmansour (10)
  • tingyang2004 (5)
  • tyszwh (5)
  • julesghub (5)
  • Peigen-L (5)
  • Cheese-Lvjx (4)
  • PatriceFRey (4)
  • jlikermanUPC (4)
  • lsli0116 (4)
  • rbeucher (4)
  • gthyagi (3)
  • cgoise (3)
  • ythaha (3)
  • hanybit (3)
  • Yidali26 (3)
Pull Request Authors
  • julesghub (35)
  • rbeucher (5)
  • NengLu (4)
  • tiannh7 (3)
  • arijitlaik (3)
  • bknight1 (2)
Top Labels
Issue Labels
enhancement (9) UWGeodynamics (2) bug (2) won't fix (1) next_release (1) docker (1) faq (1) Blog Post? (1)
Pull Request Labels

Packages

  • Total packages: 2
  • Total downloads:
    • pypi 93 last-month
  • Total docker downloads: 28
  • Total dependent packages: 0
    (may contain duplicates)
  • Total dependent repositories: 1
    (may contain duplicates)
  • Total versions: 18
  • Total maintainers: 3
proxy.golang.org: github.com/underworldcode/underworld2
  • Versions: 2
  • Dependent Packages: 0
  • Dependent Repositories: 0
Rankings
Dependent packages count: 5.4%
Average: 5.6%
Dependent repos count: 5.8%
Last synced: 4 months ago
pypi.org: underworld

Underworld2 is a python-friendly, parallel, scalable, easy-to-use toolkit for solving problems in solid and fluid mechanics.

  • Homepage: https://github.com/underworldcode/underworld2
  • Documentation: https://underworld.readthedocs.io/
  • License: ### Summary Underworld is an open-source, parallel, particle-in-cell, finite element geodynamics code [1,2,3]. Please refer to repository top level `README.md` for further information. ### Licensing 1) All Underworld source code is released under the LGPL-3 (See LGPLv3.txt). This covers all files `underworld` constituting the Underworld Python library, and any other material not explicitly identified under (2) below. 2) Notebooks, stand-alone documentation and Python scripts which show how the code is used and run are licensed under the Creative Commons Attribution 4.0 International License. To view a copy of this license, visit http://creativecommons.org/licenses/by/4.0/ or send a letter to Creative Commons, PO Box 1866, Mountain View, CA 94042, USA. We offer this licence to encourage you to modify and share the examples and use them to help you in your research. Where no individual creator is identified in these files, the appropriate attribution is "The Underworld Team". All the files covered by this license are found in the `UserGuide` directory. ### History Underworld has been in development since 2003. It has always been released under open-source license with the copyright held by the organisations contributing to its development. The underworld team has changed considerably during that time. For detailed information on the individuals and organisations contributing to the code, it is necessary to consult the repository history data and commit logs. Historical information beyond that found within the current repository is available upon request. ### Copyright holders Copyright Australian National University, 2020-2023 Copyright Melbourne University, 2014-2021 Copyright Monash University, 2003-2021 Copyright VPAC, 2003-2009 ### References 1. Moresi, L.N., Dufour, F., Muhlhaus, H.B., 2003. A Lagrangian integration point finite element method for large deformation modeling of viscoelastic geomaterials. Journal of Computational Physics 184, 476–497. 2. Moresi, L. N., S. Quenette, V. Lemiale, C. Mériaux, B. Appelbe, and H. B. Muhlhaus (2007), Computational approaches to studying non-linear dynamics of the crust and mantle, Physics of the Earth and …, 163(1-4), 69–82, doi:10.1016/j.pepi.2007.06.009. 3. Quenette, S., Moresi, L.N., Sunter, P.D., Appelbe, W.F., 2007. Explaining StGermain: An aspect oriented environment for building extensible computational mechanics modeling software, in:. Presented at the HIPS 2007 Workshop, Parallel and Distributed Processing Symposium, 2007. Proceedings. 19th IEEE International.
  • Latest release: 2.16.4
    published 9 months ago
  • Versions: 16
  • Dependent Packages: 0
  • Dependent Repositories: 1
  • Downloads: 93 Last month
  • Docker Downloads: 28
Rankings
Docker downloads count: 3.2%
Forks count: 5.7%
Stargazers count: 6.0%
Dependent packages count: 7.3%
Average: 10.6%
Downloads: 19.3%
Dependent repos count: 22.1%
Maintainers (3)
Last synced: 4 months ago

Dependencies

.github/workflows/kaiju.yml actions
  • ./actions/globalprotect * composite
  • actions/checkout v2 composite
.github/workflows/release.yml actions
  • actions/checkout v2 composite
  • thomaseizinger/create-pull-request 1.2.1 composite
  • thomaseizinger/create-pull-request 1.0.0 composite
actions/globalprotect/action.yml actions
  • Dockerfile * docker
Dockerfile docker
  • underworldcode/underworld2 latest build
actions/globalprotect/Dockerfile docker
  • alpine 3.13 build
.github/workflows/conda-build-test.yml actions
  • actions/checkout v4 composite
  • mamba-org/setup-micromamba v2 composite
docs/development/docker/base/Dockerfile docker
  • ubuntu 24.04 build
docs/development/docker/deepnote/Dockerfile docker
  • gcr.io/deepnote-200602/templates/deepnote latest build
docs/development/docker/lavavu/Dockerfile docker
  • ${BASE_IMAGE} latest build
  • base_runtime latest build
  • minimal latest build
docs/development/docker/petsc/Dockerfile docker
  • ${BASE_IMAGE} latest build
  • ${MPI_IMAGE} latest build
  • runtime latest build
docs/development/docker/stampede2/Dockerfile docker
  • ubuntu bionic build
docs/development/docker/underworld2/Dockerfile docker
  • ${BASE_IMAGE} latest build
  • ${LAVAVU_IMAGE} latest build
  • ${PETSC_IMAGE} latest build
  • runtime latest build
docs/development/docs_generator/requirements.txt pypi
  • jupyter * development
  • mock * development
  • pandoc * development
  • sphinx_rtd_theme * development
pyproject.toml pypi
  • h5py *
  • mpi4py *
  • numpy <2.0
  • pint *
  • scipy *
requirements.txt pypi
setup.py pypi
.github/workflows/conda_deploy.yml actions
  • actions/checkout v3 composite
  • conda-incubator/setup-miniconda v3 composite
.github/workflows/docker_build.yml.disable actions
  • actions/checkout v3 composite
  • actions/checkout v2 composite
  • docker/build-push-action v3 composite
  • docker/build-push-action v2 composite
  • docker/login-action v2 composite
  • docker/setup-buildx-action v2 composite
  • docker/setup-qemu-action v2 composite
.github/workflows/pypi.yml actions
  • actions/checkout v4 composite
  • actions/setup-python v2 composite
conda/environment.yaml conda
  • cmake
  • compilers
  • h5py *
  • jupyterlab
  • jupytext
  • libxml2
  • matplotlib
  • mesalib
  • mpi4py
  • mpich
  • nbmake
  • ninja
  • numpy <2
  • petsc 3.21.5
  • pint
  • pip
  • pkg-config
  • pytest
  • python 3.11
  • scipy
  • swig >=4.0.0