The multi-physics code m-AIA (formerly called ZFS) is under active development since more than 15 years at the Institute of Aerodynamics (AIA) of RWTH Aachen University. It has been used successfully in various national and EU funded projects for the simulation of engineering flow and noise prediction problems. Individual solvers for multi-phase and turbulent, combusting flows, heat conduction and acoustic wave propagation can be fully coupled and run efficiently on HPC systems. The various methods include finite-volume solvers for, e.g., the Navier-Stokes equations, lattice Boltzmann methods and discontinuous Galerking schemes for the solution of acoustic perturbation equations. Boundary fitted, block structures meshes as well as hierarchical Cartesian meshes can be used. A fully conservative cut-cell method is used for the boundary formulation for immersed bodies, which are also allowed to move freely in the solution domain.



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.