Capabilities and limits
In one minuteWhat Gyre does, how well each part is verified, and what it does not do yet. Read this before planning work on top of it.
A foundation is only useful if its edges are known. This page separates what is implemented and verified from what is implemented but lightly exercised and what is absent.
Implemented and verified#
| Capability | Evidence |
|---|---|
| Split-form DGSEM, 2-D and 3-D, curved elements | discrete invariants: SBP, free-stream preservation, conservation, entropy conservation to round-off |
| Design-order accuracy (Euler) | order of accuracy: density wave, isentropic vortex, manufactured solution |
| Transonic flow with differentiable shock capturing | transonic example: converged to round-off, adjoint versus finite differences |
| 3-D flow solves on unstructured hexahedral meshes, with all six force and moment coefficients, sideslip and their adjoint derivatives | three-dimensional flows: inviscid sphere against exact properties (no drag, no entropy rise, Janzen–Rayleigh surface pressure) through all eight face orientations, laminar sphere at against accepted drag and wake length, adjoint versus finite differences on an ellipsoid at incidence and sideslip, an extruded case that reproduces the 2-D solution |
| Force, moment and heat-flux coefficients of selected walls and per named component, each with its adjoint and error estimate | unit tests: the coefficients of components that partition the walls add up to the total; a component’s derivative equals that of a case restricted to the same walls, which is compared with finite differences of re-converged flows |
| Laminar Navier–Stokes with BR2 | symmetric, compact operator; manufactured solutions by regime; cylinder at |
| RANS with the negative Spalart–Allmaras model, wall distance included in shape derivatives | turbulence closure: manufactured solution of the coupled system, exact linearisation on both branches of the model, flat-plate skin friction against the NASA Turbulence Modeling Resource, adjoint versus finite differences |
Entropy-stable interface fluxes (es_roe, llf) |
fluxes: no entropy production for any of the random state pairs tested, where the classical Roe flux produces some; unit tests of the inequality, of the Roe limit and of a stationary contact |
| Newton–Krylov with p-multigrid | solvers: residual reduction of ten orders, terminal contraction per step at the forcing rate of the inexact Newton iteration, Krylov iteration count versus block Jacobi; line smoothing against block Jacobi on a wall-resolved turbulent plate and on a sphere in three dimensions (same drag and adjoint derivatives, fewer than half the Krylov iterations in tight linear solves) |
| Exact linearisation (JVP, VJP, blocks) | derivatives |
| Adjoint and direct total derivatives: flow parameters and shape | adjoint versus finite differences versus direct |
| Coupling products: loads, displacements, forward/reverse totals | coupled aero-structural adjoint test; OpenMDAO adapter test |
| Residual-level discipline contract (apply, linearise and solve about the caller’s own point; checkpoints; a stalled linear solve is an error) | discipline contract: transposes to round-off, inverses to the tolerance, finite differences, OpenMDAO’s own derivative checks of the implicit component |
| Output error estimation | output error: effectivity against the converged solution |
| External meshes: curved quadrilaterals and hexahedra from Gmsh or NPZ files | imported meshes: node ordering against genuine Gmsh files, free stream, conservation and neighbour coupling on unstructured meshes, a solve and an adjoint derivative on an imported mesh |
| Output-driven order selection | order selection: the lowest degree whose estimated output error meets the tolerance is selected; an unreachable tolerance is reported as not met |
| Service, sessions, MCP, pipelines | end-to-end tests with real worker processes |
39 of 39 studies passed
- Passed
operators1/1 checks · 0.29 s
39979fcf90Same code as this build - Passed
Free-stream preservation on curved meshes
free_stream1/1 checks · 18.67 s
39979fcf90Same code as this build - Passed
Entropy conservation and stability
entropy_conservation41/41 checks · 15.77 s
39979fcf90Same code as this build - Passed
Structure of the BR2 viscous operator
viscous_operator17/17 checks · 116.9 s
39979fcf90Same code as this build - Passed
Independent 1-D model of the BR2 formulation
diffusion_1d17/17 checks · 4.93 s
39979fcf90Same code as this build - Passed
Exact linearization by automatic differentiation
linearization40/40 checks · 198.1 s
39979fcf90Same code as this build - Passed
Differentiable mesh deformation
mesh_deformation9/9 checks · 2.45 s
39979fcf90Same code as this build - Passed
density_wave4/4 checks · 40.98 s
39979fcf90Same code as this build - Passed
isentropic_vortex10/10 checks · 65.18 s
39979fcf90Same code as this build - Passed
mms_euler6/6 checks · 212.5 s
39979fcf90Same code as this build - Passed
Manufactured solutions: Navier–Stokes
mms_navier_stokes14/14 checks · 1225 s
39979fcf90Same code as this build - Passed
Nonlinear and linear solver convergence
solver_convergence16/16 checks · 890.1 s
39979fcf90Same code as this build - Passed
Line-implicit smoothing on a wall-resolved mesh
line_smoother7/7 checks · 2160 s
39979fcf90Same code as this build - Passed
Line-implicit smoothing in three dimensions
line_smoother_3d6/6 checks · 620.4 s
39979fcf90Same code as this build - Passed
Single-precision blocks in the preconditioner
mixed_precision6/6 checks · 2649 s
39979fcf90Same code as this build - Passed
Adjoint gradients versus finite differences
adjoint_gradients18/18 checks · 1176 s
39979fcf90Same code as this build - Passed
output_error5/5 checks · 367.7 s
39979fcf90Same code as this build - Passed
cylinder_re407/7 checks · 417.2 s
39979fcf90Same code as this build - Passed
extruded_3d8/8 checks · 300.8 s
39979fcf90Same code as this build - Passed
Inviscid flow past a sphere (3-D)
sphere_inviscid9/9 checks · 424.7 s
39979fcf90Same code as this build - Passed
Laminar flow past a sphere, Re = 100 (3-D)
sphere_re1005/5 checks · 187.8 s
39979fcf90Same code as this build - Passed
Adjoint derivatives of 3-D outputs
adjoint_3d6/6 checks · 297.7 s
39979fcf90Same code as this build - Passed
Largest 3-D solve on one device
scale_3d7/7 checks · 452 s
39979fcf90Same code as this build - Passed
Manufactured solutions: RANS with the Spalart-Allmaras model
rans_mms9/9 checks · 455.8 s
39979fcf90Same code as this build - Passed
Exact linearization with the Spalart-Allmaras model
rans_linearization20/20 checks · 158.6 s
39979fcf90Same code as this build - Passed
Turbulent flat plate (NASA TMR) with the Spalart-Allmaras model
rans_flat_plate8/8 checks · 162.1 s
39979fcf90Same code as this build - Passed
Three-dimensional consistency with the Spalart-Allmaras model
rans_extruded_3d10/10 checks · 675.1 s
39979fcf90Same code as this build - Passed
Adjoint gradients with the Spalart-Allmaras model
rans_adjoint6/6 checks · 119 s
39979fcf90Same code as this build - Passed
Discipline contract for MDO integration
discipline_contract15/15 checks · 249.9 s
39979fcf90Same code as this build - Passed
imported_mesh29/29 checks · 184.5 s
39979fcf90Same code as this build - Passed
order_selection13/13 checks · 364.4 s
39979fcf90Same code as this build - Passed
example_airfoil4/4 checks · 104.5 s
39979fcf90Same code as this build - Passed
Example: laminar cylinder, Re = 40
example_cylinder4/4 checks · 51.5 s
39979fcf90Same code as this build - Passed
Example: turbulent flat plate (Spalart-Allmaras)
example_flat_plate5/5 checks · 119.9 s
39979fcf90Same code as this build - Passed
Example: lift polar with adjoint slopes
example_polar5/5 checks · 686.1 s
39979fcf90Same code as this build - Passed
Example: coupled aero-structural adjoint
example_coupling2/2 checks · 823 s
39979fcf90Same code as this build - Passed
Example: transonic aerofoil with shock capturing
example_transonic9/9 checks · 151.8 s
39979fcf90Same code as this build - Passed
performance_cpu2/2 checks · 123.8 s
39979fcf90Same code as this build - Passed
Kernel throughput (NVIDIA GeForce RTX 3060 Ti)
performance_gpu2/2 checks · 103.5 s
39979fcf90Same code as this build
Implemented, less exercised#
- Flows with shocks. A sensor-based artificial viscosity
(shock capturing) is part of the differentiated residual and
is verified on a transonic aerofoil, including adjoint derivatives through the shock
(example). It has been exercised at on that one
configuration with the default
roeinterface flux; strong shocks, supersonic free streams, higher degrees and the entropy-stable interface fluxes in combination with it are untested or unconverged, and positivity is not enforced. - 3-D flows. Verified on a sphere and an ellipsoid (inviscid and laminar, degrees 1 to 4)
and on a spanwise extrusion; the only 3-D turbulent case is an extruded flat plate, and there is no wing and no lifting 3-D
configuration in the suite. Built-in 3-D geometry is the cubed-sphere shell
(
sphere_shell: spheres and ellipsoids), boxes and spanwise extrusions; anything else is read from a mesh file of hexahedra. Problem size is limited by the memory of one device: the block inverses hold numbers per element, in single precision ifsolver.precond_precision: singleis set. (The mesh-deformation operator behind shape derivatives is applied matrix-free at 3-D sizes and is not what limits them.) The largest solve recorded on the development machine, with the derivative of the drag with respect to every surface node, is stated with its memory and times. - Turbulent flows. One model (negative Spalart–Allmaras), integrated to the wall, verified
on a manufactured solution and on the zero-pressure-gradient flat plate, in two
dimensions and on a spanwise extrusion that must reproduce them
(three dimensions). Separated flow,
aerofoils at flight Reynolds number, turbulent flows that are three-dimensional in
themselves, transition, rotation and
compressibility corrections, wall functions and other models are untested or absent
(what is included). The line smoother for wall-resolved
meshes (
solver.smoother: line) is measured on that flat plate and on a laminar sphere with thin wall layers in three dimensions, both small: it cuts the Krylov iterations of tight linear solves to less than half and does not make the flow solve itself faster (record). - External meshes. A case can take its mesh from a file (
mesh.generator: file): Gmsh MSH 2.2 or 4.1 in ASCII, with complete Lagrange quadrilaterals of degree 1 to 5 or hexahedra of degree 1 to 4, or Gyre’s own NPZ arrays at any geometry degree. Boundary groups are the physical groups of the file, a boundary face without one is refused, and the case must give a boundary condition for every group. Periodic node pairs of the file become periodic topology. Left-handed elements are re-oriented; a mesh with an element whose Jacobian determinant is not positive at every geometry node is refused, not repaired. Flow solves on imported meshes are verified in 2-D. - Order selection. Uniform p-enrichment on a fixed mesh, driven by the error estimate of one built-in scalar output, from the case’s degree (at least 1) up to at most degree 8 (default limit 5). It inherits the limits of the estimate: the error is measured against the next degree, not against the exact solution.
- Internal-flow boundary conditions (
total_inlet,pressure_outlet): used by the bump channel; simple pressure-extrapolation formulation. - Sutherland viscosity: implemented, not part of the verification suite.
- GPU execution: used for the larger verification studies; small problems are faster on CPU because compilation dominates.
Not included#
- Gauss–Lobatto collocation trades some accuracy per degree of freedom for diagonal mass matrices and entropy-conservative volume terms: the design rate is checked for the advected density wave and for steady manufactured solutions on Cartesian meshes, while for the nonlinear unsteady vortex only the guaranteed rate is required and the observed rate is reported.
- In diffusion-dominated regimes only the rate is required of the state; the observed orders per variable are reported (details).
- Elements are isoparametric, so at curved walls are polygons and generate spurious entropy at their kinks; use on curved geometry (evidence).
- Sharp trailing edges are geometric singularities: output convergence rates there are limited by the singularity, not by .
- First use of each mesh-size/degree combination costs tens of seconds of JIT compilation; sessions and the persistent compilation cache amortise it.