## `p4est`: Parallel AMR on Forests of Octrees

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.

### Source code

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 the old stable version 0.3.4.2 that is known to work with deal.II, or have a look at other official releases.

### Autogenerated API documentation

This is the doxygen output for `p4est`. You can recreate it with `make doxygen` after calling `configure`.

### Howto document and step-by-step examples

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.

### Questions / Get involved

We appreciate comments, questions, issues reported, or suggestions for adding features. Please email us at p4est@librelist.com. This mailing list is archived; see librelist.com for details. Your first message will auto-subscribe you and provide instructions to proceed.

We will also consider pull requests posted on github.

### Technical papers / Citations

If you use `p4est` for your publications, please cite it as follows [1a]. The reference [1b] is for people specifically using the topology iterator and/or the high-order node numbering. [1c] is for people interested in the 2:1 balance details or the strong scaling limit.

[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. Submitted (arXiv:1406.0089), 2014.

[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 "for all o in R;" it should read "for all o in R and R^new."

`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 by 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` authors:
Carsten Burstedde
Lucas C. Wilcox
Tobin Isaac

The development of `p4est` was partially supported by the US National Science Foundation (NSF Grants No. OCI-0749334, CCF-0427985, CNS-0540372, CNS-0619838, DMS-0724746, OPP-0941678) and the US Department of Energy (DOE Grants No. 06ER25782, 08ER25860, SC0002710). The authors thank the Texas Advanced Computing Center (TACC) for providing them with access to the Ranger supercomputer under NSF TeraGrid award MCA04N026, and the National Center for Computational Science (NCCS) for early-user access to the Jaguar Cray XT5 supercomputer. Any opinions, findings and conclusions or recomendations expressed on this web page or in the source code and documentation are those of the authors and do not necessarily reflect the views of the National Science Foundation (NSF).