Skip to content

PyLith v2.0.0

Choose a tag to compare

@baagaard baagaard released this 05 Jun 19:53

This release fixes several bugs in PyLith v1.9.0 and contains major under-the-hood improvements. We strongly recommend all users of previous PyLith releases switch to this latest release.

A few small changes are needed in .cfg files to switch from v1.9.0 to v2.0.0.

Binaries are available from the links below. Detailed installation instructions for the binary packages are in the User Manual. Use the PyLith Installer to install from source. Detailed building instructions for a few platforms in the INSTALL file bundled with the PyLith Installer.

Migrating from version 1.9 to 2.0

Changes to various C++ objects permitted simplifying the specification of a number of components. The map below indicates the name changes.

  CellFilterAvgMesh -> CellFilterAvg
  DataWriterVTKMesh -> DataWriterVTK
  DataWriterVTKSubMesh -> DataWriterVTK
  DataWriterVTKSubSubMesh -> DataWriterVTK
  DataWriterHDF5Mesh -> DataWriterHDF5
  DataWriterHDF5SubMesh -> DataWriterHDF5
  DataWriterHDF5SubSubMesh -> DataWriterHDF5
  DataWriterHDF5ExtMesh -> DataWriterHDF5Ext
  DataWriterHDF5ExtSubMesh -> DataWriterHDF5Ext
  DataWriterHDF5ExtSubSubMesh -> DataWriterHDF5Ext

Running the script:

bash $PYLITH_DIR/doc/developer/update_1.9to2.0.sh

will update all .cfg files in the current directory and all subdirectories with the new names (you will need to replace $PYLITH_DIR with the directory containing the PyLith source code).

PyLith allows use of the Chaco and ParMetis/Metis partitioners. The name of the ParMetis/Metis partitioner was changed from "parmetis" to "metis".

  [pylithapp.mesh_generator]
  distributor.partitioner = metis

Buried edges of faults are handled differently in v2.0. A separate nodeset/pset should be created and contain the vertices on the buried edges of the fault. See the Section 6.4.2 of the PyLith manual for more information.

Release Notes - PyLith v2.0.0

  • Replaced C++ Sieve implementation of finite-element data structures
    with C DMPlex implementation.

    DMPlex provides a simpler, more efficient implementation of the finite-element data structures that conforms to the PETSc data management (DM) interface. This provides tighter integration with the rest of PETSc. Additionally, this rewrite of the data structures results in a more efficient memory layout, resulting in better performance.

  • Improved treatment of buried fault edges, so that the slip naturally
    tapers to zero along the buried edges.

    An additional nodeset/pset is used to designate the buried edges of a fault. This allows the cohesive cells to be inserted up to the edge of the fault without splitting the mesh at the fault edge. The slip will naturally taper to zero at along the buried edges as a result of how the cohesive cells are created

  • Switched from using Subversion to Git for version control.

    The source code repository changed from a CIG maintained Subversion repository to a Git repository at Github.com. The URL for the Git repository is https://github.com/geodynamics/pylith. The installer has been updated accordingly.

  • Added ability to recursively refine a mesh.

    Global uniform refinement can now be done recursively. Each refinement reduces the vertex spacing by a factor of two. Using more than one level of refinement should be done carefully as the mesh quality will generally deteriorate with more levels of refinement.

  • Directories for output are created as necessary.

    Directories where output files are written will be created if necessary. Previously, the directories would not be created, so that opening the output files in a nonexistent directory would generate an error.

  • Improved error messages.

    Error messages originating in PETSc will include a stack trace that includes both PyLith and PETSc code. Previously, only the PETSc code was included. This provides significantly more information for debugging.

  • Improved CUBIT example for mesh sizing functions.

    Based on experimentation with CUBIT 14.0, 14.1, and Trelis 15.0, we have improved the CUBIT mesh sizing examples (examples/meshing/cubit_cellsize). We were able to simplify the journal files and use fewer CUBIT commands. The new procedure also eliminates some CUBIT warnings.

  • Several small improvements to various sections of the manual based on feedback and questions from users.

    • Added more information about the workflow involved in using PyLith.
    • Added a discussion of how to set scales for nondimensionalization.
    • Added a discussion of how the stable time step is computed for the
      various materials.
    • Updated and expanded the discussion of using initial state
      variables.
  • Bug fixes

    • Fixed two MPI related bugs in computing Green's functions in parallel. The number of impulses corresponded to only those on process 0.
    • Corrected computation of fault tractions (Lagrange multipliers) on process boundaries for prescribed slip with explicit time stepping.
    • Fixed bug when reading in list of output points with just one point.
    • Adjusted autoconf Python setup macro to remove temporary sysconfig.pyc file.
    • Added check to make sure degree of freedom specified in Dirichlet BC is consistent with spatial dimension of problem.
    • Corrected two typos in the manual related to fault opening and tractions in examples/3d/hex8/step20 and updating to the use of cell.dimension for the quadrature scheme with tets.
    • Fixed stable time step computed for power-law viscoelastic rheology to match manual.