xref: /petsc/doc/index.md (revision 9680b7cedbd3b2fa4b943552cd701a6633a2ad02)
1# PETSc
2
3PETSc, the Portable, Extensible Toolkit for Scientific Computation,
4pronounced PET-see ([/ˈpɛt-siː/](https://en.wikipedia.org/wiki/Help:IPA/English#Key)), is
5for the scalable (parallel) solution of scientific
6applications modeled by partial differential equations (PDEs). It has bindings for C, Fortran, and Python (via petsc4py).
7PETSc also contains TAO, the Toolkit for Advanced Optimization, software library.
8They support MPI, and GPUs through
9CUDA, HIP, Kokkos, or OpenCL, as well as hybrid MPI-GPU parallelism; they also support the NEC-SX Tsubasa Vector Engine.
10Immediately jump in and run PETSc and TAO code {any}`handson`.
11
12## News
13
14The exciting {any}`2025 PETSc Annual User Meeting<2025_meeting>` recently took place May 20-21, 2025 in Buffalo, New York, USA.
15Follow the link for abstracts and talks.
16
17[SIAM News article](https://www.siam.org/publications/siam-news/articles/opencarp-personalized-computational-model-of-the-heart-examines-cardiac-rhythm/)
18on the PETSc-powered [OpenCarp](https://opencarp.org/) cardiac electrophysiology simulator.
19
20PETSc is now on [BlueSky](https://bsky.app/profile/petsc.org).
21
22## Book
23
24> **PETSc for Partial Differential Equations: Numerical Solutions in C and Python**, by Ed Bueler.
25>
26> - [Book from SIAM Press](https://my.siam.org/Store/Product/viewproduct/?ProductId=32850137)
27> - [Google Play E-book](https://play.google.com/store/books/details/Ed_Bueler_PETSc_for_Partial_Differential_Equations?id=tgMHEAAAQBAJ)
28
29## Main Topics
30
31```{toctree}
32:maxdepth: 1
33
34overview/index
35install/index
36tutorials/index
37manual/index
38manualpages/index
39petsc4py/index
40faq/index
41community/index
42developers/index
43miscellaneous/index
44```
45
46<a href="./manual/manual.pdf">PETSc/TAO Users Manual in PDF</a>
47
48(doc_toolkits_use_petsc)=
49
50## Toolkits/libraries that use PETSc
51
52- [ADflow](https://github.com/mdolab/adflow) An open-source
53  computational fluid dynamics solver for aerodynamic and
54  multidisciplinary optimization
55- [BOUT++](https://boutproject.github.io) Plasma simulation
56  in curvilinear coordinate systems
57- [Chaste](https://www.cs.ox.ac.uk/chaste/) Cancer, Heart and
58  Soft Tissue Environment
59- [code_aster](https://www.code-aster.org/V2/spip.php?rubrique2)
60  open-source general purpose finite element code for solid and
61  structural mechanics
62- [code_saturne](https://www.code-saturne.org)
63  open-source general purpose code for fluid dynamics
64- [COOLFluiD](https://github.com/andrealani/COOLFluiD) CFD,
65  plasma and multi-physics simulation package
66- [DAFoam](https://dafoam.github.io) Discrete adjoint solvers
67  with [OpenFOAM](https://openfoam.com) for aerodynamic
68  optimization
69- [DAMASK](https://damask-multiphysics.org) Unified multi-physics
70  crystal plasticity simulation package
71- [DEAL.II](https://www.dealii.org/) C++-based finite element
72  simulation package
73- [DUNE-FEM](https://dune-project.org/sphinx/content/sphinx/dune-fem/) Python and C++-based finite element simulation package
74- [FEniCS](https://fenicsproject.org/) Python-based finite
75  element simulation package
76- [Firedrake](https://www.firedrakeproject.org/) Python-based
77  finite element simulation package
78- [Fluidity](https://fluidityproject.github.io/) a finite
79  element/volume fluids code
80- [FreeFEM](https://freefem.org/) finite element and boundary element PDE solver
81  with embedded domain specific language
82- [GetDP](https://www.getdp.info/) a General Environment for the Treatment of Discrete Problems
83- [Gridap](https://gridap.github.io/Gridap.jl/stable/) a Julia-based finite element simulation package through the [GridapPETSc](https://github.com/gridap/GridapPETSc.jl) plugin
84- [hIPPYlib](https://hippylib.github.io) [FEniCS](https://fenicsproject.org/)-based toolkit
85  for solving deterministic and Bayesian inverse
86  problems governed by PDEs
87- [libMesh](https://libmesh.github.io) adaptive finite element
88  library
89- [MFEM](https://mfem.org/) lightweight, scalable C++ library
90  for finite element methods
91- [MLSVM](https://github.com/esadr/mlsvm), Multilevel Support
92  Vector Machines with PETSc.
93- [MoFEM](http://mofem.eng.gla.ac.uk/mofem/html), An open
94  source, parallel finite element library
95- [MOOSE - Multiphysics Object-Oriented Simulation
96  Environment](https://mooseframework.inl.gov/) finite element
97  framework, built on [libMesh](https://libmesh.github.io).
98- [OOFEM](http://www.oofem.org) object-oriented finite element
99  library
100- [OpenCarp](https://opencarp.org/) Cardiac electrophysiology simulator
101- [OpenFOAM](https://develop.openfoam.com/modules/external-solver)
102  Available as an extension for linear solvers for OpenFOAM
103- [OpenFPM](https://openfpm.mpi-cbg.de/) framework for particles and mesh simulation
104- [OpenFVM](http://openfvm.sourceforge.net/) finite volume
105  based CFD solver
106- [PermonSVM](http://permon.vsb.cz/permonsvm.htm) support
107  vector machines and
108  [PermonQP](http://permon.vsb.cz/permonqp.htm) quadratic
109  programming
110- [PetIGA](https://github.com/dalcinl/PetIGA) A framework
111  for high performance Isogeometric Analysis
112- [PFLOTRAN](https://pflotran.org/) An open source, state-of-the-art
113  code for massively parallel simulation of subsurface flow, reactive transport, geomechanics, and electrical resistivity tomography
114- [PHAML](https://math.nist.gov/phaml/) The Parallel
115  Hierarchical Adaptive MultiLevel Project
116- [preCICE](https://www.precice.org) - A fully parallel
117  coupling library for partitioned multi-physics simulations
118- [PyClaw](https://www.clawpack.org/pyclaw/) A massively
119  parallel, high order accurate, hyperbolic PDE solver
120- [SLEPc](https://slepc.upv.es/) Scalable Library for
121  Eigenvalue Problems
122
123(doc_index_citing_petsc)=
124
125## Citing PETSc
126
127You can run PETSc programs with the option `-citations` to print appropriate citations for the software and algorithms being used in that program.
128
129For general citations on PETSc please use the following:
130
131```{literalinclude} /petsc.bib
132:append: '}'
133:end-at: year
134:language: none
135:start-at: petsc-web-page
136```
137
138```{literalinclude} /petsc.bib
139:append: '}'
140:end-at: year
141:language: none
142:start-at: petsc-user-ref
143```
144
145```{literalinclude} /petsc.bib
146:append: '}'
147:end-at: year
148:language: none
149:start-at: petsc-efficient
150```
151
152For petsc4py usage please cite
153
154```{literalinclude} /petsc.bib
155:append: '}'
156:end-at: year
157:language: none
158:start-at: dalcinpazklercosimo2011
159```
160
161For PETSc usage on GPUs please cite
162
163```{literalinclude} /petsc.bib
164:append: '}'
165:end-at: author
166:language: none
167:start-at: mills2021
168```
169
170For `PetscSF` -- parallel communication in PETSc -- please cite
171
172```{literalinclude} /petsc.bib
173:append: '}'
174:end-at: pages
175:language: none
176:start-at: petscsf2022
177```
178
179If you use the `TS` component of PETSc please cite the following:
180
181```{literalinclude} petsc.bib
182:append: '}'
183:end-at: year
184:language: none
185:start-at: abhyankaretal2018
186```
187
188If you utilize the `TS` adjoint solver please cite
189
190```{literalinclude} /petsc.bib
191:append: '}'
192:end-at: year
193:language: none
194:start-at: zhang2022tsadjoint
195```
196