The p4est software library enables the dynamic management of a collection of adaptive octrees, conveniently called a forest of octrees. p4est is designed to work in parallel and scales to hundreds of thousands of processor cores. It is free software released under GNU General Public Licence version 2, or (at your option) any later version.
Please see the github repository of p4est or download the latest release tarball. The source comes with commented example programs and test cases. You can also download older stable releases. Please note that the so-called releases auto-generated by github do not work (they are lacking the subdirectory sc and some generated files).
Contributed packages of p4est are available for Gentoo Linux (these are also available on the deal.ii download page) and the Homebrew distribution.
This is the doxygen output for p4est. You can recreate it with make doxygen after calling configure.
This as a howto document that documents the basic interface design of p4est and comments on the step-by-step examples included in the source code.
We appreciate comments, bug reports, and suggestions for adding features. To this end, we recommend using the issue tracker. We will also consider pull requests. For further questions, please email us at info@p4est.org.
We had previously used a now-defunct mailing list that is archived.
If you use p4est for your publications, please cite it as follows [1a]. The reference [1b] is for people specifically using the topology iterator, the high-order node numbering, or the top-down search. [1c] is for people interested in the 2:1 balance details, the strong scaling limit and/or memory footprint.
[1a]
Carsten Burstedde, Lucas C. Wilcox, and Omar Ghattas,
p4est: Scalable Algorithms for Parallel Adaptive Mesh Refinement on
Forests of Octrees.
Published in SIAM Journal on Scientific Computing 33 no. 3 (2011),
pages 1103-1133
(download).
@ARTICLE{BursteddeWilcoxGhattas11, author = {Carsten Burstedde and Lucas C. Wilcox and Omar Ghattas}, title = {{\texttt{p4est}}: Scalable Algorithms for Parallel Adaptive Mesh Refinement on Forests of Octrees}, journal = {SIAM Journal on Scientific Computing}, volume = {33}, number = {3}, pages = {1103-1133}, year = {2011}, doi = {10.1137/100791634} }
[1b]
Tobin Isaac, Carsten Burstedde, Lucas C. Wilcox, and Omar Ghattas,
Recursive algorithms for distributed forests of octrees.
Published in SIAM Journal on Scientific Computing 37 no. 5 (2015),
pages C497-C531
(download).
@ARTICLE{IsaacBursteddeWilcoxEtAl15, author = {Tobin Isaac and Carsten Burstedde and Lucas C. Wilcox and Omar Ghattas}, title = {Recursive algorithms for distributed forests of octrees}, journal = {SIAM Journal on Scientific Computing}, volume = {37}, number = {5}, pages = {C497--C531}, year = {2015}, doi = {10.1137/140970963} }
[1c]
Tobin Isaac, Carsten Burstedde, and Omar Ghattas,
Low-Cost Parallel Algorithms for 2:1 Octree Balance.
Published in Proceedings of the 26th IEEE International Parallel &
Distributed Processing Symposium, 2012
(download).
Errata:
In Algorithm 7, line 3 reads
\(\text{for all}\ o\in R\ \text{do}\);
it should read
\(\text{for all}\ o\in R\cup R^{\text{new}}\ \text{do}\).
p4est uses libsc written by the same authors and others for basic helper functionality such as logging, array and hash data structures, parallel statistics, and more. libsc also integrates the third-party libraries zlib and lua. libsc is free software under LGPL v2.1 (or later) and hosted under github as well.
May I copy and modify p4est source code for internal use? | yes |
Will my source that contains copied or modified p4est code automatically be GPL? | yes |
Will my source that includes p4est header files and is supposed to be linked against p4est automatically be GPL? | no |
May I distribute my source that includes p4est header files and is supposed to be linked against p4est? | yes |
May I distribute a binary executable that links against p4est if I distribute my source code along with it? | yes |
May I distribute a binary executable that links against p4est without distributing my source code along with it? | no, but: |
May I contact UT Austin OTC to negotiate permission to distribute a binary executable without the source? | yes |
The ForestClaw project is an ongoing collaboration with Donna Calhoun to solve hyperpolic PDEs.
The generic adaptive finite element software deal.II now interfaces to p4est to obtain distributed mesh information [2]. The corresponding algorithms are described in this article. If you use deal.II with p4est for your publications, please cite it as:
[2]
Wolfgang Bangerth, Carsten Burstedde, Timo Heister, and Martin
Kronbichler,
Algorithms and Data Structures for Massively Parallel Generic
Adaptive Finite Element Codes.
Published in ACM Transactions on Mathematical Software 38 No. 2 (2011),
pages 14:1-14:28
(download).
@ARTICLE{BangerthBursteddeHeisterEtAl11, author = {Wolfgang Bangerth and Carsten Burstedde and Timo Heister and Martin Kronbichler}, title = {Algorithms and Data Structures for Massively Parallel Generic Adaptive Finite Element Codes}, journal = {ACM Transactions on Mathematical Software}, volume = {38}, number = {2}, pages = {14:1-14:28}, year = {2011} }
The p4est library is now used to implement AMR in PETSc, the Portable Extensible Toolkit for Scientific Computation. The interface and design decisions are described in this article. If you use the p4est backend for PETSc for your publications, please cite it as:
[3]
Tobin Isaac, Matthew G. Knepley,
Support for Non-conformal Meshes in PETSc's DMPlex Interface
(download).
@ARTICLE{IsaacKnepley15, author = {Tobin Isaac and Matthew G. Knepley}, title = {Support for Non-conformal Meshes in {PETSc}'s {DMPlex} Interface}, journal = {ACM Transactions on Mathematical Software}, eprinttype = {arxiv}, eprint = {1508.02470}, url = {http://arxiv.org/abs/1508.02470} }
The p4est authors:
Carsten Burstedde
Lucas C. Wilcox
Tobin
Isaac
Thanks to our contributors! Please see the
AUTHORS
file for details.