There is a newer version of the record available.

Published June 2, 2026 | Version v19

geodynamics/pylith v5.0.0

  • 1. US Geological Survey, USA
  • 2. University at Buffalo, New York, USA
  • 3. ROR icon Earth Sciences New Zealand

Description

Changed
  • Updated the nondimensionalization code, moving it from SpatialData to PyLith.
  • Renamed Nondimensional to Scales.
  • Added displacement scale and improve the names of the other scales.
  • The time scale for poroelasticity is derived from the other scales and nominal material properties.
  • Added discussion of nondimensionalization for each of the governing equations.
  • Updated default solver tolerances consistent with the new nondimensionalization scales.
  • Added option to use adaptive time stepping and update examples `reverse-2d` Steps 7 and 8 and `magma-2d` Step 1 to demonstrate its use.
  • Updated multi-grid preconditioner solver settings for elasticity for better scalability with problem size.
  • Updated `examples/subduction-3d` to include generation of the finite-element mesh using Gmsh or Cubit using Python scripts. The Gmsh model includes topography and bathymetry.
  • Mesh formats
    • Added support for use of Cubit side sets and Gmsh physical groups with edges (2D) and surfaces (3D). Use of Cubit vertex sets and Gmsh physical groups with vertices are deprecated and support for them will be removed in version 6.0.0.
    • Use of Cubit side sets and Gmsh physical groups with curves (2D) and surfaces (3D) are using
    • ASCII mesh format
      • Changed `group` to `vertex-group`; remove `group` `type`.
    • Renamed `VertexGroup` to `BoundaryGroup` in `meshio.gmsh_utils` and changed default behavior to not be recursive (generate "face" groups, not "vertex" groups).
    • Added `improve_quality()` method to `meshio.gmsh_utils.GenerateMesh` for improving quality in 3D meshes. Used in `examples/crustal-strikeslip-3d`.
  • Replaced hardcoded steps for initializing meshes (reading mesh, reordering a mesh, inserting cohesive cells, and refining a mesh) with a modular mesh initialization approach.
    • The default mesh initialization implementation reads a mesh in serial, reorders it, distributes it (if necessary), inserts cohesive cells (if necessary), and refines it (if requested).
    • A parallel mesh initiation implementation reads a mesh in parallel, redistributes it (if necessary), inserts cohesive cells (if necessary), and refines it (if requested).
  • Updated error handling to use Pyre journal channels and PyLith exceptions.
  • Add PyLith exceptions.
  • Add C++ backtrace to PyLith exception messages.
  • Reorganized use of Pyre journal channels with names based on use rather than components.
    • The journal info channel 'application-flow' is enabled by default in the PyLith application.
    • The journal device is set to color-console in the examples and full-scale tests.
  • Use the VTU (XML) format for VTK files instead of the legacy ASCII format.
  • Material `description` property is no longer used; a deprecation warning is printed to stdout if it is specified. This feature will be removed in v6.0.
  • Internal labels for meshes and fields are now derived from the Pyre component name and identifier.
  • Updated PETSc to 3.25.1.
Added
 
  • Improved documentation for `pylith_eqinfo` and illustrate use in `examples/strikdslip-2d`, `examples/crustal-strikeslip-2d`, and `examples/crustal-strikeslip-3d`.
  • Added `pylith_convertmesh` for converting Cubit and Gmsh files to the PETSc HDF5 mesh format.
  • Added support for specifying boundary conditions using marked boundaries rather than vertices.
  • `MeshIOAscii`: Use `face-group` for specifying boundary conditions via cell and `face` vertices.
  • `MeshIOCubit`: Read sidesets from ExodusII files (generated by Cubit).
  • `MeshIOPetsc`
    • `Gmsh`: Create physical groups only at the dimension of the boundary.
    • Added compatibility for reading PETSc HDF5 format.
  • Improved the organization of the governing equations section and added documentation for poroelasticity with prescribed fault slip, including governing equations and default PETSc solver settings. Also added a full-scale test.
  • Added performance benchmarks for linear elasticity with prescribed slip in `benchmarks/performance`.
Fixed
 
  • Account for processes without cells in initial condition patch when verifying configuration.
  • Avoid divide by zero for `KinSrcRamp` when final slip is zero.
  • Removed `solid_bulk_modulus` as a spatial database field for poroelasticity; compute it from the other fields.
  • Fixed typos in setting up gravity with poroelasticity.
  • Fixed pythia import in `pylith_eqinfo`.
Developer Changes
  • Replace `err = PetscFoo(args); PYLITH_CHECK_ERROR(err);` with `PylithCallPetsc(PetscFoo(args));`.
  • Replace `assert(arg)` in test code with `REQUIRE(arg);`.



Files

Files (30.0 MB)

Name Size Download all
md5:71f0117d2bc488ba8d00c5868023c926
30.0 MB Download

Additional details

Related works

Software

Repository URL
https://github.com/geodynamics/pylith
Programming language
C++ , Python
Development Status
Active