1Overview 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, 31 S. Zampini, H. Zhang, and H. Zhang, J. Zhang, 32 *PETSc/TAO Users Manual*, ANL-21/39 - Revision 3.18, 2022. 33 https://petsc.org/release/docs/manual/manual.pdf 34 35.. [petsc-efficient] Satish Balay, Victor Eijkhout, William D. Gropp, 36 Lois Curfman McInnes and Barry F. Smith. Efficient Management of 37 Parallelism in Object Oriented Numerical Software Libraries. Modern 38 Software Tools in Scientific Computing. E. Arge, A. M. Bruaset and 39 H. P. Langtangen, editors. 163--202. Birkhauser Press. 1997. 40 41.. include:: links.txt 42 43 44Components 45---------- 46 47PETSc is designed with an object-oriented style. Almost all 48user-visible types are abstract interfaces with implementations that 49may be chosen at runtime. Those objects are managed through handles to 50opaque data structures which are created, accessed and destroyed by 51calling appropriate library routines. 52 53PETSc consists of a variety of components. Each component manipulates 54a particular family of objects and the operations one would like to 55perform on these objects. These components provide the functionality 56required for many parallel solutions of PDEs. 57 58:Vec: Provides the vector operations required for setting up and 59 solving large-scale linear and nonlinear problems. Includes 60 easy-to-use parallel scatter and gather operations, as well as 61 special-purpose code for handling ghost points for regular data 62 structures. 63 64:Mat: A large suite of data structures and code for the manipulation 65 of parallel sparse matrices. Includes four different parallel 66 matrix data structures, each appropriate for a different class 67 of problems. 68 69:PC: A collection of sequential and parallel preconditioners, 70 including (sequential) ILU(k), LU, and (both sequential and 71 parallel) block Jacobi, overlapping additive Schwarz methods 72 and (through BlockSolve95) ILU(0) and ICC(0). 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