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.19, 2023. 33 http://dx.doi.org/10.2172/1968587, 34 https://petsc.org/release/docs/manual/manual.pdf 35 36.. [petsc-efficient] Satish Balay, Victor Eijkhout, William D. Gropp, 37 Lois Curfman McInnes and Barry F. Smith. Efficient Management of 38 Parallelism in Object Oriented Numerical Software Libraries. Modern 39 Software Tools in Scientific Computing. E. Arge, A. M. Bruaset and 40 H. P. Langtangen, editors. 163--202. Birkhauser Press. 1997. 41 42.. include:: links.txt 43 44 45Components 46---------- 47 48PETSc is designed with an object-oriented style. Almost all 49user-visible types are abstract interfaces with implementations that 50may be chosen at runtime. Those objects are managed through handles to 51opaque data structures which are created, accessed and destroyed by 52calling appropriate library routines. 53 54PETSc consists of a variety of components. Each component manipulates 55a particular family of objects and the operations one would like to 56perform on these objects. These components provide the functionality 57required for many parallel solutions of PDEs. 58 59:Vec: Provides the vector operations required for setting up and 60 solving large-scale linear and nonlinear problems. Includes 61 easy-to-use parallel scatter and gather operations, as well as 62 special-purpose code for handling ghost points for regular data 63 structures. 64 65:Mat: A large suite of data structures and code for the manipulation 66 of parallel sparse matrices. Includes four different parallel 67 matrix data structures, each appropriate for a different class 68 of problems. 69 70:PC: A collection of sequential and parallel preconditioners, 71 including (sequential) ILU(k), LU, and (both sequential and 72 parallel) block Jacobi, overlapping additive Schwarz methods 73 and (through BlockSolve95) ILU(0) and ICC(0). 74 75:KSP: Parallel implementations of many popular Krylov subspace 76 iterative methods, including GMRES, CG, CGS, Bi-CG-Stab, two 77 variants of TFQMR, CR, and LSQR. All are coded so that they are 78 immediately usable with any preconditioners and any matrix data 79 structures, including matrix-free methods. 80 81:SNES: Data-structure-neutral implementations of Newton-like methods 82 for nonlinear systems. Includes both line search and trust 83 region techniques with a single interface. Employs by default 84 the above data structures and linear solvers. Users can set 85 custom monitoring routines, convergence criteria, etc. 86 87:TS: Code for the time evolution of solutions of PDEs. In addition, 88 provides pseudo-transient continuation techniques for computing 89 steady-state solutions. 90