Skip to content

Releases: geodynamics/pylith

PyLith v4.1.3

30 Jul 18:47
9957404
Compare
Choose a tag to compare

DOI

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

13 Jun 02:29
5ccb0cd
Compare
Choose a tag to compare

DOI

Fixed

  • Fix inconsistency in normal direction on fault surfaces. Orientation was correct but direction was flipped at some locations. This affected local slip direction and the resulting deformation close to the fault.

PyLith v4.1.1

09 Jun 21:37
6460d33
Compare
Choose a tag to compare

DOI

Fixed

  • Improved setup of variable block Jacobian preconditioner used for elasticity with faults to reduce runtime.
  • Fix several typos and update a few diagrams in the documentation.

PyLith v4.1.0

06 Jun 18:22
cdc1f42
Compare
Choose a tag to compare

DOI

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 and examples/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

PyLith v4.0.0

15 Dec 03:29
be40cc8
Compare
Choose a tag to compare

DOI

Changes in user parameters

  • Changed name of fault Lagrange multiplier field for solution component in Python from lagrange_fault to lagrange_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 of examples/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

14 Oct 17:19
e6c52cd
Compare
Choose a tag to compare

DOI

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

24 Aug 16:44
ae1f8f1
Compare
Choose a tag to compare

DOI

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 from examples/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.
  • 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

19 Jun 21:52
d1b295e
Compare
Choose a tag to compare

DOI

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)
  • 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

09 Jun 05:37
658a959
Compare
Choose a tag to compare

DOI

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 and label and label_value for tagging entities. PyLith's use oflabel and label_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

02 Jul 16:26
9d1e656
Compare
Choose a tag to compare

DOI

  • 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 to residual.h5. To generate the associated .xdmf file run pylith_genxdmd -f residual.h5.

  • Updated to PETSc 3.10.2