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