High-order numerical methods for unstructured grids combine the superior accuracy of high-order spectral or finite difference methods with the geometric flexibility of low-order finite volume or finite element schemes. The Flux Reconstruction (FR) approach unifies various high-order schemes for unstructured grids within a single framework. Additionally, the FR approach exhibits a significant degree of element locality, and is thus able to run efficiently on modern streaming architectures, such as Graphical Processing Units (GPUs). The aforementioned properties of FR mean it offers a promising route to performing affordable, and hence industrially relevant, scale-resolving simulations of hitherto intractable unsteady flows within the vicinity of real-world engineering geometries. In this paper we present PyFR, an open-source Python based framework for solving advection–diffusion type problems on streaming architectures using the FR approach. The framework is designed to solve a range of governing systems on mixed unstructured grids containing various element types. It is also designed to target a range of hardware platforms via use of an in-built domain specific language based on the Mako templating engine. The current release of PyFR is able to solve the compressible Euler and Navier–Stokes equations on grids of quadrilateral and triangular elements in two dimensions, and hexahedral elements in three dimensions, targeting clusters of CPUs, and NVIDIA GPUs. Results are presented for various benchmark flow problems, single-node performance is discussed, and scalability of the code is demonstrated on up to 104 NVIDIA M2090 GPUs. The software is freely available under a 3-Clause New Style BSD license (see www.pyfr.org). Program summaryProgram title: PyFR v0.1.0Catalogue identifier: AETY_v1_0Program summary URL:http://cpc.cs.qub.ac.uk/summaries/AETY_v1_0.htmlProgram obtainable from: CPC Program Library, Queen’s University, Belfast, N. IrelandLicensing provisions: New style BSD licenseNo. of lines in distributed program, including test data, etc.: 12733No. of bytes in distributed program, including test data, etc.: 214183Distribution format: tar.gzProgramming language: Python, CUDA and C.Computer: Variable, up to and including GPU clusters.Operating system: Recent version of Linux/UNIX.RAM: Variable, from hundreds of megabytes to gigabytes.Classification: 6.5, 12.External routines: Python 2.7, numpy, PyCUDA, mpi4py, SymPy, MakoNature of problem:Compressible Euler and Navier–Stokes equations of fluid dynamics; potential for any advection–diffusion type problem.Solution method:High-order flux reconstruction approach suitable for curved, mixed, unstructured grids.Unusual features:Code makes extensive use of symbolic manipulation and runtime code generation through a domain specific language.Running time:Many small problems can be solved on a recent workstation in minutes to hours.
Read full abstract