1 Introduction
OpenFoam
solver with a high-order spectral-element solver Nek5000
and showed that comparable accuracy can be obtained by the high-order solver using 7-8 times less solution points. However, the cost incurred was less clear. Also, the meshes were simplistic (hexahedral only) and highly resolving. Vermeire et al. (2017) used unstructured, but still highly resolving, meshes for the comparison of the high-order FR package PyFR
to a commercial FV second-order solver on two slightly more complex compressible flow configurations: cylinder-in-cross-flow at Reynolds number \(Re=3900\) and SD7003 aerofoil at \(Re=60,000\). In both cases, fifth-order accurate PyFR
provided a better agreement to the reference but was almost 2 and 6 times, respectively, more expensive than the second-order solver. These studies took a first step to indicate the benefit of high-order solvers. However, neither better accuracy for a given cost nor lower cost for a given accuracy is demonstrated. Furthermore, these studies either involve simple geometries, structured meshes, well-resolved meshes or a combination of all of these.hpMusic
and a commercial FV second-order solver for compressible flow over a high-pressure turbine vane at \(Re=1.16 \times 10^6\). It was shown that a third-order FR simulation costing around one-third of a second-order FV simulation with a 64 times larger mesh provided more accurate results. This configuration, however, consisted largely of relatively thin wall-attached shear-layers and a small wake region. These characteristics do not quite represent the main features of combustor flow, e.g., separated free shear-layers and strong re-circulations. A combustor-relevant study was performed by Saini et al. (2022), Saini (2022), where an isothermal configuration mimicking combustor port-flows (as depicted in Fig. 2) was used. A more fundamental TG vortex case, was also included to form a baseline of the study. The cost vs accuracy of second-order OpenFoam
runs was compared to fifth-order CG runs of Nektar++
package (Cantwell et al. 2015), with experimental data (Hollis 2004) used as reference. The high-order solver was shown to resolve a broader range of fine scales and showed improved unsteady and mean statistics for the same cost. Further, the high-order solver was estimated as 3-8 times cheaper for a fixed accuracy. Even though the results favoured the high-order solver, the complete reasoning behind is unclear. An explicit subgrid scale (SGS) model Wall-adaptive local eddy-viscosity (WALE) (Nicoud and Ducros 1999) was used within the OpenFoam
solver, whereas an artificial viscosity approach known as spectral vanishing viscosity (SVV) (Tadmor 1989; Karamanos and Karniadakis 2000) was used in the Nektar++
solver. These approaches were found suitable to the corresponding solvers (see Sect. II.A in Saini et al. 2022). Since different SGS models are used in the two solvers, it is not clear if the accuracy is more affected by the SGS models’ dissipation or the inherent numerical dissipation of the solvers.2 Method
pimpleFoam
from the OpenFoam
package, whereas the high-order solver was IncNavierStokesSolver
based on the spectral-hp Nektar++
framework (Cantwell et al. 2015). The following Subsections provide descriptions of the solvers’ numerical methods, dissipation rate equations and their computations.2.1 Numerical Methods in Solvers
OpenFoam
and Nektar++
are briefly mentioned in Table 1. For a more detailed description the reader is referred to Sect. II.B in Saini et al. (2022).Feature | Second-order LES | High-order LES |
---|---|---|
Package | OpenFoam v1712 | Nektar++ v4.5.0 |
Spatial discretization | Finite-volume | Finite-element (spectral-hpCG) |
Polynomial order | 1 | 4 (velocity), 3 (pressure) |
Grid elements | Unstructured hybrid | Unstructured hybrid |
Flow equations | Incompressible | Incompressible |
Time discretization | 2nd-order backward | 2nd-order backward |
Model/Stabilization | WALE (Nicoud and Ducros 1999) | SVV (Karamanos and Karniadakis 2000) |
2.2 Dissipation Rate Equations
OpenFoam
solver that uses the explicit SGS model. Note that similar balance equations have been obtained in Sagaut (2006) and Cadieux et al. (2017) for a second-order solver. For the high-order Nektar++
simulations, SVV is used instead of an explicit SGS model, so \(\mathcal {E}_{\textrm{sgs}}\) and \(F_{\textrm{sgs}}\) in Eq. (5) are not applicable. The contribution of SVV term to the kinetic energy equation is now derived.Nektar++
SVV LES can be written asOpenFoam
solver, this can be written asNektar++
formulation becomes2.3 Computations
OpenFoam
and fifth-order accuracy for Nektar++
solutions.OpenFoam
solver all the terms in Eq. (4) are calculated on-the-fly in the entire domain. The solver is modified to include extra calculations following Cadieux et al. (2017). The SGS term calculation is added in the current work. A snippet can be found in Sect. A.2 of Saini (2022). The full domain snapshots containing all the calculated terms are saved to the disk. The integration over arbitrary subdomains is performed as a post-processing step in Paraview
software. As the representation of the data in Paraview
is the same as the solver, this process introduces negligible error in the calculation of balance terms (9) for the OpenFoam
solver.Nektar++
solver. The snapshots of the entire domain containing velocity and pressure fields are saved to the disk, and all terms are calculated thereafter. The calculations (including the spatial derivatives) are performed using Nektar++
package’s post-processing utility FieldConvert
. This ensures that the derivatives are of the same order of accuracy as the simulation itself. However, the convolution part \(\left( Q \star \frac{\partial u_i}{\partial x_j}\right)\) involved in the SVV term was not straightforward to calculate using the pre-existing utilities. So, the solution field was interpolated onto a uniform grid, and the convolution calculated via the Fourier transform. The details are as follows.FieldConvert
such that the order of interpolation is the same as that of the solution. Then, using a Python
script, the convolution is calculated as a product of the Fourier coefficients of the velocity field \(\hat{u}\) and the SVV kernel \(\hat{Q}\). Mathematically,Nektar++
solver (10) is less general and non-exact but care has been taken to provide sufficiently accurate results.3 Large-Eddy Simulations
Nektar++
and OpenFoam
solvers are frequently referred to as Npp and OF, respectively.3.1 TG Vortex
OpenFoam
and two fifth-order Nektar++
runs are considered here for the dissipation rate analysis. These represent a wide range of cost vs accuracy, as explained later. The OpenFoam
runs consist of a uniformly distributed mesh with 64 and 128 points per direction, and are labelled as \(64 \times 1\) OF and \(128 \times 1\) OF respectively. In these labels, 1 refers to the polynomial order P. The Nektar++
runs have 16 and 8 mesh points and are labelled as \(16 \times 4\) Npp and \(8 \times 4\) Npp, 4 being the polynomial order. The cost of the baseline run \(64 \times 1\) OF was 285 s on 56 cores (Saini et al. 2022).3.2 Combustor Port Flow
OpenFoam
run, whereas the second is a 130,000 element polynomial order 4 (total 8.4 million solution points) Nektar++
run. The mesh of the second run was designed to incur an almost identical computational cost as the first baseline run. The third run is again a second-order OpenFoam
run but with higher mesh resolution (48 million cells), targeted to match the turbulence spectra of the high-order Nektar++
run. This third OF run costs around 5 times the previous two runs. The cost of the baseline 16 million OF run was 178 hours on 336 cores (Saini et al. 2022). The mesh topology, element-type and size distribution are equivalent in the three runs. For a first idea of the mesh design, see Fig. 9, which displays the elemental mesh of the Nektar++
run. The reader is referred to Saini et al. (2022), Saini (2022) for the detailed rationale behind the model geometry, the mesh design and time step size.OpenFoam
and Nektar++
solvers respectively. M denotes million. Cost is in terms of computational timeSimulation | Solver | Polynomial order | Solution points | Time-step (\(\mu\)s) | Relative cost | Cost per time-step | Memory (GB) |
---|---|---|---|---|---|---|---|
16M-OF | OF | 1 | 16 M | 5.0 | 1.00 | 1.00 | 200 |
8.4M-Npp | Npp | 4 | 8.4 M | 5.0 | 1.03 | 1.03 | 500 |
48M-OF | OF | 1 | 48 M | 3.33 | 5.23 | 3.52 | 600 |
4 Validation
OpenFoam
and 16 elements with polynomial order 4 for Nektar++
per direction. Depending on the extents of the SD considered, the following three validation tests are used- OpenFoam
run that does not use the SGS model is also plotted (Fig. 5b) to add confidence in the implementation. In this case \(\mathcal {E}_{\textrm{sgs}}=0\) is confirmed. Finally, due to well-resolvedness during the initial period of the simulations, the dissipation from the numerics, \(\mathcal {E}_{\textrm{num}}\), as well as the model, \(\mathcal {E}_{\textrm{sgs}}\) (or \(\mathcal {E}_{\textrm{svv}}\)), is nearly zero. As seen from the Nektar++
run (Fig. 5c), the accuracy of the SVV terms calculated using the Fast Fourier transform (FFT) convolution procedure is also satisfactory. Similar observations are made for the octant subdomain. For brevity, the results of the octant SD are moved to Appendix 1 (Fig. 17).OpenFoam
solver is also run without the SGS model. The results are shown in Fig. 6a. As expected, the match is excellent in the initial well-resolved time range (\(t^* < 3\)) but deteriorates later. Anyhow, the trends are reproduced considerably well. The Nektar++
simulation cannot exactly represent this subdomain due to the discretization over 16 elements per direction. Thus, a slightly larger domain of \(\left( 2\pi \frac{8}{64}L - \pi L \right) \le x,y,z \le \left( 2\pi \frac{56}{64}L - \pi L \right)\) had to be chosen. This results in a slight mismatch, but the trends agree with the reference values, as plotted in Fig. 6b.
5 Dissipation Rate Comparison
5.1 TG Vortex
5.2 Combustor Port-Flow
Subdomain | Extents x (mm) | Extents y and z (mm) | Physical relevance |
---|---|---|---|
Impinge | [5, 25] | \([-12,12]\) | Impingement region, peak of k |
CRZ | \([-20,10]\) | \([-12,12]\) | Covers peak negative \(\overline{u}_x\) |
DownStr | [30, 50] | \([-12,12]\) | Downstream spectrum |
JetStr | \([-10,10]\) | [25, 40] and \([-8,8]\) | Covers Jet stream |