AERO-330 · Lesson 9 of 12 · 23 min

Handling qualities

Eigenvalues tell an engineer whether an aircraft is stable. They do not tell whether a pilot will like flying it. Handling qualities, sometimes called flying qualities, are the qualities of an aircraft that govern the ease and precision with which a pilot can perform a task. They live in the space between the engineer's numbers and the pilot's opinion, and connecting the two has occupied flight test pilots and researchers since the 1940s. Tomasz has booked two days in the engineering simulator, and later a session on the National Research Council's research aircraft and simulators in Ottawa, so that Sam and two other test pilots can rate the Tern Block 2 on a set of tasks. Arjun's job is to predict those ratings beforehand from the linear models, using published criteria.

Pilot opinion and the Cooper-Harper scale

The standard tool for collecting pilot opinion is the Cooper-Harper rating scale, published by George Cooper and Robert Harper of NASA in 1969. The pilot flies a defined task with defined performance standards, for example tracking a glideslope in light turbulence while keeping within a given deviation, and then answers a short decision tree. Is the aircraft controllable? If not, the rating is 10. Is adequate performance attainable with a tolerable workload? If not, 7 to 9. Is it satisfactory without improvement? If not, 4 to 6. If yes to all three, 1 to 3. Within each band the pilot chooses by describing the workload and the aircraft characteristics in words the scale provides.

A simplified decision tree of four boxes. Is it controllable? No leads to rating 10. Is adequate performance possible with tolerable workload? No leads to ratings 7 to 9, level 3. Is it satisfactory without improvement? No leads to ratings 4 to 6, level 2. Yes to all three gives ratings 1 to 3, level 1.
The Cooper-Harper scale in brief. The decision tree comes first; the descriptive wording inside each band refines the number.

The ratings map onto three levels used in requirements. Level 1, ratings 1 to 3, is clearly adequate for the mission. Level 2, ratings 4 to 6, means the mission can be completed but with increased workload or degraded performance. Level 3, ratings 7 to 9, means the aircraft can be controlled safely, but the workload is excessive or the mission cannot be completed. Requirements generally ask for level 1 in normal operation and allow level 2 or 3 only after failures that are unlikely. The ratings are subjective, so tests use several pilots, careful task definitions and repeated runs, and engineers look at the comments as closely as the numbers.

Criteria from flight test databases

Decades of variable-stability aircraft experiments, in which the dynamics of a test aircraft were changed in flight and pilots rated the result, produced quantitative criteria. The best known are the United States military flying qualities specification MIL-F-8785C (1980) and its successor handbook MIL-STD-1797. Civil regulations, including Transport Canada's Chapter 523 standards for normal category aeroplanes, are written as objectives rather than numbers: the aircraft must be stable, controllable and free of dangerous characteristics, with performance-based means of compliance agreed with Transport Canada. Civil manufacturers nevertheless use the military criteria as design guides because they are the most complete quantitative summary of what pilots accept. They classify aircraft by size and manoeuvrability (the Tern is a Class II, medium-weight aircraft of low to medium manoeuvrability) and flight phases by task: Category A for precise, rapid manoeuvring such as air-to-air refuelling, Category B for gradual manoeuvres such as cruise, and Category C for terminal phases such as approach and landing.

Short-period criteria and the CAP

For the short period, the criteria set bounds on the damping ratio and on the frequency. Frequency on its own is not enough, because what the pilot feels is the initial pitch acceleration produced for a given steady change in load factor. That leads to the control anticipation parameter, or CAP, introduced by Bihrle in the 1960s:

\[\text{CAP} = \frac{\omega_{n,sp}^2}{n/\alpha} \qquad \frac{n}{\alpha} = \frac{qS\,C_{L_\alpha}}{W} = \frac{C_{L_\alpha}}{C_L}\]

The pilot anticipates the eventual load factor from the initial pitch acceleration. Too low a CAP and the aircraft feels sluggish, with the load factor arriving long after the input; too high and it feels abrupt and invites overcontrol. In MIL-F-8785C the level 1 boundaries for CAP are approximately 0.28 to 3.6 for Category A, 0.085 to 3.6 for Category B and 0.16 to 3.6 for Category C, in units of per second squared per g. The corresponding level 1 short-period damping ratio limits are approximately 0.35 to 1.30 for Categories A and C and 0.30 to 2.0 for Category B.

