1*7f296bb3SBarry Smith# About This Manual 2*7f296bb3SBarry Smith 3*7f296bb3SBarry SmithThis manual describes the use of the Portable, Extensible Toolkit for Scientific Computation 4*7f296bb3SBarry Smith(PETSc) and the Toolkit for Advanced Optimization (TAO) for the numerical solution of 5*7f296bb3SBarry Smithpartial differential equations (PDEs) and related problems on high-performance 6*7f296bb3SBarry Smithcomputers. PETSc/TAO is a suite of data structures and routines that provide the 7*7f296bb3SBarry Smithbuilding blocks for implementing large-scale application codes 8*7f296bb3SBarry Smithon parallel (and serial) computers. PETSc uses the MPI standard for all 9*7f296bb3SBarry Smithdistributed memory communication. 10*7f296bb3SBarry Smith 11*7f296bb3SBarry SmithPETSc/TAO includes a large suite of parallel **linear solvers**, **nonlinear 12*7f296bb3SBarry Smithsolvers**, **time integrators**, and **optimizers** that may be used in application codes 13*7f296bb3SBarry Smithwritten in Fortran, C, C++, and Python (via petsc4py; see {any}`sec_getting_started` ). The library 14*7f296bb3SBarry Smithis organized hierarchically, enabling users to employ the abstraction level most appropriate for a particular problem. By using 15*7f296bb3SBarry Smithtechniques of object-oriented programming, PETSc provides enormous 16*7f296bb3SBarry Smithflexibility for users. 17*7f296bb3SBarry Smith 18*7f296bb3SBarry SmithPETSc is a sophisticated set of software tools; 19*7f296bb3SBarry Smithit initially has a steeper learning curve than packages such as MATLAB or a simple subroutine 20*7f296bb3SBarry Smithlibrary. In particular, for individuals without some experience programming in C, C++, Python, or Fortran and 21*7f296bb3SBarry Smithexperience using a debugger such as `gdb` or `lldb`, it may require a 22*7f296bb3SBarry Smithsignificant amount of time to take full advantage of the features that 23*7f296bb3SBarry Smithenable efficient software use. However, the power of the PETSc design 24*7f296bb3SBarry Smithand the algorithms it incorporates makes the efficient implementation 25*7f296bb3SBarry Smithof many application codes simpler than “rolling them” yourself. 26*7f296bb3SBarry Smith 27*7f296bb3SBarry Smith- For many tasks, a package such as MATLAB is often the best tool; PETSc 28*7f296bb3SBarry Smith is not intended for the classes of problems for which effective 29*7f296bb3SBarry Smith MATLAB code can be written. 30*7f296bb3SBarry Smith- Several packages (listed on <https://petsc.org/>), 31*7f296bb3SBarry Smith : built on PETSc, may satisfy your needs without requiring 32*7f296bb3SBarry Smith directly using PETSc. We recommend reviewing these packages' 33*7f296bb3SBarry Smith functionality before starting to code directly with PETSc. 34*7f296bb3SBarry Smith- PETSc can be used to provide a “MPI parallel linear 35*7f296bb3SBarry Smith solver” in an otherwise sequential or OpenMP parallel code. 36*7f296bb3SBarry Smith This approach can provide modest improvements in the application time 37*7f296bb3SBarry Smith by utilizing modest numbers of MPI processes. See `PCMPI` for details on how to 38*7f296bb3SBarry Smith utilize the PETSc MPI linear solver server. 39*7f296bb3SBarry Smith 40*7f296bb3SBarry SmithSince PETSc is under continued development, small changes in usage and 41*7f296bb3SBarry Smithcalling sequences of routines will occur. PETSc has been supported for twenty-five years; see 42*7f296bb3SBarry Smith{doc}`mailing list information on our website </community/mailing>` for 43*7f296bb3SBarry Smithinformation on contacting support. 44