This shows you the differences between two versions of the page.
Next revision | Previous revision Next revision Both sides next revision | ||
software:pylith:plans:2014 [2014/02/20 20:42] baagaard created |
software:pylith:plans:2014 [2014/02/25 22:29] baagaard [Version 2.1 (by Jun 2014)] |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== PyLith Development Plans ====== | + | ====== PyLith Development Plans, Feb 2014 ====== |
- | Software development plans for PyLith as of 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 (by end of Feb 2014) ===== | ===== Version 2.0 (by end of Feb 2014) ===== | ||
- | * Replace C++ Sieve implementation of finite-element data structures with C DMPlex implementation. expert {{expert.png}}[99%] | + | **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 {{expert.png}}[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. | * 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. {{done.png}} | ||
+ | - Add ability to recursively refine a mesh. {{done.png}} | ||
+ | |||
+ | ===== 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 {{intermediate.png}} [10%] | ||
+ | * Removes inner solve associated with updating Lagrange multipliers. This will significantly accelerate the nonlinear solve. | ||
+ | - 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 {{difficult.png}} [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? | ||
+ | - Radial basis functions for spatial databases {{intermediate.png}} [0%] | ||
+ | - Improved handling of fault edges {{intermediate.png}} [25%] | ||
+ | ===== Version 2.2 (Summer/Fall 2014) ===== | ||
+ | |||
+ | - Multiphysics | ||
+ | - Incompressible elasticity via a pressure field {{difficult.png}} | ||
+ | - Elasticity + heat flow {{difficult.png}} | ||
+ | - Elasticity + fluid flow {{difficult.png}} | ||
+ | - 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. | ||
+ | |||
+ | ===== Version 2.3 (Spring 2015) ===== | ||
+ | |||
+ | - Earthquake cycle modeling {{difficult.png}} | ||
+ | * 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 {{difficult.png}} [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 organization to support inclusion of data assimilation {{expert.png}} | ||
- | * Switch from using Subversion to Git for version control. {{done.png}} | + | * Minor features |
- | * Add ability to recursively refine a mesh. {{done.png}} | + | - Use KD tree search algorithm to allow output of time histories at an arbitrary location {{difficult.png}} |
- | | + | - Combined prescribed slip / spontaneous rupture fault condition {{difficult.png}} |
+ | * 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. {{difficult.png}} |