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