PETSc components provide the functionality required for many parallel solutions of PDEs.
      
        - Vec
- 
        Provides the vector operations required for setting up and
        solving large-scale linear and nonlinear problems.  Includes easy-to-use
        parallel scatter and gather operations, as well as special-purpose code
        for handling ghost points for regular data structures.
        
- Mat
- 
        A large suite of data structures and code for the manipulation of
        parallel sparse matrices. Includes four different parallel matrix
        data structures, each appropriate for a different class of problems.
        
- PC
- 
        A collection of sequential and parallel preconditioners,
        including (sequential) ILU(k), LU, and (both sequential and parallel)
        block Jacobi, overlapping additive Schwarz methods and structured MG.
        
- KSP
- 
        Parallel implementations of many popular Krylov subspace
        iterative methods, including GMRES, CG, CGS, Bi-CG-Stab, two variants
        of TFQMR, CR, and LSQR. All are coded so that they are immediately
        usable with any preconditioners and any matrix data structures,
        including matrix-free methods.
        
- SNES
- 
        Data-structure-neutral implementations of Newton-like
        methods for nonlinear systems. Includes both line search and trust
        region techniques with a single interface. Employs by default the above
        data structures and linear solvers. Users can set custom monitoring
        routines, convergence criteria, etc.
        
- TS
- 
        Code for the time evolution of solutions of PDEs. In
        addition, provides pseudo-transient continuation techniques for
        computing steady-state solutions.