Skip to content

Commit 1d01bde

Browse files
julesghubbknight1NengLuarijitlaiktiannh7
authored
V2.16.x -> main (#715)
* V2.15.1 PR (#674) * starting for new release uw2.15 * Update surfaceProcesses.py Update timeField to record time of deposition of sediment in SP functions * Update surfaceProcesses.py Fix typo in 3D surface. Also reset time of the air material to the model time * Update surfaceProcesses.py fixed typo in func * updating the setonix jobs runners * Update surfaceProcesses.py Simplify 2D velocity and diffusivity SP functions * Update surfaceProcesses.py Didn't create object to bcast surface function to * Update surfaceProcesses Revert back to MPI gather of data over evaluate_global Update the examples * Adding melt dynamic heating to the advection diffusion solver see issue #669 * docker utils updates * Adding some final fixes to the dockerfile scripts * Update CHANGES.md * Remove obsolete glucifer bits * Update dockerfile Badlands install and CHANGES.md * Update CI for docker builds * Fixing the velocitySurface 2D and 3D implementation to handle restarts. Changes also include: * Renaming the surface tracers to prevent unexpected overwrites * The surfaceProcess class saving the passive tracer key to use during initialisation and solve. This is to make the code not save an instance of the pt to the swarm incase the pt is swapped in/out of Model memory. And helps with code readability. * Get the latest release of badlands from pypi --------- Co-authored-by: Ben Knight <55677727+bknight1@users.noreply.github.com> * starting 2.16.x * Moving to a specific badlands version & (arm compatible version of) jupyter-server extension command * update freesurf to 3D in uwg (#683) 1. update the free surface function in UWGeodynamics to a 3D version (see details in _freesurface.py). 2. add an example 1_23_05_FreeSurface_3D_Relaxation in docs/UWGeodynamics/examples/. * First cut at the GA4 trojan. Unfortunately GA4 isn't the same as the previous UA system by google. So location tracking is not enabled. Every import (where the python interpreter is up for ~2 seconds) will produce a GA4 event that records: - the version of Underworld used - the platform it's being used on - the number of mpi processors in the execution of python. This event is anonymous and no user data other than the above, and a random key (assigned during install) is sent to the GA4 server. This will provide valuable metrics to the Underworld development team. As previous users can disable this trojan by setting the environment variable UW_NO_USAGE_METRICS to any value, eg. export UW_NO_USAGE_METRICS=1 Also updating the version number to 2.16.0 * Update install instructions to include ninja and python 3.11 * Update UWGeoTutorials.rst fixing some missing links, pointed out to me by a user * move underworld directory into 'src'. Reduce the namespace issues. * Updating pyproject.toml and version number to support python 3.12 * Fix this test. 'imp' module is not longer in python 3.12. Moving to 'runpy' instead. * Turn off pedantic compiler warnings. StGermain is full of pointer / int conversion code that trips up sensitive compilers * moving everything to src/ to avoid namespace confusion * error in prefix of install dir * Remove this because it's causing lots of compiler warnings. * Adding a script clean.sh to quickly strip the repo of python build/cache files * Fixes to use 'src' strategy to install Underworld with pip install . * Updating cleaning script * manually send country/region ip info with this add to the uw trojan * Typo with white space * Missed this update * Geo information in G4A stats Not the best implementation but G4A doesn't support geographic data via it's Measurement Protocol. So the workaround ("hack") I came up with is to put the country name in the event title. The existing issue of G4A's lack of geo info. https://issuetracker.google.com/issues/237566549?pli=1 * Cleaning up some warnings from compilation. * Build changes for 2.16 1. setup.py -> pyproject.toml new standard, PEP 621. 2. all source code now under `src`. This is a start for the new standard. Main issue is build isolation forces CMake caching to break, so I have disabled the caching for now. * Update CHANGES.md * Rename ressources -> resources in UWGeodynamics The path ressources is still symlinked for backwards compatibility. * Misc changes for 2.16 * pyproject.toml with dyanmic versioning * UWGeodynamics/tutorial: ressources -> resources * simplify dependencies in pyproject.toml * remove erroneous '-python' option - only affecting gadi * reformating this with 'clang-format --styleLLVM' * Big update of Dockersfiles - More automation of versioning in `docker-build.sh` - Moving to Ubuntu 24.04 as base OS - Update to petsc 3.22.2 - using `podman` instead of `docker` * force lavavu-osmesa install with compilation * Switch to lavavu instead of lavavu-osmesa * Just use lavavu with --no-binary :lavavu: * Force numpy<2 in all dockers * add an extra check if lavavu is valid - for arm64 linux installation * Update the dockerfiles * Updates to conda files, ie latest petsc, numpy<2, cython>=3 * Fix typo when calling bash use 'set -x' instead * fix typo in dockerfile * Add pawsey container build recipe * Updates for v2.16.x * typo in check for lavavu * Add environment file * Docker updates (#711) * Update dockerfiles - Rebase to a python image based on Debian bookworm - Update runtime requirements (mainly for lavavu) - Modify bash script to allow switching between mpi implementation & change of base image * Remove pawsey files Can be built with the previous commit (8048d4c) * Update CHANGES.md * add some notes on the complex build system of UW2 * Updating the environment to include badlands. Coupling is a go. * Create conda-build-test.yml Use the conda/environment.yaml to provide a quick environment to compile and run the unit tests. * Update conda-build-test.yml Need to init the conda env to run things in the mamba activate env. * Update conda-build-test.yml * Update conda-build-test.yml * Update conda-build-test.yml * Update conda-build-test.yml get the tests running * Update conda-build-test.yml * Update conda-build-test.yml just get it working. Would like to split the steps of compiling and running the tests, but can't work out the syntax. * Update conda-build-test.yml Include mac-intel in tests * fixes for docker naming and notes of building in podman * add some documentation in the docker-builder.sh : * Fix spacing * Update Dockerfile To get mybinder links working * Update Dockerfile Fix warning of legacy variable UW_MACHINE * Update README.md Adding a new mybinder link * Update README.md * Dev into 2.16.x (#708) * Fix cohesion bug by adding epsilon1 and epsilon2 (#707) * Update conda-build-test.yml mac-os from build runner. Its not available and that's causing errors. --------- Co-authored-by: tiannh7 <156781848+tiannh7@users.noreply.github.com> * Sphinx-updates (#713) * Fix cohesion bug by adding epsilon1 and epsilon2 (#707) * Update conda-build-test.yml mac-os from build runner. Its not available and that's causing errors. * Update .readthedocs.yml * update conf.py path from "src/" --------- Co-authored-by: tiannh7 <156781848+tiannh7@users.noreply.github.com> --------- Co-authored-by: Ben Knight <55677727+bknight1@users.noreply.github.com> Co-authored-by: Neng Lu <57476594+NengLu@users.noreply.github.com> Co-authored-by: Arijit Laik <laikarijit@gmail.com> Co-authored-by: tiannh7 <156781848+tiannh7@users.noreply.github.com>
1 parent 7285306 commit 1d01bde

File tree

1,872 files changed

+2558
-1903
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

1,872 files changed

+2558
-1903
lines changed
+33
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
name: Conda Test Environment, with micromamba
2+
3+
on:
4+
push:
5+
branches:
6+
- v2.16.x
7+
pull_request:
8+
branches:
9+
- v2.16.x
10+
11+
jobs:
12+
test:
13+
runs-on: [ubuntu-latest] #, macos-latest]
14+
15+
steps:
16+
- name: Checkout repository
17+
uses: actions/checkout@v4
18+
19+
- name: Set up Micromamba
20+
uses: mamba-org/setup-micromamba@v2
21+
with:
22+
environment-file: conda/environment.yaml
23+
cache-environment: true
24+
cache-downloads: true
25+
init-shell: bash
26+
27+
- name: Compile the code, run tests
28+
shell: micromamba-shell {0}
29+
run: |
30+
micromamba list
31+
pip list
32+
pip install .
33+
pytest ./docs/pytests/tests.py ./docs/pytests/test_examples.py

.readthedocs.yml

+5-2
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,10 @@ version: 2
99
sphinx:
1010
configuration: docs/development/docs_generator/conf.py
1111

12+
build:
13+
os: ubuntu-22.04
14+
tools:
15+
python: "3.12"
1216
# Build documentation with MkDocs
1317
#mkdocs:
1418
# configuration: mkdocs.yml
@@ -18,6 +22,5 @@ sphinx:
1822

1923
# Optionally set the version of Python and requirements required to build your docs
2024
python:
21-
version: 3.7
2225
install:
23-
- requirements: docs/development/docs_generator/requirements.txt
26+
- requirements: docs/development/docs_generator/requirements.txt

CHANGES.md

100644100755
+17-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,20 @@
11
CHANGES: Underworld2
22
=======================
3+
Release 2.16.0 [2024]
4+
---------------------------
5+
New:
6+
* New 3D free surface implementation (tested). The vertical coordinates of the mesh nodes are rebuilt by being advected and interpolated from the surface velocities, and then solving the steady state heat equation to get a uniform distribution. See the related example in docs/UWGeodynamics/examples
7+
* Build changes PEP 621, pyproject.toml, and all source code now under `src`.
8+
* Move to Petsc-3.20.0.
9+
* New G4A stats module for user statics measurements.
10+
11+
Changes:
12+
* UWGeodynamics - 'ressources' folder is now 'resources' (but previous name is still supported).
13+
* Modify docker building script to allow changing MPI implementation.
14+
15+
Fixes:
16+
* Update UWGeoTutorials.rst #693.
17+
* Fix for cohesion bug in Druker-Prager rheology. #707
318

419
Release 2.15.0 [2023-04-19]
520
---------------------------
@@ -12,7 +27,7 @@ Changes:
1227

1328
Fixes:
1429
* UWGeodynamics - add dynamic heating back into the advection diffusion solver,
15-
https://github.com/underworldcode/underworld2/issues/669
30+
https://github.com/underworldcode/underworld2/issues/669
1631
* Using updated Badlands-2.2.3 without license issue.
1732

1833

@@ -162,7 +177,7 @@ Docker:
162177
* Images minimised with unnecessary items removed.
163178
* XVFB no longer required for image generation within
164179
container.
165-
180+
166181
API changes:
167182
* `glucifer` module moved inside `underworld` and
168183
renamed `visualisation`.

Dockerfile

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
FROM underworldcode/underworld2:2.15.1b
1+
FROM underworldcode/underworld2:2.16.0-ompi
22

33
# Set the UW_MACHINE env variable for metrics
4-
ENV UW_MACHINE binder
4+
ENV UW_MACHINE=binder

Installation.rst

+4-3
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,13 @@ Build environment
1717

1818
* cmake >= 3.16
1919
* MPICH or OPENMPI
20-
* PETSc (<= 3.16.1)
20+
* PETSc
2121
* HDF5
2222
* SWIG (>= 4.0)
2323
* LibXML (>= 2.0)
24-
* Python (>3.5, <= 3.9.9)
24+
* Python (>3.5, <= 3.11)
2525
* Numpy
26+
* Ninja
2627

2728
Running Requirements
2829
********************
@@ -101,4 +102,4 @@ Notes on Installing Docker
101102
102103
docker-machine ip default
103104
104-
but note that this will only work correctly from the *Docker Quickstart Terminal*.
105+
but note that this will only work correctly from the *Docker Quickstart Terminal*.

MANIFEST.in

+10-9
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
1-
recursive-include underworld *i
2-
recursive-include underworld *c
3-
recursive-include underworld *cpp
4-
recursive-include underworld *h
5-
recursive-include underworld *hpp
6-
recursive-include underworld *py
7-
recursive-include underworld CMakeLists*
8-
recursive-include underworld/UWGeodynamics/ressources *.json
9-
recursive-include underworld/UWGeodynamics/uwgeo-data *
1+
recursive-include src/underworld *py
2+
recursive-include src/underworld/UWGeodynamics/resources *.json
3+
recursive-include src/underworld/UWGeodynamics/uwgeo-data *
4+
5+
# recursive-include src/underworld *i
6+
# recursive-include src/underworld *c
7+
# recursive-include src/underworld *cpp
8+
# recursive-include src/underworld *h
9+
# recursive-include src/underworld *hpp
10+
# recursive-include src/underworld CMakeLists*

README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ Note that it can take a while for the site to fire up and that it will time-out
5454

5555
| | |
5656
|-|-|
57-
| [![Binder](https://mybinder.org/badge.svg)](https://mybinder.org/v2/gh/underworldcode/underworld2/v2.13.0b) | v2.13.0b |
57+
| [![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/underworldcode/underworld2/v2.16.x) | v2.16.x |
5858
| [![Binder](https://mybinder.org/badge.svg)](https://mybinder.org/v2/gh/underworldcode/underworld2/v2.12.0b) | v2.12.0b |
5959
| [![Binder](https://mybinder.org/badge.svg)](https://mybinder.org/v2/gh/underworldcode/underworld2/v2.11.0b) | v2.11.0b |
6060
| [![Binder](https://mybinder.org/badge.svg)](https://mybinder.org/v2/gh/underworldcode/underworld2/development) | dev |

clean.sh

+11
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
#!/usr/bin/env bash
2+
3+
set -x # show commands
4+
5+
rm -fr build
6+
find . -name \*.so -exec rm {} +
7+
find . -name __pycache__ -exec rm -r {} +
8+
find . -name '*.egg-info' -exec rm -r {} +
9+
rm -rf .pytest_cache
10+
## To remove untracked git files
11+
#git clean -dfX ; git clean -dfx

conda/conda_build_config.yaml

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,4 @@ mpi:
22
- mpich
33
#- openmpi [linux]
44
petsc:
5-
- 3.18.1
5+
- 3.21.5

conda/environment.yaml

+29
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
name: uw2-dev
2+
channels:
3+
- conda-forge
4+
dependencies:
5+
- python==3.11
6+
- compilers
7+
- pkg-config
8+
- libxml2
9+
- cmake
10+
- swig>=4.0.0
11+
- ninja
12+
- pint
13+
- mpich
14+
- petsc==3.21.5
15+
- mesalib
16+
- numpy<2
17+
- scipy
18+
- mpi4py
19+
- h5py=*=mpi*
20+
- pytest
21+
- nbmake
22+
- matplotlib
23+
- jupyterlab
24+
- jupytext
25+
- pip
26+
- pip:
27+
- lavavu
28+
- "badlands @ git+https://github.com/julesghub/badlands.git@julesghub/meson-build#subdirectory=badlands"
29+

conda/meta.yaml

+26-26
Original file line numberDiff line numberDiff line change
@@ -1,58 +1,60 @@
11
{% set name = "underworld" %}
2-
{% set version = "2.14.0" %}
3-
{% set sha256 = "a9323209b0e36743bc953bf3b3d8e0a84d5e4e7f1911a1e78d1404a0ade6337d" %}
2+
{% set version = "2.16.0" %}
43
{% set build = 0 %}
54

65
package:
76
name: {{ name|lower }}
87
version: {{ version }}
98

109
source:
11-
# git_url: https://github.com/julesghub/underworld2.git
12-
# git_rev: dockerfile-updates
13-
url: https://github.com/underworldcode/underworld2/archive/refs/tags/v{{ version }}b.tar.gz
14-
sha256: {{ sha256 }}
10+
git_url : https://github.com/underworldcode/underworld2.git
11+
git_rev : v2.16.x
12+
# url: https://github.com/underworldcode/underworld2/archive/refs/tags/v{{ version }}b.zip
13+
# sha256: 5d27ce877f2238f6b2e9c6b90da25f1a61833ffa6093e0382f1bc5e2468dd782
1514

1615
build:
17-
skip: true # [win]
16+
skip: true # [py<39 or win]
1817
number: 0
19-
script: PETSC_DIR=$PREFIX {{ PYTHON }} -m pip -vv install --no-deps .
20-
missing_dso_whitelist:
21-
- libm.so.6
22-
- libc.so.6
18+
script: PETSC_DIR=$PREFIX {{ PYTHON }} -m pip install . -vv
2319

2420
requirements:
2521

2622
build:
27-
- {{ compiler('fortran') }}
2823
- {{ compiler('c') }}
2924
- {{ compiler('cxx') }}
3025
- {{ mpi }}
26+
- pkg-config
27+
- cmake
28+
- ninja
3129

3230
host:
33-
- pkg-config
3431
- pip
32+
- setuptools
3533
- python
34+
- h5py =*=mpi*
3635
- libxml2
37-
- numpy >=1.18
38-
- cmake
39-
- swig >=4.0.0
40-
- ninja
36+
- numpy <2.0.0
4137
- petsc {{ petsc }}
4238
- {{ mpi }}
39+
- swig >=4.0.0
4340

4441
run:
4542
- python
46-
- {{ mpi }}
47-
- numpy
43+
- h5py =*=mpi*
44+
- {{ pin_compatible('numpy') }}
4845
- petsc {{ petsc }}
46+
- {{ mpi }}
47+
- mpi4py
4948
- pint
5049
- scipy
51-
- mpi4py
52-
- h5py
50+
- matplotlib-base
5351

5452
test:
53+
imports:
54+
- underworld
55+
5556
requires:
57+
- python
5658
- pytest
5759
- matplotlib
5860

@@ -62,21 +64,19 @@ test:
6264
- docs/examples
6365

6466
commands:
67+
# - pytest -vvv docs/pytests/test.py
6568
- python -X faulthandler -c "import underworld; underworld.mesh.FeMesh_Cartesian();"
66-
- pytest -vvv docs/pytests
6769

6870

6971
about:
70-
home: "https://github.com/underworldcode/underworld2"
72+
home: https://github.com/underworldcode/underworld2
7173
license: LGPL-3.0-only
7274
license_family: LGPL
73-
license_file: LGPLv3.txt
75+
license_file: LGPLv3.txt
7476
summary: "Geodynamics API"
7577
doc_url: https://underworld2.readthedocs.io
7678
dev_url: https://github.com/underworldcode/underworld2/tree/development
7779

7880
extra:
7981
recipe-maintainers:
80-
- rbeucher
8182
- julesghub
82-
- lmoresi

0 commit comments

Comments
 (0)