Skip to content

The Landau Damping Benchmark, Start to Finish

The task

Set up, run and analyse the standard kinetic benchmark, and decide whether the solver passes.

Step 1: the target

The least-damped root of \(\epsilon(k,\omega) = 0\) for a Maxwellian at \(k\lambda_D = 0.5\):

\[\omega_r = 1.41566,\qquad \gamma = -0.15336\]

Pick \(k\lambda_D = 0.5\) deliberately. It damps by a factor of ~20 over \(20\,\omega_{pe}^{-1}\) — enough decades for a clean fit, not so fast that the signal vanishes into round-off before you have peaks to regress.

Step 2: choose the grid

Parameter Choice Why
\(L\) \(2\pi/k = 4\pi \approx 12.57\) exactly one wavelength
\(N_x\) 64 the mode is \(k=1\) in box units; harmonics need a few more
\(v_{\max}\) 6 must comfortably exceed the resonant velocity
\(N_v\) 256 sets \(\Delta v\), hence recurrence — see step 4
\(A\) 0.01 small enough that trapping stays negligible
\(\Delta t\) 0.05 ~125 steps per plasma period

Why \(v_{\max} = 6\) and not 3. The resonant velocity is \(\omega_r/k = 1.41566/0.5 = 2.83\) in units of \(v_{th}\). The damping is produced by particles near that velocity, and the Maxwellian tail beyond it still matters. Truncating at \(3v_{th}\) chops the resonance region in half and the measured rate comes out wrong — a subtle, plausible-looking error.

Step 3: the factor of two

Linear theory gives the amplitude rate. The field energy

\[\mathcal{E}(t) = \int \frac{E^2}{2}\,dx\]

therefore decays as \(e^{2\gamma t}\):

\[\text{slope of }\ln\mathcal{E}\text{ vs }t = 2\gamma = -0.30672\]

Report \(\gamma\), not the slope. Half the right answer is the single most common outcome of this exercise, and \(-0.0767\) looks entirely reasonable if you are not expecting it.

Step 4: check recurrence before you run

\[\Delta v = \frac{2\times6}{256} = 0.0469, \qquad T_R = \frac{2\pi}{k\,\Delta v} = \frac{6.283}{0.5\times0.0469} = 268\]

The damping time is \(1/|\gamma| = 6.5\). So there are ~41 damping times before recurrence — enormous headroom. Run to \(t = 30\) and it is irrelevant.

Contrast \(N_v = 32\): \(\Delta v = 0.375\), \(T_R = 33.5\), barely five damping times, and the tail of the fit is contaminated. This calculation costs nothing and takes thirty seconds; doing it after a failed run costs a day.

Step 5: fit the envelope

\(\mathcal{E}(t)\) oscillates at \(\omega_r\) and decays. Regressing on the raw signal biases the slope, because the oscillation minima are not symmetric in the log. Instead:

  1. Find local maxima of \(\mathcal{E}(t)\).
  2. Regress \(\ln\mathcal{E}\) against \(t\) through those peaks only.
  3. Divide by 2.

Window: start at \(t \approx 3\) (after the initial transient — the initial condition is not the least-damped eigenmode, so faster-damping roots contribute early), end by \(t \approx 25\).

Step 6: measure \(\omega_r\) too

The peaks of the energy occur twice per field period, so

\[\omega_r = \frac{\pi}{\langle\Delta t_{\rm peak}\rangle}\]

Another factor-of-two trap, in the opposite direction from step 3.

Step 7: the verdict

The live solver at these settings returns:

Quantity Measured Exact Error
\(\gamma\) −0.15382 −0.15336 0.3%
\(\omega_r\) 1.4151 1.41566 0.04%
\(\int f\,dv\,dx\) drift \(-7\times10^{-9}\) 0
Total energy drift 0.02% 0 splitting error, as expected

Pass. Now do it at \(k\lambda_D = 0.3\), 0.4 and 0.6 as well:

\(k\lambda_D\) measured exact error
0.3 −0.01213 −0.01262 3.9%
0.4 −0.06647 −0.06613 0.5%
0.5 −0.15382 −0.15336 0.3%
0.6 −0.26483 −0.26411 0.3%

The scan is the real test. A code with a systematic error can be tuned to match one \(k\); matching across a range where \(\gamma\) varies by a factor of 20 cannot be arranged by accident. Note that \(k\lambda_D = 0.3\) is the worst case here — the damping is so weak that a small numerical diffusion is a larger fraction of it.

What failure looks like

Symptom Likely cause
\(\gamma\) exactly half or double the factor of two
Growth instead of damping sign error in the velocity shift (\(dv/dt = -E\))
Damping far too strong, worse at fine \(\Delta t\) linear interpolation — you are measuring numerical diffusion
Right at one \(k\), wrong at others systematic error masked by tuning
Total garbage, \(\int f \to 0\) departure-point indexing in the interpolation

Landau damping numerically · Semi-Lagrangian solver · Recurrence · Growth-rate fitting · Landau damping theory (PC368)