Parallelisation of FLITE3D -- a multigrid Euler solver

FLITE3D is a multigrid Euler code for external aero-dynamics. It is used extensively by British Aerospace in aircraft design and simulation.

The flow code, which is the main concern of this project, is an explicit finite element Euler solver with an edge based data structure using Runge-Kutta time integration. It employs the agglomeration based multigrid algorithm to speedup the calculation. (see Figure 1)

Figure 1: the original mesh (left) and two levels of agglomeration (center, right)

The use of multigrid algorithm makes the efficient parallelisation more challenging. The communication overhead and load imbalance on the coarser grids could readily erode the gain in the use of parallel computers. The parallelisation of the code therefore requires careful design and analysis.

On the finest grid we have taken the route of using element based partitioning (see Figure 2), with the corresponding data structure to ensure the correct numerical algorithm.

Figure 2: an M6 mesh partitioned into 16 subdomains

For the multigrid part, the processors coarse grid nodes reside depends on their parent nodes. The concept of ``active nodes'' is used. These strategies ensures that the inter-grids communication during the restriction and prolongation phase of the multigrid algorithm is completely eliminated, and the coarse grid calculation is reasonablly load balancing. The result of our design is an efficient parallel multigrid finite element code, which is born out by the numerical results (see Figure 3).

Figure 3: Speedup of the multigrid code on Cray T3E-900

The parallel code now replaces the original seqential code in the daily uses by engineers in BAe, and is proved to be robust and efficient.

Yifan Hu, Dave Emerson, Mike Ashworth, Kevin Maguire and Richard Blake from Daresbury Laboraotry were involved in the parallelisation design and implementation FLITE3D code. 1