2020 PyLith Hackathon
Overview of Hackathon
The 2020 PyLith hackathon will be held June 7-14, 2020, at the Colorado School of Mines in Golden, CO. We plan to have 3-4 projects with 3-4 people working on each project. In addition to the list of potential projects below, potential participants may also propose projects by posting a 1-2 page description under this topic.
All projects involve implementing new features in the code along with appropriate tests, examples, and documentation.
See the 2020 PyLith Hackathon webpage for additional details, including the registration process.
Potential Projects
Adaptive mesh refinement
Add support for adaptive mesh refinement (AMR) in PyLith by leveraging the AMR capabilities in PETSc. The main tasks include:
-
Remove any remaining dependencies of the problem specification on the finite-element mesh.
-
Add the ability to switch to a different (refined) mesh within a given problem/simulation.
-
Develop an appropriate error metric that can be used to refine the mesh.
Earthquake cycle
Couple quasi-static interseismic and dynamic coseismic simulations to resolve the full dynamics of the earthquake cycle, including rupture propagation and radiated seismic waves and viscoelastic relaxation and aseismic creep.
The main tasks include:
-
Transferring the solution and state information from one problem/mesh/solver to another.
-
Creating a new problem type for earthquake cycle simulations with appropriate high-level parameters.
-
Implement the appropriate trigger for switching between the quasi-static and dynamic solvers leveraging previous studies.
Time-dependent Green’s functions
Implement time-dependent Green’s functions using either the traditional forward simulation or reciprocity and strain Green’s tensors.
The main tasks include:
-
Updating the PyLith output implementation to accomodate 4-D arrays (Green’s function id, time, point, components).
-
Implementing the impulses (forward simulation case) or point loads (strain Green’s tensor approach).
-
Updating the GreensFn problem implementation to include time dependence.
Point dislocation earthquake sources
Implement point dislocation earthquake sources. This provide a point source implementation to complement the finite-source implementation of cohesive cells. Point dislocations are useful for modeling events whose rupture dimensions are small compared to the discretization size.
The main tasks include:
-
Leveraging point location functions already available to find the cell containing each point dislocation.
-
Implement the point dislocation via a moment tensor.
Viscoelastic bulk rheologies using strain rate
The current Maxwell and power-law viscoelastic rheologies are formulated with strain as the primary variable. The time-dependent nature of the viscoelastic relaxation is approximated with a series expansion. A more natural formulation is to use strain rate rather than strain as the primary variable. This project would add new implementations of the Maxwell, generalized Maxwell, and power-law viscoelastic bulk rheologies that use strain rate rather than strain as the primary variable.
Before the hackathon we expect that the project participants would work with the PyLith developers to derive the new bulk constitutive equations. The hackathon would be used to implement the new bulk constitutive models, create appropriate tests, benchmarks, and examples, and update the documentation.
Import meshes from Gmsh
Add support for reading Gmsh files. This would include updating several examples with Gmsh Python scripts.
A related project, that could be part of this project, is reading meshes in parallel using the PETSc HDF5 mesh layout.