Peano Documentation

PeanoCopyrightDashboardDocumentationHelp and supportDownload

The quickest way to familiarise with Peano 4 is to grab it from git, change into the subdirectory cookbook, translate the pdf there (pdflatex cookbook.tex), follow the installation instructions, and then change into examples/exahype2/euler. There’s a Jupyter notebook there (jupyter notebook) which runs you through an Euler example. Parallel to the notebook, you might wanna watch the tutorial videos below.

Peano 4

The documentation of Peano 4 consists of four parts:

  • Some tutorial videos (below). We strongly recommend that you start here, as this is the easiest way to familiarise yourself with the software and get something up and running.
  • The guidebook – a PDF document describing the overall software;
  • The source code documentation – an autogenerated html file which is distilled from the C++ core source code.
  • The API code documentation – an autogenerated html file which is distilled from the Python API source code.

Tutorials do exist for the following challenges:

  • ExaHyPE 2 (included in Peano 4) – installation and a first test run with finite volumes on regular grids (link)
  • Peano 4 & ExaHyPE 2 – working with Peano’s patch file format and visualisation of the simulation outcome (link)
  • ExaHyPE 2 – parallelisation (link)
  • ExaHyPE 2 – using SymPy to model the used PDE in a computer algebra system (link)

The developers of Peano communicate through the hpcsoftware Slack channel. Please contact me (tobias.weinzierl@durham.ac.uk) if you want to be added.

Peano 3

I currently maintain two versions of Peano: Version 3 is the mature version we use in ExaHyPE and other projects. It is more or less frozen. Version 4 is my new generation of the code which comprises a Python rewrite of DaStGen as well as a preview of ExaHyPE2.

The documentation of Peano 3 consists of two parts:

  • The guidebook – a PDF document describing the overall software;
  • The source code documentation – an autogenerated html file which is distilled from the C++ core source code.

Peano 2

Peano 2 is the generation of the software that has been developed as part of my own PhD thesis and the thesis of Tobias Neckel. It has been heavily focused on particular CFD applications. The software base is retired now, as Peano 3 is a complete rewrite from scratch.

Peano 1

There’s no real Peano or Peano 1. The first generation of Peano describes a whole suite of various Peano codes developed in the group of Christoph Zenger. They all used the Peano space-filling curve paradigm for different purposes (cache-efficient data access, multigrid, parallelisation, …). Though many solvers within this suite did share common code parts, it was Peano 2 which brought the different ideas together for the first time in one code base. This required a complete rewrite of the ideas found within the software suite.

Papers & How to cite

Aspects of Peano are discussed in many papers, but there are two primary publications. The older one appeared in SISC and very much discusses the core data structures. The newer one is published by TOMS and discusses various design decisions and sofware aspects besides the arithmetics. It also details the usage paradigm. The new one is available as gold open source.

While the SISC paper presents results from/ideas shaping the second generation of Peano, the TOMS paper summarises the key concepts behind the third generation (P3). If you are using P4, you implicitly use the same ideas, as these core rationale, design concepts, and algorithms haven’t changed. You might however make a remark in your manuscript when you refer to these papers that you yourself use a newer generation of Peano than the ones discussed in the papers.

@article{Weinzierl:19:Peano,
   author = {Weinzierl, T.},
   title = {The Peano Software\&\#x02014;Parallel, Automaton-based, Dynamically Adaptive Grid Traversals},
   journal = {ACM Trans. Math. Softw.},
   volume = {45},
   number = {2},
   year = {2019},
   pages = {14:1--14:41},
   publisher = {ACM}
}

@article{Weinzierl:11:Peano,
    Author = {Weinzierl, T. and Mehl, M.},
    Editor = {Tuminaro, R. and Benzi, M. and Cai, X.-C. and Duff, I. and Elman, H. and Freund, R. and Jordan, K. and Kelley, T. and Keyes, D. and Kilmer, M. and Leyffer, S. and Manteuffel, T. and McCormick, S. and Silvester, D. and Walker, H. and Woodward, C. and Yavneh, I.},
    Institution = {SIAM},
    Issn = {1064-8275},
    Journal = {SIAM J. Sci. Comput.},
    Number = {5},
    Organization = {SIAM},
    Pages = {2732--2760},
    Series = {Special Section: 2010 Copper Mountain Conference},
    Title = {{Peano -- A Traversal and Storage Scheme for Octree-Like Adaptive Cartesian Multiscale Grids}},
    Volume = {33},
    Year = {2011}}

We have no “that’s it” paper for ExaHyPE 2 (yet), but you can always cite the original ExaHyPE release paper. Most concepts continue to hold for ExaHyPE’s second generation, too.