A parallel implementation of the finite element Navier-Stokes solver NAVIER
The FE code NAVIER is used in a wide variety of applications to simulate flow problems in industrial applications. Its key features are a variational treatment of a free capillary surface flow that is semi implicit in time, sharp interface technique and higher order discretisation in space and time. As the applications have become more complex and more demanding in terms of computational resources, a parallel implementation has become necessary.
Trivial parallelisations (i.e. distributed matrix/vector product routines or OpenMP parallelisation of loops) have no chance of being scalable for any significant amount of processors. Our approach is to use domain decomposition to get a number of smaller problems. Communication is a bottleneck in many parallel implementations, which is kept to a minimum by using a direct Schur method. A (relatively small) problem on the global subdomain border is solved in a distributed way, so that the subdomain problems can be solved in parallel without any communication afterwards. In contrast to methods based on the communication of whole strips of information, this approach has the potential to scale well even for large numbers of subdomains and unstructured decompositions.
During the project period, the basic work for the algorithm was completed (data structures, domain decomposition, assembling of matrices, distributed solver, local solvers), but the convergence rate of the distributed solver is low because the condition number of the interface problem to solve is very high. This is due to the underlying mathematical problem (unsymmetric, indefinite saddle point problem) and the direct Schur method, so some work has to be done in terms of preconditioning. This is nontrivial, since it depends on the chosen discretisation and there is no literature available for our case. The MPI optimisation is the last step of the project and will start as soon as the preconditioning is done.
- KONWIHR funding: two months during Multicore-Software-Initiative 2009/2010
- Prof. Dr. Eberhard Bänsch, Lehrstuhl für Angewandte Mathematik III, Uni-Erlangen