== !PyLith Development Plans, Jun 2016 == Priorities for !PyLith software development, such as new features and enhancements. This a draft for community comment (Jun 24, 2016). 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 is slower than in the past because Brad Aagaard (who is not funded by CIG) is unable to devote as much time to !PyLith development due to a substantial increase of other obligations. === Version 3.0 (Spring 2017) === # Multiphysics [[Image(expert.png, 40px)]] 15% * Setup modular approach for specifying governing equations and computing residuals and Jacobians. [[Image(expert.png, 40px)]] * Incompressible elasticity via a pressure field [[Image(intermediate.png, 25px)]] * Elasticity + heat flow [[Image(difficult.png, 25px)]] * Poroelasticity [[Image(difficult.png, 25px)]] # Higher order basis functions [[Image(difficult.png, 25px)]] 20% * Allow user to select order of basis functions independent of the mesh (which defines the geometry). This permits higher resolution for a given mesh. # Switch to using PETSc time-stepping (TS) algorithms. [[Image(intermediate.png, 25px)]] 25% * 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. # Improve fault formulation for spontaneous rupture [[Image(intermediate.png, 25px)]] 10% * Removes inner solve associated with updating Lagrange multipliers. This will significantly accelerate the nonlinear solve. # Add Drucker-Prager with relaxation to yield surface bulk rheology [[Image(intermediate.png, 25px)]] 0% === Version 3.1 (late 2017) === # Reorganize top-level code to allow different startup cases [[Image(intermediate.png, 25px)]] 0% * Elastic prestep * User-specified initial solution * Checkpoint via special spatial database? * Reorganization for time-dependent Green's functions and adjoints # Multilevel nonlinear solve # Radial basis functions for spatial databases [[Image(intermediate.png, 25px)]] 0% === Version 4.0 (TBD) === # 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.[[Image(intermediate.png, 25px)]] # 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 [[Image(expert.png, 40px)]] * 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 [[Image(expert.png, 40px)]] ==== Minor features ==== # GUI interface for specifying parameters [[Image(difficult.png, 25px)]] 25% # Begin implementation of data assimilation capabilities via adjoint equation. # 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)]]