PyLith Development Plans

Software development plans for PyLith

Diagram of Priorities and Feature Dependencies

The diagram shows the priority of adding features to PyLith along with their dependencies on each other. The features are color coded to signify whether they are related to computational science or geophysics as well as the amount of effort involved in their implementation. The geophysics features are further categorized by whether they are features of Tecton or new features never present in Tecton (or its successors, LithoMop and PyLith 0.8).

The community has expressed strong support integrating all of the features of Tecton into PyLith as soon as possible. The ordering of the priorities balances this community consensus with the desires of the developers. The timeline provides estimated release dates for PyLith based on the current obligations of the developers (Brad Aagaard, Charles Williams, and Matthew Knepley), including other projects. Additional CIG developer time and/or development by members of the community would expedite the timeline.

Diagram of development priorities and dependencies


  • Tecton features
    multiple earthquake ruptures
    Ability to specify multiple kinematic earthquake ruptures on a fault
    gravitational body forces
    Include application of gravitational body forces in quasi-static simulations
    initial stress state
    Provide an initial stress state for cells using a spatial database; does not include state of the system (e.g., plastic strain)
    nonlinear bulk rheologies
    Support for nonlinear viscoelastic and viscoelastoplastic bulk constitutive models
    fault friction
    Frictional fault interface condition for cohesive cells
    Time dependent BCs
    Support for arbitrary temporal modulation (scaling) of the spatial variations in boundary conditions; current support for temporal variations in BCs is limited to a constant rate of change in Dirichlet BCs
    large deformations
    Update mesh geometry (coordinates of vertices) based on deformation
    finite strain
    Implement finite strain
  • New features
    adaptive time stepping
    Support for varying the time step automatically based on a suite of criteria (maximum user specified time steps, stable time step based on rheology, and minimum number of time steps between changing time steps)
    initial state variables
    Ability to specify the complete initial state of the system, including initial stresses, strains, and state variables via spatial databases; different from restart files in that the state of the system must be specified by the user and need not come from a previous simulation.
    Green's functions
    Optimized formulation and setup for computing Green's functions
    coupling quasi-static / dynamic
    Coupling of quasi-static interseismic deformation simulations with dynamic coseismic and wave propagation simulations
  • Computer science features
    uniform global refinement
    Refinement of cells to increase mesh resolution uniformly over the entire domain; necessary for large dynamic problems with hundreds of millions of cells
    Automatic nondimensionalization of the problem that is transparent to the user; results in a symmetric sparse matrix
    interface w/PETSc nonlinear solvers
    Interface PyLith with PETSc's nonlinear solvers
    SWIG for Python/C++ interface
    Replace Pyrex/Pyrexembed with SWIG; Pyrex/Pyrexembed requires accessing C++ via C which requires ugly coding and increases code maintenance costs; SWIG is designed for object oriented languages and would streamline the Python/C++ interface
    HDF5 output
    Support for parallel HDF5 output; permits efficient platform independent binary output that is easily sliced in time/space (snapshots in time or time hitories)
    improved PC for kinematic fault condition
    Use better preconditioner for saddle-point problem associated with implementation of kinematic fault condition using Lagrange multiplies. Also, may need to adjust formulation to optimize solution of equations for dynamic time stepping.
    higher order cells
    Support for using higher order basis functions from linear cells (triangles, quadrilaterals, hexahedra, tetrahedra). Benchmarks show far better performance for linear basis functions for hexahedral cells compared with tetrahedral cells. Quadratic basis functions with tetrahedral cells may provide performance simular, or possible better than, linear basis functions with hexahedral cells.
    restart files / checkpointing
    Permit simulations to be restarted from an arbitrary time step. This would be used to save the initial state of a system for Monte Carlo type simulations or continue a long simulation from an intermediate point in time after a system crash.
Sign In