Processing math: 100%
Peano
All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages Concepts
ExaHyPE 2

ExaHyPE 2 itself is a hyperbolic PDE engine, its goal is to provide a generic engine in which users can implement the specifics of their hyperbolic PDEs and have these be solved by the engine. It is built on top of ExaHyPE 2 as an extension. ExaHyPE 2 solves partial differential equations of the form

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

although there are specialised solver variants within ExaHyPE which support other terms such as second-order spatial operators. ExaHyPE 2 is a rewrite of the ExaHyPE engine developed under the umbrella of the EU FET HPC programme ExaHyPE. ExaHyPE has received funding from the European Union’s Horizon 2020 research and innovation programme under grant agreement No 671698 (ExaHyPE).

Building the ExaHyPE 2 extension

As ExaHyPE 2 is a Peano 4 extension, you first have to configure and build the core Peano code base, i.e. its libraries, before you start any work. Hereby, it is important that you add the ExaHyPE-specific toolboxes:

 ./configure ... --enable-exahype --enable-loadbalancing --enable-blockstructured

We recommend that you run a few of the Benchmarks benchmarks to ensure that all is properly set up before you start developing your own codes.

ExaHyPE 2 follows the Peano 4 architecture and hence consists of two major parts: a set of C++ routines, classes, macros, ... which are built on top of Peano's Technical architecture, the Peano core and various toolboxes, plus a set of Python scripts which are built on top of Peano's Python API.

Every run of the Python script produces a file called README-executablename.md which enlists which software ingredients are used by the resulting code.

Historical remarks

ExaHyPE 2 is the follow-up development of the ExaHyPE project which has been funded by the EU from 2015–2019. The present version is the second generation of the code (ExaHyPE 2) and has seen substantial rewrites of core routines. However, many paradigms and even code blocks remain the same. Migrating from the original ExaHyPE to ExaHyPE 2 thus should be straightforward.

The original ExaHyPE had been built on top of Peano (third generation) and tried to hide as much of Peano away as possible. In ExaHyPE 2, I go the opposite way: ExaHyPE 2 is a full-blown Peano add-in and I try not to hide anything away. Where we designed our own data management on top of Peano in ExaHyPE, all the data management (as well as parallelisation, e.g.) is native Peano 4.

With the migration from a sole-C++ philosophy to C++ supplemented by a Python API in Peano, I also dumped ExaHyPE's former configuration/specification file paradigm. An ExaHyPE 2 application now is championed by a sole Python script. This Python script yields a native Peano application (builder mechanism) which then assembles the application.