===================
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
:alt: PETSc Structure Diagram
:align: center
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 `__.
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 `.