xref: /petsc/doc/manual/about_this_manual.md (revision b11d9968bc79904c690b122f9399be46447eb113)
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