Skip to content

Releases: underworldcode/underworld3

Underworld3 v3.1.0

Choose a tag to compare

@github-actions github-actions released this 08 Jul 01:37
4ea59bf

Underworld3 v3.1.0

Highlights

  • Units and Scaling System — first-class dimensional quantities across the
    solver stack: write models in physical units (Pa·s, km, K) and let the
    framework non-dimensionalise and re-dimensionalise automatically.
  • Mesh Adaptation infrastructure — the Winslow mesh smoother and MMPDE
    mesh mover are now formally supported, providing the foundation for
    anisotropic adaptive remeshing workflows.
  • 40+ merged feature PRs since v3.0.1 — including Nitsche BCs, mesh
    deformation capability gate, semi-Lagrangian improvements, projection
    enhancements, and Darcy sign-convention corrections.

Supported (validated)

  • Units and Scaling System — Pint-backed dimensional quantities, non-dimensionalisation, and unit-aware expression arithmetic.
  • Winslow Mesh Smoother — Parallel-safe interior mesh smoothing (smooth_mesh_interior) — the foundation the adaptive movers and geometric multigrid build on.
  • Constant Nullspace (singular scalar solvers) — SNES_Scalar.constant_nullspace returns the minimum-norm solution for pure-Neumann / closed-manifold scalar problems whose operator has a constant kernel (the singular Poisson case).

Preview (present, unguaranteed)

  • MMPDE Mesh Mover / Adaptive Remeshing — follow_metric / OT mesh movement and variable transfer for anisotropic mesh adaptation.
  • Geometric Multigrid / FMG Preconditioner — Automatic geometric full-multigrid preconditioning for the SNES solvers on refinement meshes (the preconditioner property).

Bug Fixes

  • Darcy transient velocity sign and sign-convention corrected (#255)
  • Mesh variable arithmetic with unit-aware operands (#282, #283)
  • Stokes bodyforce setter now accepts UWQuantity components (#284)
  • Boundary normals and domain membership now track deformed meshes (#264)
  • CLI -uw_* parameter overrides now apply regardless of platform (#280)
  • PETSc IS size query during boundary rebuild avoided (#287)

New Features

  • Mesh deformation capability gate — public mesh.deform() API with safe
    cache invalidation, replacing the internal mesh._deform_mesh() (#188)
  • Nitsche boundary conditions for weakly-imposed constraints (#275)
  • Semi-Lagrangian traceback with old-frame interpolation (#186)
  • Monotone advection-diffusion options (#234)
  • Projection linear solver enhancements (#281)

Improvements

  • Mesh smoother and MMPDE mover robustness improvements (#190, #225, #228)
  • Units system extended to cover mesh variable arithmetic and coordinate evaluation
  • Stokes constrained solver parallel correctness (#265)

Breaking Changes

  • mesh._deform_mesh() now raises if the mesh carries live variables — use
    the public mesh.deform() instead (#188)

Contributors

Thanks to everyone who contributed to this release:
Louis Moresi, Thyagarajulu Gollapalli, Ben Knight, Neng Lu, Julian Giordani, Juan Carlos Graciosa, Saurabh Shukla, @tiannh7.

Underworld3 v3.0.1

Choose a tag to compare

@lmoresi lmoresi released this 22 Mar 00:54

Underworld3 v3.0.1

Patch release with build reliability fixes and documentation improvements.

Bug Fixes

  • Fix petsc_save_checkpoint() to use XDMF compatibility groups (fixes #80)
  • Fix stale build cache: ./uw build now uses --no-cache-dir to prevent
    pip from reusing wheels compiled against the wrong PETSc
  • Fix Dockerfile resilience to dependency version differences
  • Fix binder launcher dispatch payload and YAML quoting

Improvements

  • Auto-detect binder launcher ref from git tag in RTD documentation
  • Add manual dispatch overrides for binder image builds
  • Update README with binder badges for v0.99, v3.0.0, and development

Contributors

Underworld development team with AI support from Claude Code.

Underworld3 v3.0.0

Choose a tag to compare

@lmoresi lmoresi released this 22 Mar 00:54

Underworld3 v3.0.0

First official release of Underworld3 -- a complete rewrite of the Underworld
geodynamics framework built on PETSc DMPlex, SymPy-based constitutive models,
and particle-in-cell methods.

Highlights

  • PETSc DMPlex-based meshing with simplex and structured meshes
  • SymPy-powered constitutive model framework with JIT compilation
  • Particle swarms with RBF-interpolated proxy mesh variables
  • Stokes, Poisson, Darcy, advection-diffusion, and Navier-Stokes solvers
  • Units and scaling system via Pint
  • Parallel-safe output with XDMF/HDF5 checkpointing
  • Mathematical mixin for natural variable arithmetic

New Features

  • Boundary integrals via uw.maths.BdIntegral (PR #70)
  • Platform-conditional MPI: OpenMPI on macOS, MPICH on Linux (PR #75)
  • PetscDS constants mechanism for runtime-updatable solver parameters (PR #87)
  • XDMF-compatible HDF5 output with field projection and tensor repacking (PR #72)
  • Parallel printing with uw.pprint() and uw.selective_ranks() context manager
  • uw.Params for named simulation parameters routed through PetscDS constants
  • Viscoelastic Stokes solver with explicit stress history (order-1 and order-2)

Improvements

  • Thread capping (OMP_NUM_THREADS=1) set in pixi activation and at import time
  • Internal boundary ownership patch for PETSc (ghost filtering fix)
  • setuptools-scm for automatic git tag-based versioning
  • ./uw CLI for build, test, worktree management, and environment setup

Contributors

Underworld development team: Louis Moresi, Julian Giordani, Thyagarajulu Gollapalli,
Ben Knight, John Googas Graciosa, with AI support from Claude Code.

JOSS Publication Release (v0.99.1)

Choose a tag to compare

@lmoresi lmoresi released this 13 Aug 09:48
8b7c494

Fixing a very minor typo discovered in proofs, adding doi for JOSS product

Full Changelog: joss-publication-v0.99...joss-publication-v0.99.1

JOSS Publication Release (v0.99)

Choose a tag to compare

@lmoresi lmoresi released this 13 Aug 01:01
8b7c494

Everything finalised for JOSS approval.

v1.0 will be released when the JOSS process is final and a doi can be included in the README

JOSS pre-publication release

Choose a tag to compare

@lmoresi lmoresi released this 12 Aug 07:47
e59d06e

This is the final beta release as part of the JOSS acceptance process