Meso-NH

Meso-NH is the non-hydrostatic mesoscale atmospheric model of the French research community. It has been jointly developed by the Laboratoire d’Aérologie (UMR 5560 UPS/CNRS) and by CNRM-GAME (UMR 3589 CNRS/Météo-France). Meso-NH:

  • Incorporates a non-hydrostatic system of equations, for dealing all scales ranging from large (synoptic) to small (large eddy) scales while calculating budgets; 
  • Has a complete set of physical parameterizations, particularly advanced for the representation of clouds and precipitation; 
  • Is coupled to the surface model SURFEX for representing the ground atmosphere interactions by considering different surface types (vegetation, city, ocean, lake); 
  • Allows for a multi-scale approach through a grid-nesting technique; 
  • Is a versatile code, vectorized, parallelized, operating in 1D, 2D or 3D designed to handle real situations as well as academic cases; 
  • Is coupled with a chemistry module (including gas-phase, aerosol, and aqua-phase components) and a lightning module; 
  • Has observation operators that compare directly model output with satellite observations, radar, lidar and GPS.

CoE: EoCoE

waLberla

waLBerla is a massively parallel simulation framework. It contains efficient, hardware specific compute kernels to get optimal performance on today’s supercomputing architectures. waLBerla employs a block-structured partitioning of the simulation domain including support for grid refinement. These grid data structures make it easy to integrate various data parallel algorithms like Multigrid, CG, or phasefield models. waLBerla uses the lattice Boltzmann method (LBM), which is an alternative to classical Navier-Stokes solvers for computational fluid dynamics simulations. All of the common LBM collision models are implemented (SRT, TRT, MRT). Additionally, a coupling to the rigid body physics engine pe is available. waLBerla is written in C++, which allows for modular and portable software design without having to make any performance trade-offs.

CoE: EoCoE

Alya

Alya is a high performance computational mechanics code to solve complex coupled multi-physics / multi-scale / multi-domain problems, which are mostly coming from the engineering realm. Among the different physics solved by Alya we can mention: incompressible/compressible flows, non-linear solid mechanics, chemistry, particle transport, heat transfer, turbulence modeling, electrical propagation, etc. 

 

From scratch, Alya was specially designed for massively parallel supercomputers, and the parallelization embraces four levels of the computer hierarchy. 1) A substructuring technique with MPI as the message passing library is used for distributed memory supercomputers. 2) At the node level, both loop and task parallelisms are considered using OpenMP as an alternative to MPI. Dynamic load balance techniques have been introduced as well to better exploit computational resources at the node level. 3) At the CPU level, some kernels are also designed to enable vectorization. 4) Finally, accelerators like GPU are also exploited through OpenACC pragmas or with CUDA to further enhance the performance of the code on heterogeneous computers. 

 

Multiphysics coupling is achieved following a multi-code strategy, relating different instances of Alya. MPI is used to communicate between the different instances, where each instance solves a particular physics. This powerful technique enables asynchronous execution of the different physics. Thanks to a careful programming strategy, coupled problems can be solved retaining the scalability properties of the individual instances. 

 

The code is one of the two CFD codes of the Unified European Applications Benchmark Suite (UEBAS) as well as the Accelerator benchmark suite of PRACE.