# PETSc in a nutshell See {any}`handson` to immediately jump in and run PETSc code. PETSc/TAO is a tool for writing, analyzing, and optimizing large-scale numerical simulations. ```{image} /images/manual/library_structure.svg :align: center :alt: PETSc Structure Diagram ``` ## Algebraic objects - {any}`Vectors ` - containers for simulation solutions, right-hand sides of linear systems, etc (`Vec`). - {any}`Matrices ` - contain Jacobians and operators that define linear systems (`Mat`). - {any}`Multiple sparse and dense matrix storage formats`, - {any}`Limited memory variable metric representations`, - {any}`block` and {any}`nested` representations, - {any}`Easy, efficient matrix assembly and interface `. - Indices - used to access portions of vectors and matrix, for example {1,2,4} or 1:10 (`IS`). ## Solvers - {any}`Linear solvers` based on preconditioners (`PC`) and Krylov subspace methods (`KSP`). - {any}`Nonlinear solvers ` (`SNES`). - {any}`Time integrators `, (ODE/PDE), explicit, implicit, IMEX, (`TS`) - Local and global error estimators - {any}`section_sa`. - {any}`Optimization ` with equality and inequality constraints, first and second order (Newton) methods (`Tao`). - Eigenvalue/Eigenvectors and related algorithms in the package [SLEPc](https://slepc.upv.es). ## Model/Discretization Interfaces to Solvers - Simple structured grids, `DMDA`. - Staggered grids, {any}`ch_stag`, `DMSTAG`. - Unstructured grids, {any}`ch_unstructured`, `DMPLEX`. - Networks/graphs, for example the power grid, river networks, the nervous system, {any}`ch_network`, `DMNETWORK`. - Quad or octree grids, `DMFOREST`. - Particles, `DMSWARM`. :::{seealso} For full feature list see: - {ref}`Vector table ` - {ref}`Matrix table ` - {ref}`Linear solvers table ` - {ref}`Nonlinear solvers table ` - {ref}`ODE integrators table ` - {ref}`Optimizers table ` - {ref}`Model/discretization interfaces to solvers table ` ::: ## Utilities for Simulations/Solvers Runtime - control of the simulation via {any}`runtime options ` - visualization of the solvers and simulation via {any}`viewers `, - {any}`monitoring ` of solution progress, - {any}`profiling ` of the performance, - robust {any}`error handling `.