Peano
Getting Started

This will be a brief introduction into ExaHyPE 2.

ExaHyPE 2 is a hyperbolic PDE engine, this means it solves PDEs which have a finite propagation speed, like those representing sound, elastic waves or magnetism. That's anything of the following form:

\( \begin{equation*}\label{ExaHyPE2_formulation} \frac{\partial Q}{\partial t} + \nabla . F(Q, \nabla Q) + B(Q) . \nabla Q= S(Q) + \sum_{i = 1}^{n_{ps}} \delta_i \end{equation*} \)

The goal of ExaHyPE 2 is to make it easy for users to run optimized code without needing an entire computer science degree. We provide (via the parent project Peano 4) single-core or multi-core parallelisation, GPU offloading, multiple PDE solvers, storage optimizations, dynamic adaptive mesh refinement and load balancing and so on. The user then only needs to specify which optimizations they want, and implement the specifics of their hyperbolic PDEs.

The structure of ExaHyPE 2, and how it's used

ExaHyPE 2 is one of a few extensions built on top of Peano 4. Peano 4 generates Cartesian meshes to which data can be attached and realises efficient traversals for these meshes. It also provides multiple performance improvements, in particular parallel traversal of said meshes, which are then inherited by its extensions.

ExaHyPE 2 in turn defines data to be added to certain mesh elements, particularly Peano 4 cells and faces, and adds a number of operations to be executed at certain points in the grid traversal.

Beneath all of this, there are a number of utility functions, such as vector definitions, plotters, assertions and memory management which are in some sense prerequisites for Peano 4. These are what is known as the technical architecture of Peano 4, or tarch for short.

If you think of tarch as the grass and dirt that make the world, Peano 4 takes these and builds a playground out of them, and ExaHyPE 2 adds toys and children to populate said playground. Structurally, the whole thing looks as follows:

When creating a specific ExaHyPE 2 applications, these steps are gone through in reverse. Using the ExaHyPE 2 python API, one defines a specific problem, i.e. how many children should be playing and what toys should they be playing with, and ExaHyPE 2 in turn creates a sensible Peano 4 playground for these children to play in.

Get Peano and configure the core with the ExaHyPE extension

Before you can start with anything however, you will need a working version of Peano 4 and ExaHyPE 2. If you have not yet done so, visit the installation page over at Installation and install the project.

There are multiple ways to do this, including docker containers with all dependencies. Just make sure that whichever version you have chosen, it comes with ExaHyPE2 configured.

Once you have done so, we can take a look at our first configuration file over at Our First Configuration File