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