2D Flutter

p-k flutter analysis of a heave–pitch airfoil section, with an optional flap — run it in the browser

2D Flutter finds the flutter speed of a typical airfoil section: a rigid aerofoil on a heave spring and a pitch spring, optionally with a trailing-edge flap on a hinge spring as a third degree of freedom. It sweeps the airspeed, solves the flutter equation at each speed for every structural mode with the p-k method, and reports where the damping of a mode crosses zero. The desktop version is a terminal program; this page runs the same engine (source). Nothing you enter is stored.

The section

Typical section: an aerofoil on a heave spring and a pitch spring at the elastic axis, with the quarter chord, elastic axis, CG and mid-chord marked, and the offsets a b and x-alpha b
Geometry, degrees of freedom and sign conventions (drawn to scale for the shipped defaults).

Positions are in semi-chords b. a places the elastic axis aft of mid-chord (negative is forward), xα places the CG aft of the elastic axis, and the flap hinge c is measured aft of mid-chord, between −1 and 1. The pitch inertia Iα is about the elastic axis for the whole section, flap included; the flap CG offset xβ is aft of the hinge and normalised by the total mass. Spring stiffnesses come from the uncoupled frequencies: kh = ωh²m, kα = ωα²Iα, kβ = ωβ²Iβ. Inputs and outputs are SI.

Run it

Start from a preset: Shipped defaults · Flap example · Stable section (CG ahead of EA)

Section

Flap

The flap values are used only with 3 degrees of freedom.

Speed sweep

Results

Flutter at 20.50 m/s (mode 2, 16.86 rad/s).

ModeIn-vacuo ω [rad/s]VF [m/s]ωF [rad/s]Note
1 9.93 — — no flutter in range; tracking ends at 40.4 m/s
2 23.04 20.50 16.86
3 37.93 — — no flutter in range
2026-10-23T20:36:21.860982 image/svg+xml Matplotlib v3.11.2, https://matplotlib.org/

Top: frequency of each mode against speed. Bottom: damping g; a mode flutters where g crosses zero (dashed line). The dotted line is the g = 0.03 allowable.

Method

For each mode and speed V the p-k equation [(V/b)²p²M + K − ρπbV²A(k)]x = 0, with k = Im(p), is solved by fixed-point iteration on k: with k fixed it is an eigenproblem in p, the root nearest the mode's current estimate is kept, and k is updated until it converges. A(k) is Theodorsen's oscillatory aerodynamics (with the flap T-functions for the third degree of freedom), using R. T. Jones' two-pole approximation of C(k) from NACA Report 681. Modes are seeded from the coupled in-vacuo frequencies and extrapolated from speed to speed, so each curve stays one mode. Damping is shown as g = 2 Re(p)/Im(p), the flutter convention, so g = 0.03 is 1.5 % critical damping.

A mode the iteration can no longer follow (its frequency falls to zero near static divergence, or it stops oscillating because it is so heavily damped) ends at that speed; the other modes carry on and the table notes where. The flow is incompressible, so results at high speeds are only indicative.

Verification

The textbook section of Hodges & Pierce, Introduction to Structural Dynamics and Aeroelasticity, ch. 5 (a = −1/5, xα = 1/10, μ = 20, r² = 6/25, ωh/ωα = 2/5) is a regression test: VF/(bωα) = 2.1704 and ωF/ωα = 0.644. An independent k-method solve gives the same values; with the exact Theodorsen function it gives 2.184, so the Jones approximation costs about 0.6 %.