Welcome to DRAGonFLy

alt text

DRAGonFLy performs aerodynamic analysis and gradient-based shape optimization of airfoils and wings with a discontinuous Galerkin (DG) compressible flow solver for the Euler and Reynolds-averaged Navier-Stokes (RANS) equations. The flow solver is built on FEniCSx, and the optimization model is assembled with CSDL, which computes total derivatives through the whole chain from the shape design variables to lift, drag and pitching moment.

The Python package is distributed as dragonfly-sim and imported as dragonfly_sim. The source code is on GitHub.

Capabilities

  • Compressible Euler flow in 2D and 3D, and compressible RANS with the SA-neg turbulence model or laminar Navier-Stokes, discretized with piecewise-constant (p=0) DG elements (see RANS, time integration and far fields).

  • Steady solves with Newton’s method and a positivity-preserving step limiter, optionally with pseudo-transient continuation; unsteady BDF1/BDF2 time stepping, with optional dual time stepping; checkpoint and restart.

  • A characteristic far field set by the free-stream state; slip and adiabatic no-slip walls.

  • GMRES with additive-Schwarz/ILU preconditioning and parallel execution with MPI.

  • Free-form deformation (FFD) shape parameterization built from layers: control-point motions, sectional variables (camber, thickness, twist, …) and wing planform variables (sweep, aspect ratio, root chord, taper ratio), with geometric constraints (area/volume, thickness, planform).

  • Volume mesh deformation by inverse-distance weighting (IDWarp).

  • Adjoint-based derivatives of lift, drag and pitching moment with respect to the shape variables and the angle of attack, for Euler and RANS, for optimization with modOpt.

  • Forward analysis on a fixed mesh, without shape variables.

  • An optional POD reduced-order model (least-squares Petrov-Galerkin) of the steady flow solve, with a fallback to the full-order solve (see Reduced-order modeling).

  • Mesh input from XDMF, gmsh or structured CGNS files, with the wall and symmetry planes defined by a function or by the mesh’s boundary tags (Meshes); VTX output for ParaView.