ETSc, the Portable Extensible Toolkit for Scientific computation, is a suite of data structures and routines for the parallel (and serial) implementation of large scale application codes. PETSc uses the MPI library for its message-passing communications.