A chart of CAP on a logarithmic vertical scale against short-period damping ratio. A large pale gold rectangle marks level 2. A smaller pale green rectangle inside it marks level 1, Category C. Two points, cruise and approach, lie inside the level 1 rectangle at damping ratios near 0.5 and CAP near 0.9.
Short-period CAP and damping ratio of the Tern Block 2 against the approximate Category C boundaries. Both conditions sit comfortably inside level 1.

Other criteria

The phugoid needs only a little damping: about 0.04 for level 1, any positive damping for level 2, and a time to double of at least 55 seconds for level 3. The roll mode time constant should be no more than about 1.4 seconds for a Class II aircraft in Categories B and C at level 1. The spiral may be unstable if its time to double is long, at least about 20 seconds at level 1. For the Dutch roll, level 1 in Category B requires approximately a damping ratio of at least 0.08, a product of damping and frequency of at least 0.15 rad/s and a frequency of at least 0.4 rad/s. Additional criteria cover roll performance (time to bank through 30 degrees), roll-sideslip coupling, stick force per g, and the time delays introduced by digital flight controls, which became important when fly-by-wire aircraft showed that a few tenths of a second of lag can turn a pleasant aircraft into one prone to pilot-induced oscillation.

The Tern Block 2 at cruise (Category B) and approach with flaps (Category C) checked against approximate MIL-F-8785C levels for the short period, CAP and phugoid, with the lateral modes from Lesson 8 and the simulator pilot ratings mapped to levels.
# Handling-qualities check of the Tern Block 2 against the MIL-F-8785C style levels used as
# a design guide: control anticipation parameter, short period, phugoid and lateral modes,
# in cruise (Category B) and on approach with flaps (Category C).
import math
def charpoly(A):
    """Coefficients of det(sI - A), highest power first (Faddeev-LeVerrier)."""
    n = len(A); M = [[0.0] * n for _ in range(n)]; c = [1.0]
    I = [[1.0 if i == j else 0.0 for j in range(n)] for i in range(n)]
    for k in range(1, n + 1):
        AM = [[sum(A[i][l] * M[l][j] for l in range(n)) for j in range(n)] for i in range(n)]
        M = [[AM[i][j] + c[-1] * I[i][j] for j in range(n)] for i in range(n)]
        AM = [[sum(A[i][l] * M[l][j] for l in range(n)) for j in range(n)] for i in range(n)]
        c.append(-sum(AM[i][i] for i in range(n)) / k)
    return c

def roots(c, it=500):
    """All roots of a polynomial by the Durand-Kerner iteration."""
    n = len(c) - 1; a = [x / c[0] for x in c]
    z = [complex(0.4, 0.9) ** k for k in range(n)]
    for _ in range(it):
        new = []
        for i in range(n):
            p = sum(a[k] * z[i] ** (n - k) for k in range(n + 1))
            d = 1
            for j in range(n):
                if j != i: d *= (z[i] - z[j])
            new.append(z[i] - p / d)
        z = new
    return sorted(z, key=lambda r: -abs(r))

def describe(s):
    import math
    if abs(s.imag) < 1e-6:
        t = -1 / s.real if s.real < 0 else 1 / s.real
        kind = 'time constant' if s.real < 0 else 'doubles every'
        val = t if s.real < 0 else math.log(2) / s.real
        return f"real root {s.real:+.4f}: {kind} {val:.2f} s"
    wn = abs(s); z = -s.real / wn
    return f"pair {s.real:+.4f} +/- {abs(s.imag):.4f}j: wn {wn:.3f} rad/s, zeta {z:.3f}, period {2*math.pi/abs(s.imag):.1f} s"

m, Iyy, Ixx, Izz, S, c, b, g = 6500.0, 27000.0, 30000.0, 52000.0, 28.0, 1.73, 17.0, 9.81
cases = {'cruise, 3000 m': dict(rho=0.909, u0=105.0, CLa=5.6, CD0=0.028, cat='B'),
         'approach, flaps': dict(rho=1.225, u0=52.0, CLa=5.9, CD0=0.080, cat='C')}
def long_modes(rho, u0, CLa, CD0, Cma=-1.0, Cmq=-20.0, Cmad=-6.0, **_):
    QS = 0.5 * rho * u0 ** 2 * S; CL = m * g / QS; CD = CD0 + 0.039 * CL ** 2; CDa = 2 * 0.039 * CL * CLa
    Xu = -2 * CD * QS / (m * u0); Xw = (CL - CDa) * QS / (m * u0); Zu = -2 * CL * QS / (m * u0)
    Zw = -(CLa + CD) * QS / (m * u0); Mw = Cma * QS * c / (Iyy * u0)
    Mwd = Cmad * (c / (2 * u0)) * QS * c / (Iyy * u0); Mq = Cmq * (c / (2 * u0)) * QS * c / Iyy
    A = [[Xu, Xw, 0, -g], [Zu, Zw, u0, 0], [Mwd * Zu, Mw + Mwd * Zw, Mq + Mwd * u0, 0], [0, 0, 1, 0]]
    r = sorted([s for s in roots(charpoly(A)) if s.imag > 1e-6], key=abs)
    return r[-1], r[0], CL, CLa / CL
