Pointwise functions for flexible implementation of crustal deformation physics in PyLith
Wednesday, 16 December 2015
Poster Hall (Moscone South)
The next stage of development for PyLith, a flexible, open-source finite-element code (http://geodynamics.org/cig/software/pylith/) for modeling quasi-static and dynamic crustal deformation with an emphasis earthquake faulting, focuses on refactoring the code to provide greater flexibility in support of a broader range of physics, discretizations, and optimizations for a variety of computer hardware. We separate the finite-element integration into a discretization-specific portion and discretization-independent pointwise functions associated with the governing equations. The discretization-specific portion is designed to accommodate arbitrary order finite elements and multiple implementations for optimization targeting specific hardware (e.g., CPU and GPU). The pointwise functions encapsulate the physics, including the governing equations and rheologies. Users can easily extend the code by adding new pointwise functions to implement different rheologies and/or governing equations. PyLith currently includes pointwise functions for quasi-static and dynamic elasticity for several elastic, viscoelastic, and elastoplastic rheologies. We plan to add pointwise functions for coupling of elasticity with fluid flow and incompressible elasticity. Tight integration with the Portable, Extensible Toolkit for Scientific Computation (PETSc) provides support for a wide range of linear and nonlinear solvers and time-stepping algorithms.