Skip to content

Commit

Permalink
Underworld v2.13 PR
Browse files Browse the repository at this point in the history
* Updating development version to 2.13-dev

* Release guidelines update

* Add Changes to Changelog (#604)

* Remoev UWGeodynamics installation from dockerfiles

* Petsc 3.17 compatibility and removing duplicate examples python scripts

* Add petsc variants to conda recipe

* Add python 3.10 conda builds to actions.

* Change PETSC and MPICH versions

* Fix MPICH complaining...

* Getting Dockerfiles ready: Ubuntu 22.04LTS and python 3.10.
Note that this will fail for now because of h5py not being
compatible. PR is on its way.

* Update README

* Update README

* Transfer UWGeo documentation to Underworld

* Remove python3-numpy-dbg for now

* Fix Documentation Links (UWGeodynamics)
Fix visualisation imports

* Fix imports (UWGeodynamics)

* Change Depth documentation toctree

* UWGeodynamics Merging

* Run tests

* Move tests

* H5py 3.7 is released, Use it in docker.

* Typo in Petsc Dockerfile

* Getting UWGeo internals to use uw2 mpi4py interface (#612)

* Getting UWGeo internals to use uw2 mpi4py interface
* Update CHANGES.md

* Add pypi to github actions

* Update PETSc Docker

* Prepare Release 3.13

* Add Cython to Dockerfile for petsc4py

* Fix Conda meta

* Add comment to docker.md

* Remove gadi install instructions

* cython

* Try this

* Remove six(py2 compatibility)

* Ad scipy for freesurface, surafeceprocesses etc.

* Fix annoying error message when compiling

* * Adding documentation re XDMF files (#614)

* Removing obsolete python user_guides

* Dockerfile fix.

Switching from virtualenv -> venv for create python virtualenv.
It appears the new Ubuntu/Python combo was causing the virtualenv paths to be different.

Co-authored-by: Romain Beucher <romain.beucher@anu.edu.au>
  • Loading branch information
julesghub and rbeucher committed Jul 12, 2022
1 parent 3c6af98 commit 7738aac
Show file tree
Hide file tree
Showing 240 changed files with 50,924 additions and 6,263 deletions.
14 changes: 10 additions & 4 deletions .github/workflows/CI.yml
Original file line number Diff line number Diff line change
Expand Up @@ -212,12 +212,12 @@ jobs:
- name: Build dependencies
run: |
apt-get update -qq
DEBIAN_FRONTEND=noninteractive apt-get install -yq --no-install-recommends build-essential pkg-config python3-dev swig libxml2-dev
DEBIAN_FRONTEND=noninteractive apt-get install -yq --no-install-recommends build-essential pkg-config python3-dev swig libxml2-dev cmake ninja-build
- name: Runtime dependencies
run: |
apt-get update -qq
DEBIAN_FRONTEND=noninteractive apt-get install -yq --no-install-recommends libxml2 libpython3.9
DEBIAN_FRONTEND=noninteractive apt-get install -yq --no-install-recommends libxml2 libpython3.10
- name: Checkout
uses: actions/checkout@v2
Expand All @@ -229,7 +229,13 @@ jobs:
- name: Run Tests
run: |
pip install pytest
python -m pytest -vvv docs/pytests
pytest -vvv docs/pytests
cd docs/test
cp -rf ../UWGeodynamics/examples UWGeodynamics/.
cp -rf ../UWGeodynamics/tutorials UWGeodynamics/.
cp -rf ../UWGeodynamics/benchmarks UWGeodynamics/.
pytest -vvv UWGeodynamics
conda_build:
name: Conda Build (Python ${{matrix.python-version}} ${{ matrix.os }})
Expand All @@ -238,7 +244,7 @@ jobs:
fail-fast: false
matrix:
os: ["ubuntu-latest", "macos-latest"]
python-version: ["3.7", "3.8", "3.9"]
python-version: ["3.7", "3.8", "3.9", "3.10"]
steps:
- uses: actions/checkout@v2
- uses: conda-incubator/setup-miniconda@v2
Expand Down
68 changes: 59 additions & 9 deletions .zenodo.json
Original file line number Diff line number Diff line change
@@ -1,24 +1,24 @@
{
"creators": [
{
"name": "John Mansour",
"affiliation": "Monash eResearch Centre, Monash University",
"orcid": "0000-0001-5865-1664"
"name": "Romain Beucher",
"affiliation": "Research School of Earth Sciences, The Australian National University",
"orcid": "0000-0003-3891-5444"
},
{
"name": "Julian Giordani",
"affiliation": "School of Earth Science, The University of Melbourne",
"affiliation": "School of Earth Science, The University of Sydney",
"orcid": "0000-0003-4515-9296"
},
{
"name": "Louis Moresi",
"affiliation": "Research School of Earth Sciences, The Australian National University; School of Earth Science, The University of Melbourne",
"affiliation": "Research School of Earth Sciences, The Australian National University",
"orcid": "0000-0003-3685-174X"
},
{
"name": "Romain Beucher",
"affiliation": "School of Earth Science, The University of Melbourne",
"orcid": "0000-0003-3891-5444"
"name": "John Mansour",
"affiliation": "Monash eResearch Centre, Monash University",
"orcid": "0000-0001-5865-1664"
},
{
"name": "Owen Kaluza",
Expand All @@ -43,7 +43,57 @@
"name": "Adam Beall",
"affiliation": "School of Earth and Ocean Sciences, Cardiff University",
"orcid": "0000-0002-7182-1864"
}
},
{
"name": "Dan Sandiford",
"affiliation": "Monash University",
"orcid": "0000-0002-2207-6837"
},
{
"name": "Luke Mondy",
"affiliation": "School of Geosciences, Earthbyte Research Group, The University of Sydney",
"orcid": "0000-0001-7779-509X"
},
{
"name": "Claire Mallard",
"affiliation": "School of Geosciences, Earthbyte Research Group, The University of Sydney",
"orcid": "0000-0003-2595-2414"
},
{
"name": "Patrice Rey",
"affiliation": "School of Geosciences, Earthbyte Research Group, The University of Sydney",
"orcid": "0000-0002-1767-8593"
},
{
"name": "Guillaume Duclaux",
"affiliation": "Laboratoire Géoazur, Université Nice Sophia Antipolis, Nice",
"orcid": "0000-0002-9512-7252"
},
{
"name": "Arijit Laik",
"affiliation": "Department of Earth Science, Faculty of Science, Vrije Universiteit",
"orcid": "0000-0002-3484-7985"
},
{
"name": "Sara Morón",
"affiliation": "School of Geosciences, Earthbyte Research Group, The University of Sydney",
"orcid": "0000-0002-1270-4377"
},
{
"name": "Adam Beall",
"affiliation": "School of Earth and Ocean Sciences, Cardiff University",
"orcid": "0000-0002-7182-1864"
},
{
"name": "Ben Knight",
"affiliation": "Monash University",
"orcid": "0000-0001-7919-2575"
},
{
"name": "Neng Lu",
"affiliation": "Research School of Earth Sciences, The Australian National University",
"orcid": "0000-0001-9424-2315"
}
],
"license": "lgpl-3.0",
"title": "Underworld2: Python Geodynamics Modelling for Desktop, HPC and Cloud",
Expand Down
10 changes: 10 additions & 0 deletions CHANGES.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,16 @@
CHANGES: Underworld2
=======================

Release 2.13-0 [2022-05-25]
-----------------------------

New:
* Merge UWGeodynamics into Underworld (`from underworld import UWGeodynamics as GEO`)
* Compatibility with petsc 3.17.
* Update Docker images: Ubuntu 22.04LTS and mpich 4.0.2, python 3.10, petsc 3.17.1
* Update install_docs/nci gadi


Release 2.12.0 [2022-01-31]
---------------------------
New:
Expand Down
2 changes: 1 addition & 1 deletion Dockerfile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
FROM underworldcode/underworld2:2.12.0b
FROM underworldcode/underworld2:latest

# Set the UW_MACHINE env variable for metrics
ENV UW_MACHINE binder
2 changes: 2 additions & 0 deletions MANIFEST.in
Original file line number Diff line number Diff line change
Expand Up @@ -5,3 +5,5 @@ recursive-include underworld *h
recursive-include underworld *hpp
recursive-include underworld *py
recursive-include underworld CMakeLists*
recursive-include underworld/UWGeodynamics/ressources *.json
recursive-include underworld/UWGeodynamics/uwgeo-data *
38 changes: 28 additions & 10 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
Underworld 2
============
Underworld
==========================

<p align="center">
<img width="400" src="https://github.com/underworldcode/underworld2/blob/development/docs/development/docs_generator/images/logo_black.svg">
Expand All @@ -12,15 +12,31 @@ Underworld 2
[![Docs Status](https://readthedocs.org/projects/underworld2/badge/?version=latest)](https://underworld2.readthedocs.io/en/latest/?badge=latest)
[![Binder](https://mybinder.org/badge.svg)](https://mybinder.org/v2/gh/underworldcode/underworld2/master)

[_Underworld 2_](http://www.underworldcode.org) 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.
[_Underworld_](http://www.underworldcode.org) 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 Underworld2 is to enable rapid prototyping of models, and to this end embedded visualisation ([_LavaVu_](https://github.com/OKaluza/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.
A primary aim of Underworld is to enable rapid prototyping of models, and to this end embedded visualisation ([_LavaVu_](https://github.com/OKaluza/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.

Underworld2 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.
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 Underworld2 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](https://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.
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](https://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](docs/development/docs_generator/images/UWGeo/logos.png)](https://www.earthbyte.org/the-basin-genesis-hub)

![image](docs/UWGeodynamics/tutorials/images/Tutorial1.gif)
![image](docs/development/docs_generator/images/UWGeo/collision_wedge.gif)

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
-------------
Expand All @@ -30,21 +46,21 @@ https://underworld2.readthedocs.io

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

Trying out Underworld2
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.

| | |
|-|-|
| [![Binder](https://mybinder.org/badge.svg)](https://mybinder.org/v2/gh/underworldcode/underworld2/v2.13.0b) | v2.13.0b |
| [![Binder](https://mybinder.org/badge.svg)](https://mybinder.org/v2/gh/underworldcode/underworld2/v2.12.0b) | v2.12.0b |
| [![Binder](https://mybinder.org/badge.svg)](https://mybinder.org/v2/gh/underworldcode/underworld2/v2.11.0b) | v2.11.0b |
| [![Binder](https://mybinder.org/badge.svg)](https://mybinder.org/v2/gh/underworldcode/underworld2/v2.10.0b) | v2.10.0b |
| [![Binder](https://mybinder.org/badge.svg)](https://mybinder.org/v2/gh/underworldcode/underworld2/development) | dev |


Getting Underworld2
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.

Expand Down Expand Up @@ -74,10 +90,12 @@ Citing Underworld
-----------------
If you use this software, please remember to cite it using one or more of the following references.

To cite the Underworld2 software package, please use:
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
Expand Down
30 changes: 0 additions & 30 deletions conda/LICENSE.md

This file was deleted.

3 changes: 3 additions & 0 deletions conda/conda_build_config.yaml
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
mpi:
- mpich
- openmpi [linux]
petsc:
- 3.16
- 3.17

0 comments on commit 7738aac

Please sign in to comment.