Gyredocs
Depth Practice
API

Gyre/Overview

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.

Written at L1 Essentials goes to L3 Mechanics 2113 words Markdown

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 Re=100Re = 100 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 Re=40Re = 40
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 p+1p+1 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

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 p=2p = 2 on that one configuration with the default roe interface 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 nvar2(p+1)2dn_\text{var}^2 (p+1)^{2d} numbers per element, in single precision if solver.precond_precision: single is 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 p+1p+1 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 pp is required and the observed rate is reported.
  • In diffusion-dominated regimes only the rate pp is required of the state; the observed orders per variable are reported (details).
  • Elements are isoparametric, so at p=1p = 1 curved walls are polygons and generate spurious entropy at their kinks; use p≥2p \ge 2 on curved geometry (evidence).
  • Sharp trailing edges are geometric singularities: output convergence rates there are limited by the singularity, not by pp.
  • First use of each mesh-size/degree combination costs tens of seconds of JIT compilation; sessions and the persistent compilation cache amortise it.

    ↑ ↓ moveEnter open[ ] change depthResults show section and depth level