PETSc is intended for use in large-scale application projects, many ongoing computational science projects are built around the PETSc libraries. PETSc is easy to use for beginners. Moreover, its careful design allows advanced users to have detailed control over the solution process. PETSc includes a large suite of parallel linear, nonlinear equation solvers and ODE integrators that are easily used in application codes written in C, C++, Fortran and Python. PETSc provides many of the mechanisms needed within parallel application codes, such as simple parallel matrix and vector assembly routines that allow the overlap of communication and computation. In addition, PETSc includes support for parallel distributed arrays useful for finite difference methods.
Features include:
-
Parallel vectors
- includes code for communicating ghost points
-
Parallel matrices
- several sparse storage formats
- easy, efficient assembly
- Scalable parallel preconditioners, Listing of preconditioners methods
- Krylov subspace methods, Listing of Krylov methods
- Parallel Newton-based nonlinear solvers, as well as a variety other nonlinear solvers such as Anderson mixing
- Parallel timestepping (ODE) solvers with local and global error estimators as well as forward and adjoint sensitivity capabilities
- Support for Nvidia GPUs
- Simple integrated graphics
- Support for a variety of IO options
- Complete documentation
- Automatic profiling of floating point and memory usage
- Consistent user interface
- Intensive error checking
- Portable to Linux, MacOS, UNIX and Windows
- Over one thousand examples
- PETSc is supported and will be actively enhanced for many years