xref: /petsc/src/binding/petsc4py/docs/source/overview.rst (revision 5aa9e7a84219fd02c28259db46d5f928fe59e824)
15808f684SSatish BalayOverview
25808f684SSatish Balay========
35808f684SSatish Balay
45808f684SSatish BalayPETSc_ is a suite of data structures and routines for the
55808f684SSatish Balayscalable (parallel) solution of scientific applications modeled by
65808f684SSatish Balaypartial differential equations. It employs the MPI_ standard for all
75808f684SSatish Balaymessage-passing communication.
85808f684SSatish Balay
95808f684SSatish BalayPETSc is intended for use in large-scale application projects
105808f684SSatish Balay[petsc-efficient]_, and several ongoing computational science projects
115808f684SSatish Balayare built around the PETSc libraries. With strict attention to
125808f684SSatish Balaycomponent interoperability, PETSc facilitates the integration of
135808f684SSatish Balayindependently developed application modules, which often most
145808f684SSatish Balaynaturally employ different coding styles and data structures.
155808f684SSatish Balay
165808f684SSatish BalayPETSc is easy to use for beginners [petsc-user-ref]_. Moreover, its
175808f684SSatish Balaycareful design allows advanced users to have detailed control over the
185808f684SSatish Balaysolution process. PETSc includes an expanding suite of parallel linear
195808f684SSatish Balayand nonlinear equation solvers that are easily used in application
205808f684SSatish Balaycodes written in C, C++, and Fortran. PETSc provides many of the
215808f684SSatish Balaymechanisms needed within parallel application codes, such as simple
225808f684SSatish Balayparallel matrix and vector assembly routines that allow the overlap of
235808f684SSatish Balaycommunication and computation.
245808f684SSatish Balay
25c7c82c6aSSatish Balay.. [petsc-user-ref] S. Balay, S. Abhyankar, M. Adams, S. Benson, J. Brown,
26c7c82c6aSSatish Balay  P. Brune, K. Buschelman, E. Constantinescu, L. Dalcin, A. Dener,
27*5aa9e7a8SSatish Balay  V. Eijkhout, J. Faibussowitsch, W. Gropp, V. Hapla, T. Isaac, P. Jolivet,
28c7c82c6aSSatish Balay  D. Karpeyev, D. Kaushik, M. Knepley, F. Kong, S. Kruger,
29c7c82c6aSSatish Balay  D. May, L. Curfman McInnes, R. Mills, L. Mitchell, T. Munson,
30c7c82c6aSSatish Balay  J. Roman, K. Rupp, P. Sanan, J Sarich, B. Smith,
31c7c82c6aSSatish Balay  S. Zampini, H. Zhang, and H. Zhang, J. Zhang,
32*5aa9e7a8SSatish Balay  *PETSc/TAO Users Manual*, ANL-21/39 - Revision 3.18, 2022.
33c7c82c6aSSatish Balay  https://petsc.org/release/docs/manual/manual.pdf
345808f684SSatish Balay
355808f684SSatish Balay.. [petsc-efficient] Satish Balay, Victor Eijkhout, William D. Gropp,
365808f684SSatish Balay   Lois Curfman McInnes and Barry F. Smith. Efficient Management of
375808f684SSatish Balay   Parallelism in Object Oriented Numerical Software Libraries. Modern
385808f684SSatish Balay   Software Tools in Scientific Computing. E. Arge, A. M. Bruaset and
395808f684SSatish Balay   H. P. Langtangen, editors. 163--202. Birkhauser Press. 1997.
405808f684SSatish Balay
415808f684SSatish Balay.. include:: links.txt
425808f684SSatish Balay
435808f684SSatish Balay
445808f684SSatish BalayComponents
455808f684SSatish Balay----------
465808f684SSatish Balay
475808f684SSatish BalayPETSc is designed with an object-oriented style. Almost all
485808f684SSatish Balayuser-visible types are abstract interfaces with implementations that
495808f684SSatish Balaymay be chosen at runtime. Those objects are managed through handles to
505808f684SSatish Balayopaque data structures which are created, accessed and destroyed by
515808f684SSatish Balaycalling appropriate library routines.
525808f684SSatish Balay
535808f684SSatish BalayPETSc consists of a variety of components. Each component manipulates
545808f684SSatish Balaya particular family of objects and the operations one would like to
555808f684SSatish Balayperform on these objects. These components provide the functionality
565808f684SSatish Balayrequired for many parallel solutions of PDEs.
575808f684SSatish Balay
585808f684SSatish Balay:Vec:  Provides the vector operations required for setting up and
595808f684SSatish Balay       solving large-scale linear and nonlinear problems. Includes
605808f684SSatish Balay       easy-to-use parallel scatter and gather operations, as well as
615808f684SSatish Balay       special-purpose code for handling ghost points for regular data
625808f684SSatish Balay       structures.
635808f684SSatish Balay
645808f684SSatish Balay:Mat:  A large suite of data structures and code for the manipulation
655808f684SSatish Balay       of parallel sparse matrices. Includes four different parallel
665808f684SSatish Balay       matrix data structures, each appropriate for a different class
675808f684SSatish Balay       of problems.
685808f684SSatish Balay
695808f684SSatish Balay:PC:   A collection of sequential and parallel preconditioners,
705808f684SSatish Balay       including (sequential) ILU(k), LU, and (both sequential and
715808f684SSatish Balay       parallel) block Jacobi, overlapping additive Schwarz methods
725808f684SSatish Balay       and (through BlockSolve95) ILU(0) and ICC(0).
735808f684SSatish Balay
745808f684SSatish Balay:KSP:  Parallel implementations of many popular Krylov subspace
755808f684SSatish Balay       iterative methods, including GMRES, CG, CGS, Bi-CG-Stab, two
765808f684SSatish Balay       variants of TFQMR, CR, and LSQR. All are coded so that they are
775808f684SSatish Balay       immediately usable with any preconditioners and any matrix data
785808f684SSatish Balay       structures, including matrix-free methods.
795808f684SSatish Balay
805808f684SSatish Balay:SNES: Data-structure-neutral implementations of Newton-like methods
815808f684SSatish Balay       for nonlinear systems. Includes both line search and trust
825808f684SSatish Balay       region techniques with a single interface. Employs by default
835808f684SSatish Balay       the above data structures and linear solvers. Users can set
845808f684SSatish Balay       custom monitoring routines, convergence criteria, etc.
855808f684SSatish Balay
865808f684SSatish Balay:TS:   Code for the time evolution of solutions of PDEs. In addition,
875808f684SSatish Balay       provides pseudo-transient continuation techniques for computing
885808f684SSatish Balay       steady-state solutions.
89