== !PyLith Development Plans, Mar 2015 == Priorities for !PyLith software development, such as new features and enhancements. This a draft for community comment (Mar 6, 2015). 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. Current development has slowed because Brad Aagaard (who is not funded by CIG) is unable to devote much time to !PyLith development as a result of a substantial increase of other obligations. === Version 2.2 (Jun 2015) === # Improve fault formulation for spontaneous rupture {{intermediate.png}} [10%] * Removes inner solve associated with updating Lagrange multipliers. This will significantly accelerate the nonlinear solve. # Add viscoelastic Drucker-Prager bulk rheology === Version 2.3 (late 2015) === # Higher order basis functions {{expert.png}} [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 [[Image(difficult.png, 25px)]] 0% * Setup modular approach for specifying governing equations and computing residuals and Jacobians. # Reorganize top-level code to allow different startup cases {{intermediate.png}} [0%] * Elastic prestep * User-specified initial solution * Checkpoint via special spatial database? # Multilevel nonlinear solve # Radial basis functions for spatial databases {{intermediate.png}} [0%] === Version 3.0 (Spring 2016) === # Multiphysics * Incompressible elasticity via a pressure field [[Image(difficult.png, 25px)]] * Elasticity + heat flow [[Image(difficult.png, 25px)]] * Elasticity + fluid flow [[Image(difficult.png, 25px)]] # GUI interface for specifying parameters # Switch to using PETSc time-stepping (TS) algorithms. {{intermediate.png}} [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. # Begin implementation of data assimilation capabilities via adjoint equation. === Version 3.1 (Fall 2016) === # Earthquake cycle modeling [[Image(difficult.png, 25px)]] * 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. {{intermediate.png}} # Moment tensor point sources via equivalent body forces [[Image(difficult.png, 25px)]] 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 {{expert.png}} * 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. # Data assimilation * Use flexibility of multiphysics implementation to support inclusion of data assimilation {{expert.png}} ====Minor features ==== # Use KD tree search algorithm to allow output of time histories at an arbitrary location [[Image(difficult.png, 25px)]] # Combined prescribed slip / spontaneous rupture fault condition [[Image(difficult.png, 25px)]] * 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. [[Image(difficult.png, 25px)]]