PyLith Development Plans, Feb 2014
Priorities for PyLith software development, such as new features and enhancements. This a draft for community comment (Feb 20, 2014).
This plan attempts to balance meeting short-term objectives of delivering high priority, new features and meeting long-term objectives of extending the code to solve a broader range of scientific problems.
Version 2.0 (early March 2014)
Status: We have almost everything working. We are in the process of fixing a few bugs related to creating cohesive cells and running in parallel.
- Replace C++ Sieve implementation of finite-element data structures with C DMPlex implementation. expert 99%
- 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.
- Switch from using Subversion to Git for version control.
- Add ability to recursively refine a mesh.
Version 2.1 (by Jun 2014)
This is the version that will be available for use at the June 2014 workshop. We are behind schedule for getting multiphysics done by then, and because this is a fixed deadline, we will probably aim to get some additional less ambitious features completed. Allowing different startup cases could slip to version 2.2.
- Improve fault formulation for spontaneous rupture 10%
- Removes inner solve associated with updating Lagrange multipliers. This will significantly accelerate the nonlinear solve.
- Higher order basis functions 0%
- Allow user to select order of basis functions independent of the mesh (which defines the geometry). This permits higher resolution for a given mesh.
- Reorganize top-level code to conform to layout needed for multiphysics 0%
- Setup modular approach for specifying governing equations and computing residuals and Jacobians.
- Reorganize top-level code to allow different startup cases 0%
- Elastic prestep
- User-specified initial solution
- Checkpoint via special spatial database?
- Radial basis functions for spatial databases 0%
- Improved handling of buried fault edges 25%
Version 2.2 (Summer/Fall 2014)
- Multiphysics
- Incompressible elasticity via a pressure field
- Elasticity + heat flow
- Elasticity + fluid flow
- GUI interface for specifying parameters
- Switch to using PETSc time-stepping (TS) algorithms. 0%
- 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.
- Multilevel nonlinear solve
Version 2.3 (Spring 2015)
- Earthquake cycle modeling
- Same mesh for dynamic and quasi-static parts (dynamic → quasi-static, quasi-static → dynamic, complete cycle)
- Create strain hardening/softening 2-D and 3-D Drucker-Prager elastoplastic models.
- Moment tensor point sources via equivalent body forces 5%
- Moment tensor point sources provide a mesh independent deformation source that is better suited for Green’s function calculations than slip on a fault surface via cohesive cells.
Features for Future Releases
Major features
- Earthquake Cycle Modeling
- Different meshes for dynamic and quasi-static parts
- Requires interpolation of fields between different meshes/discretizations and may require extrapolation of solutions when quasi-static problems span a larger domain than the dynamic problems.
- Different meshes for dynamic and quasi-static parts
- Data assimilation
- Use flexibility of multiphysics organization to support inclusion of data assimilation
Minor features
- Use KD tree search algorithm to allow output of time histories at an arbitrary location
- Combined prescribed slip / spontaneous rupture fault condition
- Use fault constitutive model to control slip on fault except during episodes of prescribed slip. Need some way to describe when to turn on/off prescribed slip.
- Use threading to accelerate integrations on multi-core machines.