You are here: Home / Resources / Software: Download / PyLith / About


By Brad Aagaard (primary-developer)1, Charles A. Williams (primary-developer)2, Matthew Knepley (primary-developer)3

1. United States Geological Survey 2. GNS Science 3. University of Buffalo

Published on


PyLith is a finite-element code for dynamic and quasistatic simulations of crustal deformation, primarily earthquakes and volcanoes.

Binary packages are available for macOS and Linux. Detailed installation instructions for the binary packages are in the PyLith manual. Use the PyLith Installer to install from source. We also offer a Docker image (see the PyLith Install Manual for instructions) for development or running PyLith within a portable, virtual Linux environment. Windows 10 users should install the Windows Subsystem for Linux and use the Linux x86_64 binary.

Release Notes

PyLith 4.0 adds output of changes in fault tractions for prescribed slip, orientation information for faults and boundary conditions, and initial guesses for the solution based on proper orthogonal decomposition. Refer to PyLith v4.0.0 release notes for more information.

PyLith 3.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.


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

Features no longer supported

  • We have removed support for reading LaGriT mesh files in version 4.0.0. Gmsh provides an open-source alternative with a graphical user interface.

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.


  • Brad Aagaard
  • Matthew Knepley
  • Charles Williams
  • Grant Block
  • Daniel Douglas
  • Lorraine Hwang
  • Rezgar Shakeri
  • Robert Walker

Download v4.0.0

Binary Packages

  • Linux x86_64 (glibc 2.12 and later)
  • macOS x86_64 (macOS 10.15 and later; works on x86_64 and arm64 processors)
  • macOS arm64 (macOS 11.0 and later; only works on arm64 processors)

Source Code

If you need to build PyLith from source, we strongly recommand that you use the PyLith Installer utility to configure and build the PyLith code and its dependencies. If you use the installer you do not need to download the PyLith and PETSc tarballs; the installer will download them automatically.

Sponsored by

Current PyLith development is supported by the CIG, and internal GNS Science and U.S. Geological Survey funding. Pyre development was funded by the Department of Energy’s Advanced Simulation and Computing program and the National Science Foundation’s Information Technology Research (ITR) program.

This material is based upon work supported by the National Science Foundation under Grants No. 0313238, 0745391, 1150901, and EAR-1550901. Any opinions, findings, and conclusions or recommendations expressed in this material are those of the author(s) and do not necessarily reflect the views of the National Science Foundation.