An Efficient Implementation Of Discontinuous Galerkin Method On Commodity Parallel Systems

Field: Computer Science (Physical Sciences)

Computational Fluid Dynamics (CFD) is a useful tool that enables highly cost-effective numerical solutions for the problems related to fluid flow phenomena, which in turn results in the state-of-the-art product designs in a variety of engineering sectors.CFD has made remarkable progress due to continuous growth in computing capabilities.Further increase in the computing power urges the computational scientists for even more detailed and in-depth analyses.Better understanding of the flow phenomena, however, requires higher order/resolution solutions, which in turn requires more and more computing power due to increase in the number of degrees of freedom.The present thesis is to contribute in the endeavor of addressing these two challenges, i.e., to provide higher order numerical solutions in fluid mechanics and to fulfill the demand of computing power.The first objective is addressed by presenting a high order flow solver for compressible fluid flow problems and the second objective is addressed by developing a high performance parallel implementation of the flow solver. \nThe present work is aimed at developing a scalable and efficient parallel program based on a high order discontinuous Galerkin (DG) method with Taylor series basis for the compressible Euler and Navier-Stokes equations on unstructured meshes.The numerical scheme is capable of efficiently simulating the physics of the flow problems considered, including subsonic and transonic compressible inviscid flows around two well known benchmark airfoils.The parallel code employs the DG method for the space discretization of the governing equations to obtain a semi-discrete form and various explicit and implicit schemes for time integration of this semi-discrete form.The explicit time integration scheme is based on three-stage third-order Total Variation Diminishing (TVD) Runge-Kutta (RK) method.The implicit time integration scheme for the Euler equations is based on Backward Euler scheme.The resulting system of algebraic equations is solved using a variety of so-called matrix-free parallel linear solvers, including Symmetric Gauss-Seidel (SGS) method, Lower-Upper Symmetric Gauss-Seidel (LUSGS) method and Generalized Minimum Residual (GMRES) method preconditioned with LUSGS (i.e., GMRES+LUSGS).In this work, a parallel p-multigrid solver for the Euler equations is also presented.Unlike the other p-multigrid solvers where the same time integration scheme is used on all the approximation levels, the present two-level p-multigrid solver uses the Runge-Kutta scheme as the iterative smoother on the higher level approximation, and the matrix-free GMRES+LUSGS method as the iterative smoother on the lower level approximation in an attempt to significantly reduce the computer memory requirements. In this thesis, inviscid flow computations are accurate up to the fourth order of polynomial approximation whereas the viscous flow computations are accurate up to the third order of polynomial approximation. \nThe parallel DG flow solver is based on distributed memory programming model, making use of the message passing approach for communications among the parallel processes. Two kinds of so called commodity parallel systems are used as the platform for performing parallel computations.The first kind of parallel systems are the clusters in which the worker nodes are interconnected using some networking technology.The other kind of parallel systems are the multicore SMP machines.The parallelization is based on Single Program Multiple Data (SPMD) parallel programming model that has been employed by making use of a computational domain partitioning technique and the de-facto industry standard Message Passing Interface (MPI) library for inter-process communications. Favorable parallelization characteristics of the discontinuous Galerkin method have also been exploited by hiding the communications behind the computations.The parallel performance of the developed code, in terms of scaling of the speedup with respect to the number of processes, is demonstrated.