xref: /petsc/src/binding/petsc4py/docs/source/overview.rst (revision b63c620b66da884efdf690e70d6f9f5511a4e974)
1PETSc Overview
2==============
3
4PETSc_ is a suite of data structures and routines for the
5scalable (parallel) solution of scientific applications modeled by
6partial differential equations. It employs the MPI_ standard for all
7message-passing communication.
8
9PETSc is intended for use in large-scale application projects
10[petsc-efficient]_, and several ongoing computational science projects
11are built around the PETSc libraries. With strict attention to
12component interoperability, PETSc facilitates the integration of
13independently developed application modules, which often most
14naturally employ different coding styles and data structures.
15
16PETSc is easy to use for beginners [petsc-user-ref]_. Moreover, its
17careful design allows advanced users to have detailed control over the
18solution process. PETSc includes an expanding suite of parallel linear
19and nonlinear equation solvers that are easily used in application
20codes written in C, C++, and Fortran. PETSc provides many of the
21mechanisms needed within parallel application codes, such as simple
22parallel matrix and vector assembly routines that allow the overlap of
23communication and computation.
24
25.. [petsc-user-ref] S. Balay, S. Abhyankar, M. Adams, S. Benson, J. Brown,
26  P. Brune, K. Buschelman, E. Constantinescu, L. Dalcin, A. Dener,
27  V. Eijkhout, J. Faibussowitsch, W. Gropp, V. Hapla, T. Isaac, P. Jolivet,
28  D. Karpeyev, D. Kaushik, M. Knepley, F. Kong, S. Kruger,
29  D. May, L. Curfman McInnes, R. Mills, L. Mitchell, T. Munson,
30  J. Roman, K. Rupp, P. Sanan, J Sarich, B. Smith, H. Suh,
31  S. Zampini, H. Zhang, and H. Zhang, J. Zhang,
32  *PETSc/TAO Users Manual*, ANL-21/39 - Revision 3.22, 2024.
33  http://dx.doi.org/10.2172/2205494,
34  https://petsc.org/release/docs/manual/manual.pdf
35
36.. [petsc-efficient] Satish Balay, Victor Eijkhout, William D. Gropp,
37   Lois Curfman McInnes and Barry F. Smith. Efficient Management of
38   Parallelism in Object Oriented Numerical Software Libraries. Modern
39   Software Tools in Scientific Computing. E. Arge, A. M. Bruaset and
40   H. P. Langtangen, editors. 163--202. Birkhauser Press. 1997.
41
42.. include:: links.txt
43
44
45Components
46----------
47
48PETSc is designed with an object-oriented style. Almost all
49user-visible types are abstract interfaces with implementations that
50may be chosen at runtime. Those objects are managed through handles to
51opaque data structures which are created, accessed and destroyed by
52calling appropriate library routines.
53
54PETSc consists of a variety of components. Each component manipulates
55a particular family of objects and the operations one would like to
56perform on these objects. These components provide the functionality
57required for many parallel solutions of PDEs.
58
59:Vec:  Provides the vector operations required for setting up and
60       solving large-scale linear and nonlinear problems. Includes
61       easy-to-use parallel scatter and gather operations, as well as
62       special-purpose code for handling ghost points for regular data
63       structures.
64
65:Mat:  A large suite of data structures and code for the manipulation
66       of parallel sparse matrices. Includes several different parallel
67       matrix data structures, each appropriate for a different class
68       of problems.
69
70:PC:   A collection of sequential and parallel preconditioners,
71       including (sequential) ILU(k), LU, and (both sequential and
72       parallel) block Jacobi, overlapping additive Schwarz methods.
73
74:KSP:  Parallel implementations of many popular Krylov subspace
75       iterative methods, including GMRES, CG, CGS, Bi-CG-Stab, two
76       variants of TFQMR, CR, and LSQR. All are coded so that they are
77       immediately usable with any preconditioners and any matrix data
78       structures, including matrix-free methods.
79
80:SNES: Data-structure-neutral implementations of Newton-like methods
81       for nonlinear systems. Includes both line search and trust
82       region techniques with a single interface. Employs by default
83       the above data structures and linear solvers. Users can set
84       custom monitoring routines, convergence criteria, etc.
85
86:TS:   Code for the time evolution of solutions of PDEs. In addition,
87       provides pseudo-transient continuation techniques for computing
88       steady-state solutions.
89