===================
PETSc in a nutshell
===================

PETSc/TAO is a tool for writing, analyzing, and optimizing properties of large-scale numerical simulations.

.. image:: /images/docs/manual/library_structure.svg
   :alt: PETSc Structure Diagram
   :align: center

Algebraic objects
=================

- ``Vec`` - containers for simulation solutions, right hand sides of linear systems, etc.

- ``Mat`` - contain Jacobians and operators that define linear systems

- ``IS`` indices - used to access portions of vectors and matrix, for example {1,2,4} or 1:10

Solvers
=======

- ``PC`` preconditioners - approximate solvers to algebra systems without a history of previous iterations

- ``KSP`` Krylov subspace methods - approximate solvers with a history of previous iterations

- ``SNES`` nonlinear equation solvers

- ``TS`` time integrators (ODE/PDE), explicit, implicit, local and global error estimators

- ``TSAdjoint`` derivatives/sensitivities of functions of ODE/PDE integration solutions

- ``TAO`` - optimization, with equality and inequality constraints, first and second order (Newton) methods

Connectors of continuum models, meshes, and discretizations to solvers and algebraic objects
============================================================================================

- ``DMDA`` - for simulations computed on simple structured grids

- ``DMSTAG`` - for simulations computed on staggered grids

- ``DMPLEX``  - for simulation computed on unstructured meshes

- ``DMNETWORK`` - for simulations on networks or graphs, for example the power grid, river networks, the nervous system

- ``DMP4EST`` - for simulations on collections of quad or octree meshes

- ``DMSWARM`` - for simulations on particles


Utilities
=========

- ``PetscOptions`` - control of discretization and solution process

- ``PetscViewer`` - visualizing algebraic objects, solvers, connectors

- Monitor - monitoring of solution progress

- ``Profiling`` - profiling of the performance of the simulation solution process
