Releases: geodynamics/pylith
PyLith v4.1.3
Added
- Expanded the section of the manual discussing mesh generation with Cubit and Gmsh. Added a list of useful functions in the Cubit and Gmsh Python interfaces.
- Added a test to verify Gmsh files with entities that are not embedded generate errors when read via
MeshIOPetsc
. - Expanded section of manual discussing installation on Windows Subsystem for Linux, including components needed to run GUI applications (Gmsh and
pylith_viz
). - Add Gmsh Python script and corresponding mesh in
examples/magma-2d
.
Fixed
- Added output of fault traction change when computing static Green's functions.
- Turn on PETSc HDF5 collective input and output by default. This resolves errors when using HDF5 1.14 on NFS filesystems.
- Include all necessary files from
examples/subduction-3d
in source and binary packages. - Fix typos in documentation and update Components section of User Guide (sync with code).
PyLith v4.1.2
PyLith v4.1.1
PyLith v4.1.0
Changed
- Improved the default preconditioners for poroelasticity for improved scalability.
- Improved the default preconditioners for elasticity with faults for improved scalability.
- Replaced use of Cubit journal files with Cubit Python scripts for several examples, and use the skeleton sizing function to increase cell size with distance from the fault.
- Removed ParaView Python scripts (replaced by
pylith_viz
)
Added
- New 2D and 3D crustal strike-slip faults examples based on the 2019 Ridgecrest earthquake.
- New 2D subduction zone outer-rise faulting example examining poroelastic response to bending stresses.
- New
pylith_viz
utility for plotting PyLith results. - Updated
examples/strikeslip-2d
andexamples/reverse-2d
to demonstrate use of uniform refinement and higher ordder discretizations to improve resolution of solution. - Documentation
- Developer Guide: Added description of the process for adding event logging and evaluating performance, including performance logging.
- Developer Guide: Added checklist for what is needed when contributing examples.
Fixed
- Updated
examples/subduction-3d
Steps 6, 7, and 8 to work with PyLith v3+. - Fix performance bottleneck when reading Gmsh files.
- Remove extra (wrong) kernels for poroelasticity when using state variables.
- Update Python unit tests setup for compatibility with the current unittest API (use
load_tests()
).
Known issues
- The new default preconditioner for simulations using elasticity and faults can cause convergence issues when running in parallel in which fault faces lie on the boundaries between processors. The workaround is to use the previous preconditioner provided in
share/settings/solver_fault_fieldsplit.cfg
. - The default PETSc options provide a computationally expensive preconditioner when solving incompressible elasticity problems. We expect to have a more optimal preconditioner in the next release.
Contributors
- Brad Aagaard ORCIID iD 0000-0002-8795-9833
- Matthew Knepley ORCIID iD 0000-0002-2292-0735
- Charles Williams ORCIID iD 0000-0001-7435-9196
- Daniel Douglas ORCIID iD 0000-0002-7871-018X
- Evan Marschall ORCIID iD 0009-0003-0916-6656
- Zechao Zhuo ORCIID iD 0000-0002-8163-5731
PyLith v4.0.0
Changes in user parameters
- Changed name of fault Lagrange multiplier field for solution component in Python from
lagrange_fault
tolagrange_multiplier_fault
to match name of solution field in C++ and output. - Removed support for importing meshes from LaGriT.
Other changes
- Change in fault tractions are now included in the fault
data_fields
for prescribed slip. - Fault and boundary orientation directions are now included in the
info_fields
for simulation output. - State variables are now included in the default
data_fields
for simulation output. - The default solver settings use the PETSc proper orthogonal decomposition (POD) methodology for initial guess of solutions to improve convergence.
- Add demonstration of
pylith_powerlaw_gendb
in Step 8 ofexamples/reverse-2d
. - Add demonstration of using poroelasticity with porosity as a state variable to
examples/magma-2d
. - Switched from CppUnit to Catch2 for the C++ testing framework.
- Improve integration with VSCode for testing and debugging (see Developer Guide).
- Bug fixes
- Fix errors in KinSrcTimeHistory.py
- Fix creation of PETSc label for edges when importing Gmsh files. This fixes creation of faults with buried edges for 3D meshes imported from Gmsh.
- Add containers for solution fields for poroelasticity with faults.
- Update PETSc to version 3.20.2.
- Update Python requirement to version 3.8 or later.
- Update Pyre requirement to version 1.1.0 or later.
- Update SpatialData requirement to version 3.1.0 or later.
Binary packages
- Update to Python 3.10.10, MPICH 4.1.1, OpenMPI 4.1.5, OpenSL 3.1.0, libffi 3.4.4, curl 8.0.1, CMake 3.26.2, PCRE 10.42, SWIG 4.1.1, Catch2 3.3.2, Sqlite 3410200, libtiff
4.5.0, Proj 9.2.0, HDF5 1.14.0, and NetCDF 4.9.2.
Known issues
- The default PETSc options provide a computationally expensive preconditioner when solving incompressible elasticity problems in parallel. We expect to have a more optima
l preconditioner in the next release.
PyLith v3.0.3
This is a bug fix release with no new features or changes to the user interface.
- Fixed duplicate integration of fault terms if a fault had one material on one side and multiple materials on the other side.
- Fixed bugs related to running in parallel.
- Creating constraints on buried fault edges failed for some mesh distribution cases.
- Green's function problems did not manage fault impulses on multiple processes.
- Creating a point mesh for
OutputSolnPoints
failed when running in parallel. - PetscSF inconsistencies generated errors at various times when running in parallel.
- Update to PETSc 3.18.0.
Note: We now use PETSc routines to write the HDF5 files. As a result, there is one change to the layout: topology/cells
is now viz/topology/cells
.
The corresponding Xdmf files reflect this change.
Binary packages
- Update to Python 3.10.6.
- Use
gmforker
process manager with MPICH to avoid localhost name issues.
Known issues
The rate of convergence of the linear solver for large models (millions of cells) with large fault surfaces (most of the domain) is slow when running in parallel. We are working on finding better preconditioner settings.
PyLith v3.0.2
This is a bug fix release with no new features or changes to the user interface.
- Add check of PyLith version against version requirements specified in metadata of parameter files.
- Update defaults to better match most use cases.
- Use nonlinear solver.
- Basis order is 1 for solution fields.
- Basis order is 0 for Cauchy stress and strain.
- Use ML algebraic multigrid preconditioner (from Trilinos) instead of GAMG preconditioner for more robust solves. This is a temporary change until we find better GAMG settings.
- Update PETSc to v3.17.3.
- Remove obsolete LaTeX documentation.
- Bug fixes
- Add
viz
directory missing fromexamples/subduction-2d
in source distribution. - Project output fields using correct PETSc routine (
DMProjectFieldLabel()
). Fixes memory access bugs in both serial and parallel. - Fix build warnings.
- Fix reordering that causes errors when importing Gmsh files.
- Add
- Documentation
- Add discussion of translating boundary value problem information to parameter settings. Add more code blocks to manual.
- Add discussion of
examples/troubleshooting-2d
to manual.
Binary packages
- Added PyQT5 Python module for interactive plotting with matplotlib.
- Update PyLith Parameter Viewer to v2.0.1 (fix errors in packaging).
Known issues
- The default PETSc options provide a computationally expensive preconditioner when solving incompressible elasticity problems in parallel. We expect to have a more optimal preconditioner in the next release.
- You may still encounter a few bugs when running in parallel; they appear to cases with specific partitioning of the mesh in relation to one or more faults.
PyLith v3.0.1
This is a bug fix release with no new features or changes to the user interface.
- Bug fixes
- Fix lots of small bugs related to running in parallel
- Fix several discrepancies among the code, examples, and manual
- Examples
- Added
examples/subduction-3d
steps 1-4 (included in the manual) - Added
examples/troubleshooting-2d
(included in the PyLith v3.0 tutorials but not yet added to the manual)
- Added
- Documentation
- Added instructions for how to remove Apple quarantine attributes
- Fix LaTeX build of documentation (now available at https://pylith.readthedocs.io)
- Improved instructions on how to run ParaView Python scripts when starting ParaView from a shortcut
- Added notes indicating steps of examples are not yet updated for v3.0
- Fix lots of typos
Binary packages
- Updated PyLith Parameter Viewer (v2.0.0) for Python 3.
Known issues
- The default PETSc options provide a computationally expensive preconditioner when solving incompressible elasticity problems in parallel. We expect to have a more optimal preconditioner in the next release.
- You may still encounter a few bugs when running in parallel; they appear to cases with specific partitioning of the mesh in relation to one or more faults.
PyLith v3.0.0
Version 3.0.0 includes major changes to the underlying finite-element formulation and implementation in order to support a more flexible specification of the governing equations and higher order basis functions.
These changes affect how simulations are defined.
Parameter files for previous versions will need to be updated; the changes are too complex for a simple translation table.
Some features present in v2.2.2, such as spontaneous rupture and finite strain, have not yet been implemented in the new formulation.
Features
- Multiphysics
- Elasticity for linear isotropic materials and linear Maxwell, generalized Maxwell, and power law viscoelastic models
- Incompressible elasticity for linear isotropic materials
- Prescribed slip for quasistatic and dynamic simulations
- Higher order basis functions
Allow user to select order of basis functions independent of the mesh (which defines the geometry). This permits higher resolution for a given mesh. - Switch to using PETSc time-stepping (TS) algorithms
Replace simple Python-based time-stepping implementations with PETSc time-stepping algorithms that provide support for higher order discretization in time and real adaptive time stepping. - Static Green's functions with user-specified discretization of fault slip impulses
- Import finite-element meshes from Cubit (Exodus II), Gmsh, and LaGriT
- Modular approach for initial conditions
- Output of subfields with user-defined basis order
- Simulation metadata with command line utility for searching metadata
- Convert to Python 3
- Convert LaTeX documentation to Sphinx + MyST
- Testing with the Method of Manufactured Solutions
- New suite of examples, including examples using incompressible elasticity and poroelasticity
- Automatically assign label value for fault cohesive cells (
id
setting is obsolete). - Use
description
for descriptive labels andlabel
andlabel_value
for tagging entities. PyLith's use oflabel
andlabel_value
now corresponds to PETSc labels and label values.
Deprecated features
- We plan to discontinue support for reading LaGriT mesh files in version 3.2. Gmsh provides an open-source alternative with a graphical user interface.
Binary packages
The binary packages are 700 Mb and 1.1 Gb. We will be working to remove unnecessary files. One of the main reasons for the large size is that we include all of the geographic projection datum information used by the Proj library; we will test the feasibility of having the download these data files as a separate step.
Known issues
- Running in parallel has a few minor bugs due to communication mismatches and over-aggressive error checking. We will be fixing these in the next week.
- We will be updating the 3D subduction zone example (
examples/subduction-3d
) to v3.0.0 in the next week, including providing the input mesh file; in the meantime do not attempt to run this example. - We have included Gmsh in the binary packages. For Linux, there are additional libraries that must be installed for Gmsh to run; these are associated with the graphical user interface. Most Linux distributions include these in a default installation.
Contributors
- Brad Aagaard
- Matthew Knepley
- Charles Williams
- Robert Walker
- Chris Mills
- Shengduo Liu
- Thea Ragon
- Alex Berne
- Jed Brown
- Rey Koki
- Kali Allison
- Lorraine Hwang
PyLith v2.2.2
-
Bug fixes
-
Fix several typos in the manual.
-
Fix order of deallocation of data members in ElasticMaterial to prevent a segmentation fault, thereby allowing error messages to be shown when throwing an exception.
-
Fix tests for MPI and PETSc version info for more use cases.
-
Ensure all Python script are executable and use nemesis is used instead of python for correct paths to modules on Darwin.
-
-
Added ability to write residual to an HDF5 file during solves. This is intended for debugging and is enabled at runtime using
--journal.debug.formulation=1
. The residual will be written toresidual.h5
. To generate the associated.xdmf
file runpylith_genxdmd -f residual.h5
. -
Updated to PETSc 3.10.2