# PETSc/TAO Users Manual#

**Argonne National Laboratory**

**Mathematics and Computer Science Division**

Prepared by

**S. Balay** ^{1},
**S. Abhyankar** ^{1,2},
**M. F. Adams** ^{3},
**S. Benson** ^{1},
**J. Brown** ^{1,10},
**P. Brune** ^{1},
**K. Buschelman** ^{1},
**E. M. Constantinescu** ^{1},
**L. Dalcin** ^{4},
**A. Dener** ^{1},
**V. Eijkhout** ^{6},
**W. D. Gropp** ^{1},
**V. Hapla** ^{8},
**T. Isaac** ^{14},
**P. Jolivet** ^{12},
**D. Karpeev** ^{1},
**D. Kaushik** ^{1},
**M. G. Knepley** ^{1,9},
**F. Kong** ^{1,11},
**S. Kruger** ^{15},
**D. A. May** ^{7},
**L. Curfman McInnes** ^{1},
**R. Tran Mills** ^{1},
**L. Mitchell** ^{13},
**T. Munson** ^{1},
**J. E. Roman** ^{16},
**K. Rupp** ^{1},
**P. Sanan** ^{1,8},
**J. Sarich** ^{1},
**B. F. Smith** ^{17},
**S. Zampini** ^{4},
**H. Zhang** ^{1,5},
**H. Zhang** ^{1}, and
**J. Zhang** ^{1}

^{1}Mathematics and Computer Science Division, Argonne National Laboratory

^{2}Electricity Infrastructure and Buildings Division, Pacific Northwest National Laboratory

^{3}Computational Research, Lawrence Berkeley National Laboratory

^{4}Extreme Computing Research Center, King Abdullah University of Science and Technology

^{5}Department of Computer Science, Illinois Institute of Technology

^{6}Texas Advanced Computing Center, University of Texas at Austin

^{7}Department of Earth Sciences, University of Oxford

^{8}Institute of Geophysics, ETH Zurich

^{9}Department of Computer Science and Engineering, University at Buffalo

^{10}Department of Computer Science, University of Colorado, Boulder

^{11}Computational Frameworks, Idaho National Laboratory

^{12}Toulouse Institute of Compute Science Research

^{13}Department of Computer Science, Durham University

^{14}College of Computing, Georgia Tech

^{15}Tech-X Corporation

^{16}DSIC, Universitat PolitĂ¨cnica de ValĂ¨ncia

^{17}Flatiron Institute, Simons Foundation

This work was supported by the Office of Advanced Scientific Computing Research, Office of Science, U.S. Department of Energy, under Contract DE-AC02-06CH11357.

- Introduction to PETSc
- Programming with PETSc/TAO
- Vectors and Parallel Data
- Matrices
- KSP: Linear System Solvers
- SNES: Nonlinear Solvers
- TS: Scalable ODE and DAE Solvers
- Basic TS Options
- DAE Formulations
- Using Implicit-Explicit (IMEX) Methods
- GLEE methods
- Using fully implicit methods
- Using the Explicit Runge-Kutta timestepper with variable timesteps
- Special Cases
- Monitoring and visualizing solutions
- Error control via variable time-stepping
- Handling of discontinuities
- Explicit integrators with finite flement mass matrices
- Using TChem from PETSc
- Using Sundials from PETSc

- Performing sensitivity analysis
- Solving Steady-State Problems with Pseudo-Timestepping
- TAO: Optimization Solvers
- High Level Support for Multigrid with KSPSetDM() and SNESSetDM()
- DMPlex: Unstructured Grids in PETSc
- PetscDT: Discretization Technology in PETSc
- PetscFE: Finite Element Infrastructure in PETSc

- Additional Information
- PETSc for Fortran Users
- Using MATLAB with PETSc
- Profiling
- Hints for Performance Tuning
- The Use of BLAS and LAPACK in PETSc and external libraries
- Other PETSc Features
- PETSc on a process subset
- Runtime Options
- Viewers: Looking at PETSc Objects
- Using SAWs with PETSc
- Debugging
- Error Handling
- Numbers
- Parallel Communication
- Graphics
- Developer Environments
- Emacs Users
- Visual Studio Code Users
- Vi and Vim Users
- Eclipse Users
- Qt Creator Users
- Visual Studio Users
- XCode Users (The Apple GUI Development System)

- Unimportant and Advanced Features of Matrices and Solvers
- Running PETSc Tests
- Acknowledgments