SP_Z = {'B': [(0.30, 2.0), (0.20, 2.0)], 'C': [(0.35, 1.30), (0.25, 2.0)]}
CAP = {'B': [(0.085, 3.6), (0.038, 10.0)], 'C': [(0.16, 3.6), (0.096, 10.0)]}
def level(x, bands):
    for i, (lo, hi) in enumerate(bands):
        if lo <= x <= hi: return i + 1
    return 3
for name, f in cases.items():
    sp, ph, CL, n_a = long_modes(**f)
    wsp, zsp = abs(sp), -sp.real / abs(sp); zph = -ph.real / abs(ph)
    cap = wsp ** 2 / n_a
    print(f"{name} (Category {f['cat']}): CL {CL:.2f}, n/alpha {n_a:.1f} g/rad")
    print(f"   short period wn {wsp:.2f} rad/s, zeta {zsp:.2f} -> level {level(zsp, SP_Z[f['cat']])}")
    print(f"   CAP {cap:.2f} 1/(s^2 g) -> level {level(cap, CAP[f['cat']])}")
    print(f"   phugoid zeta {zph:.3f} -> level {1 if zph >= 0.04 else (2 if zph >= 0 else 3)}")
# lateral modes from Lesson 8 (cruise) against Class II limits
tau_r, dr_wn, dr_z, t2_spiral = 0.30, 2.34, 0.113, 2184.0
print("\nlateral, cruise (Category B, Class II):")
print(f"   roll time constant {tau_r:.2f} s (level 1 needs at most 1.4 s) -> level {1 if tau_r <= 1.4 else 2}")
ok = dr_z >= 0.08 and dr_z * dr_wn >= 0.15 and dr_wn >= 0.4
print(f"   Dutch roll zeta {dr_z:.3f}, zeta*wn {dr_z*dr_wn:.3f}, wn {dr_wn:.2f} -> level {1 if ok else 2}")
print(f"   spiral time to double {t2_spiral:.0f} s (level 1 needs at least 20 s) -> level {1 if t2_spiral >= 20 else 2}")
# Cooper-Harper ratings from the simulator session, mapped to levels
for task, rating in (('cruise heading capture', 2), ('ILS tracking in turbulence', 4), ('crosswind flare', 3)):
    lv = 1 if rating <= 3 else (2 if rating <= 6 else 3)
    print(f"pilot rating {rating} for '{task}' -> level {lv}")
Output
cruise, 3000 m (Category B): CL 0.45, n/alpha 12.3 g/rad
   short period wn 3.27 rad/s, zeta 0.47 -> level 1
   CAP 0.87 1/(s^2 g) -> level 1
   phugoid zeta 0.052 -> level 1
approach, flaps (Category C): CL 1.38, n/alpha 4.3 g/rad
   short period wn 1.95 rad/s, zeta 0.55 -> level 1
   CAP 0.89 1/(s^2 g) -> level 1
   phugoid zeta 0.056 -> level 1

lateral, cruise (Category B, Class II):
   roll time constant 0.30 s (level 1 needs at most 1.4 s) -> level 1
   Dutch roll zeta 0.113, zeta*wn 0.264, wn 2.34 -> level 1
   spiral time to double 2184 s (level 1 needs at least 20 s) -> level 1
pilot rating 2 for 'cruise heading capture' -> level 1
pilot rating 4 for 'ILS tracking in turbulence' -> level 2
pilot rating 3 for 'crosswind flare' -> level 1

In cruise the Tern's short period has a damping ratio of 0.47 and a CAP of 0.87; on the approach, at a lift coefficient of 1.38 where the load factor per unit angle of attack is only 4.3 g per radian, the slower short period still gives a CAP of 0.89 and a damping ratio of 0.55. All the longitudinal criteria are level 1, and so are the roll time constant, the spiral and, just, the Dutch roll. The simulator ratings tell a slightly different story. Heading capture in cruise earned a 2 and the crosswind flare a 3, both level 1, but tracking the instrument landing system in moderate turbulence earned a 4, level 2. Sam's comment: 'The nose wanders in yaw in the bumps and I end up chasing the localizer with rudder.' The Dutch roll meets the minimum numbers but feels underdamped in that task. Requirements are necessary, not sufficient, and this is exactly the kind of finding that justifies the yaw damper of Lesson 10.

