xref: /petsc/src/binding/petsc4py/docs/source/overview.rst (revision 5ff6d247539c86491dc822dc7e845e819e6cc4a3)
16f336411SStefano ZampiniPETSc Overview
26f336411SStefano Zampini==============
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,
275aa9e7a8SSatish 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,
305636f27cSSatish Balay  J. Roman, K. Rupp, P. Sanan, J Sarich, B. Smith, H. Suh,
31c7c82c6aSSatish Balay  S. Zampini, H. Zhang, and H. Zhang, J. Zhang,
328cf7a3c0SSatish Balay  *PETSc/TAO Users Manual*, ANL-21/39 - Revision 3.24, 2025.
33*b2da12faSSatish Balay  https://doi.org/10.2172/2998643,
34c7c82c6aSSatish Balay  https://petsc.org/release/docs/manual/manual.pdf
355808f684SSatish Balay
365808f684SSatish Balay.. [petsc-efficient] Satish Balay, Victor Eijkhout, William D. Gropp,
375808f684SSatish Balay   Lois Curfman McInnes and Barry F. Smith. Efficient Management of
385808f684SSatish Balay   Parallelism in Object Oriented Numerical Software Libraries. Modern
395808f684SSatish Balay   Software Tools in Scientific Computing. E. Arge, A. M. Bruaset and
405808f684SSatish Balay   H. P. Langtangen, editors. 163--202. Birkhauser Press. 1997.
415808f684SSatish Balay
425808f684SSatish Balay.. include:: links.txt
435808f684SSatish Balay
445808f684SSatish Balay
455808f684SSatish BalayComponents
465808f684SSatish Balay----------
475808f684SSatish Balay
485808f684SSatish BalayPETSc is designed with an object-oriented style. Almost all
495808f684SSatish Balayuser-visible types are abstract interfaces with implementations that
505808f684SSatish Balaymay be chosen at runtime. Those objects are managed through handles to
515808f684SSatish Balayopaque data structures which are created, accessed and destroyed by
525808f684SSatish Balaycalling appropriate library routines.
535808f684SSatish Balay
545808f684SSatish BalayPETSc consists of a variety of components. Each component manipulates
555808f684SSatish Balaya particular family of objects and the operations one would like to
565808f684SSatish Balayperform on these objects. These components provide the functionality
575808f684SSatish Balayrequired for many parallel solutions of PDEs.
585808f684SSatish Balay
595808f684SSatish Balay:Vec:  Provides the vector operations required for setting up and
605808f684SSatish Balay       solving large-scale linear and nonlinear problems. Includes
615808f684SSatish Balay       easy-to-use parallel scatter and gather operations, as well as
625808f684SSatish Balay       special-purpose code for handling ghost points for regular data
635808f684SSatish Balay       structures.
645808f684SSatish Balay
655808f684SSatish Balay:Mat:  A large suite of data structures and code for the manipulation
669690009eSJose E. Roman       of parallel sparse matrices. Includes several different parallel
675808f684SSatish Balay       matrix data structures, each appropriate for a different class
685808f684SSatish Balay       of problems.
695808f684SSatish Balay
705808f684SSatish Balay:PC:   A collection of sequential and parallel preconditioners,
715808f684SSatish Balay       including (sequential) ILU(k), LU, and (both sequential and
729690009eSJose E. Roman       parallel) block Jacobi, overlapping additive Schwarz methods.
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