The AeroSol library has been developed since 2011 within the teams Cardamom (and formerly Bacchus) and CAGIRE. The aim is to develop a library able to deal with continuous and discontinuous finite elements methods on hybrid and possibly curvilinear meshes, and able to run on heterogeneous architectures. Fitting with the first axis of the Bordeaux Sud Ouest development strategy, which is to “build a coherent software suite scalable and efficient on new architectures”, the AeroSol library relies on several tools developed in other Inria teams, especially for the management of the parallel aspects. The original code design is described in the following picture:
The code design includes the use of the PaMPA library, as an intermediate layer between AeroSol and the graph partitioner SCOTCH. The library PaMPA was first developed within the Inria team Bacchus and Castor, and is currently maintained in theTADaaM Inria team. The library PaMPA allows to manage in parallel data based on a mesh. It is also able to perform the (asynchronous non-blocking) MPI communications by builing an appropriate overlap, and also able to manage the send and receive buffers. We aim also at managing shared memory parallelism (and possibly hybrid) by task management libraries such as StarPU (Inria team STORM), or PaRSEC (University of Tennessee). Details on the design of AeroSol, and initial test on shared memory parallelisation can be found in D. Genet’s PhD.
The generic features of the library are:
- High order: It can be theoretically any order of accuracy, but the finite element basis, and quadrature formula are implemented for having up to a fifth order of accuracy.
- Hybrid and curvilinear meshes: AeroSol can deal with up to fifth order conformal meshes composed of lines, triangles, quadrangles, tetrahedra, hexahedra, prism, and pyramids.
- Continuous and discontinuous discretization: AeroSol deals with both continuous and discontinuous finite element methods.
Strong emphasis have been put on:
- Its development environment for allowing a good collaborative work and a functional library, we use of modern collaborative tools for developing our software. This includes the active use of a repository, the use of CMake for the compilation, the constant development of unitary and functional tests for all the parts of the library (using CTest), and the use of the continuous integration tool Jenkins for testing the different configurations of AeroSol and its dependencies. Efficiency is regularly tested with direct interfacing with the PAPI library or with tools like scalasca.
- Its genericity: A lot of classes are common to all the discretization, for example classes concerning I/O, finite element functions, quadrature, geometry, time integration, linear solver, models and interface with PaMPA. Adding simple features (e.g. models, numerical flux, finite element basis or quadrature formula) can be done easily by writing the class, and declaring its use in only one class of the code.
- Its efficiency: This modularity is achieved by means of template abstraction for keeping good performances. Dedicated efficient implementation, based on the data locality of the discontinuous Galerkin method have been developed. As far as parallelism is concerned, we use point-to-point communications, the HDF5 library for parallel I/O.The behaviour of the AeroSol library at medium scale (1000 to 2000 cores) was studied in the work of Mbengoue et al (2013)
Current available models include compressible perfect gas Euler and Navier-Stokes equations, shallow water equations, and a number of simpler scalar m odel (advection-diffusion, Burger’s equation, Poisson’s equation, etc.). These models can be discretised in space with discontinuous Galerkin methods or stabilized continuous finite elements, and evolved in time using several standard SSP-RK schemes, as well as implicit backward differencing schemes.
With AeroSol we aim at setting up an open source community, using the library as a basis for high performance finite element based applications. An LGPL release will be available in 2020. Several actions in this sense have already started. The first is the UHAINA project, in collaboration with 2 CNRS laboratories (the geophysics late EPOC and the Applied mathematics department in Bordeaux), and the mathematics department IMAG of the University of Montpellier. The UHAINA project aims at constructing a platform for the simulation of near shore hydrodynamics. The kernel of the platform is based on AeroSol. Another action in this direction is the CARDAGIRE ADT aiming at providing a more friendly environment for the installation and use of AeroSol. In the near future it is expected that AeroSol may be used also for more fundamental research on numerical methods, as well as for real life large scale applications.