Eilmer: An open-source multi-physics hypersonic flow solver - Gibbons, Nicholas N.; Damm, Kyle A.; Jacobs, Peter A.; Gollan, Rowan J. (Computer physics communications, 2023)
This paper introduces Eilmer, a general-purpose open-source compressible flow solver developed at the University of Queensland, designed to support research calculations in hypersonics and high-speed aerothermodynamics. Eilmer has a broad userbase in several university research groups and a wide range of capabilities, which are documented on the project's website, in the accompanying reference manuals, and in an extensive catalogue of example simulations. The first part of this paper describes the formulation of the code: the equations, physical models, and numerical methods that are used in a basic fluid dynamics simulation, as well as a handful of optional multi-physics models that are commonly added on to do calculations of hypersonic flow. The second section describes the processes used to develop and maintain the code, documenting our adherence to good programming practice and endorsing certain techniques that seem to be particularly helpful for scientific codes. The final section describes a half-dozen example simulations that span the range of Eilmer's capabilities, each consisting of some sample results and a short explanation of the problem being solved, which together will hopefully assist new users in beginning to use Eilmer in their own research projects. Program Title: Eilmer CPC Library link to program files:https://doi.org/10.17632/gy2ds2fyxm.1 Developer's repository link:https://github.com/gdtk-uq/gdtk Code Ocean capsule:https://codeocean.com/capsule/7226427 Licensing provisions: GPLv3 Programming language: D, Lua Supplementary material:https://gdtk.uqcloud.net Nature of problem: Eilmer solves the compressible Navier-Stokes equations with a particular emphasis on flows at hypersonic speeds. The code includes modelling for high-temperature gas effects such as chemical and vibrational nonequilibrium. Eilmer can be used for the simulation for unsteady and steady flows. Solution method: The code is implemented in D [1] and built on a finite-volume formulation that is capable of solving the Navier-Stokes equations in 2D and 3D computational domains, discretised with structured or unstructured grids. Grids may be generated using a built-in parametric scripting tool or imported from commercial gridding software. The inviscid fluxes are computed using the reconstruction-evolution approach. In structured-grid mode, reconstruction stencils up to fourth-order spatial accuracy are available. In unstructured-grid mode, least-squares reconstruction provides second-order spatial accuracy. A variety of flux calculators are available in the code. Viscous fluxes are computed with compact stencils with second-order spatial accuracy. For unsteady flows, explicit time-stepping with low-order RK-family schemes are available, along with a point-implicit Backward-Euler update scheme for stiff systems of equations. For steady flows, convergence can be greatly accelerated using a Jacobian-free Newton-Krylov update scheme, which seeks a global minimum in the residuals using a series of large pseudo-timesteps. Domain decomposition is used for parallel execution using both shared memory and distributed memory programming techniques. Additional comments including restrictions and unusual features: Eilmer provides a programmable interface for pre-processing, post-processing and user run-time customisations. The programmable interface is enabled using a built-in embedded interpreter for the Lua programming language [2]. Run-time customisations include used-defined boundary conditions, source terms and grid motion. [1]D Programming Language web page: https://dlang.org/.[2]Lua Programming Language web page: https://www.lua.org/.