PETSc (Portable, Extensible Toolkit for Scientific Computation) provides a suite of data structures and routines for the scalable (parallel) solution of scientific applications modeled by partial differential equations, and is intended for use in large-scale application projects. The toolkit includes a large suite of parallel linear, nonlinear equation solvers and ODE integrators that are easily used in application codes written in C, C++, Fortran and Python. PETSc provides many of the mechanisms needed within parallel application codes, such as simple parallel matrix and vector assembly routines that allow the overlap of communication and computation. In addition, PETSc (pronounced PET-see) includes support for managing parallel PDE discretizations.
Please see citation information here: https://petsc.org/release/#doc-index-citing-petsc