Approximate MIL-F-8785C level 1 boundaries used as design guides, and the Tern Block 2 values (cruise / approach).
Criterion (Class II, level 1, approximate)Category BCategory CTern
Short-period damping ratio0.30 to 2.00.35 to 1.300.47 / 0.55
CAP, 1/(s² g)0.085 to 3.60.16 to 3.60.87 / 0.89
Phugoid damping ratio≥ 0.04≥ 0.040.052 / 0.056
Roll time constant, s≤ 1.4≤ 1.40.30 (cruise)
Dutch roll ζ, ζω_n, ω_n0.08, 0.15, 0.40.08, 0.10, 0.40.113, 0.264, 2.34

Worked problem

Computing CAP

An aircraft cruises at \(C_L = 0.50\) with \(C_{L_\alpha} = 5.5\) per radian and a short-period natural frequency of 2.8 rad/s. Find the CAP and its Category B level.

Show solution
  1. \(n/\alpha = 5.5/0.50 = 11.0\) g per radian.
  2. \(\text{CAP} = 2.8^2/11.0 = 0.71\) per s² per g.
  3. 0.71 lies between 0.085 and 3.6, so level 1 for Category B.

Answer: Doubling the static margin would raise the frequency by about √2 and double the CAP to about 1.4, still level 1.

Worked problem

Dutch roll check

A Class II aircraft on approach has a Dutch roll with \(\omega_n = 1.1\) rad/s and \(\zeta = 0.07\). Check it against the approximate Category C level 1 values.

Show solution
  1. Damping ratio 0.07 is below 0.08: fails.
  2. \(\zeta\omega_n = 0.077\) is below 0.10: fails.
  3. Frequency 1.1 rad/s exceeds 0.4: passes.

Answer: The aircraft is level 2 on approach in this respect and would need a yaw damper or more yaw damping.

Common mistakes

  • MistakeTreating handling-qualities criteria as certification rules for civil aircraft.

    InsteadCivil rules state objectives; the military criteria are design guides.

  • MistakeAssuming a level 1 prediction guarantees good pilot ratings.

    InsteadCriteria are necessary, not sufficient; tasks and turbulence can reveal problems.

  • MistakeUsing short-period frequency alone as a handling measure.

    InsteadCAP relates frequency to the load factor response the pilot anticipates.

  • MistakeAveraging pilot ratings without reading the comments.

    InsteadThe comments explain why, and guide the fix.

Summary and key terms

  • Handling qualities describe how easily and precisely a pilot can perform a task.
  • The Cooper-Harper scale turns pilot opinion into ratings 1 to 10, grouped into levels 1 to 3.
  • Quantitative criteria, chiefly from MIL-F-8785C and MIL-STD-1797, bound the short-period damping ratio and CAP, phugoid damping, roll time constant, spiral time to double and Dutch roll damping by aircraft class and flight phase category.
  • Civil rules state objectives and use such criteria as guides.
  • The Tern meets the criteria but simulator ratings in turbulence reveal a lightly damped Dutch roll worth improving.
Handling qualities
The qualities governing the ease and precision of piloting tasks.
Cooper-Harper scale
A decision-tree rating scale from 1 (excellent) to 10 (uncontrollable).
Level 1
Handling clearly adequate for the mission; ratings 1 to 3.
CAP
Control anticipation parameter, ω_sp² divided by n/α.
Flight phase category
A, B or C, grouping tasks by precision and manoeuvring needed.
Aircraft class
A grouping by size and manoeuvrability used in the criteria.

Practice problems

Work each problem on paper first, then reveal the answer to check.

  1. Which Cooper-Harper ratings form level 2?

    Show answer

    4 to 6.

  2. What does CAP measure?

    Show answer

    The initial pitch acceleration per unit of steady load factor change, which the pilot uses to anticipate the response.

  3. Why is n/α smaller on approach than in cruise?

    Show answer

    The lift coefficient is higher, so n/α = C_Lα/C_L is lower.

  4. In the program, give the ILS tracking task a rating of 3. What level results?

    Show answer

    Level 1.

  5. Into which category does an approach fall?

    Show answer

    Category C, terminal flight phases.

  6. Why are digital time delays important for handling?

    Show answer

    A few tenths of a second can provoke pilot-induced oscillations.

Lesson quiz · 5 questions

Score 60% or more to complete this lesson.

Take the quiz