Mixed Hermite-Legendre 1D Configuration Reference
This document describes how to construct a configuration file for the
hermite-legendre-1d solver, which implements the mixed Hermite-Legendre
spectral method for the 1D-1V electrostatic Vlasov-Poisson system (Issan,
Delzanno & Roytershteyn, arXiv:2606.12322).
The electron distribution is split f = f0 + df:
f0(near-Maxwellian bulk) is expanded in the asymmetrically-weighted (AW) Hermite basis in velocity, with coefficientsC_n(x, t),n = 0 .. Nh-1.df(strongly non-Maxwellian features: beams, plateaus, filamentation) is expanded in the Legendre basis on a bounded velocity window[v_a, v_b], with coefficientsB_m(x, t),m = 0 .. Nl-1.
The highest Hermite coefficient C_{Nh-1} feeds the Legendre modes (one-way
coupling), and both feed the self-consistent field through Poisson. The method is
most accurate, at fixed total velocity DOFs, when non-Maxwellian features are
localized in velocity.
Normalization (paper sec 2.1): time by 1/ω_pe, space by the Debye length
λ_D, velocity by the electron thermal velocity v_the. A single electron species
is evolved against an immobile neutralizing ion background of density 1.
Numerics. Space is treated spectrally (Fourier, periodic domain); both
free-streaming operators are symmetric-tridiagonal in mode index and integrated
exactly via prediagonalized matrix exponentials. The E-field force, the Legendre
Dirichlet penalty, and the Hermite→Legendre coupling are advanced explicitly with
Lawson-RK4. (The paper uses an implicit-midpoint integrator for machine-precision
energy conservation; this module uses an explicit integrator — energy is then
conserved to the time-integrator’s order, which converges with dt, while mass and
momentum remain conserved to machine precision.)
Top-Level Structure
solver: hermite-legendre-1d
mlflow: ...
units: ...
physics: ...
grid: ...
initialization: ...
save: ...
physics
Field |
Type |
Default |
Description |
|---|---|---|---|
|
float |
— |
Domain length in x (normalized to |
|
float |
— |
AW-Hermite velocity scale parameter |
|
float |
|
AW-Hermite velocity shift parameter |
|
float |
— |
Legendre velocity-window bounds ( |
|
float |
|
Penalty coefficient |
|
float |
|
Artificial (Lenard-Bernstein) Hermite collision rate |
|
float |
|
Artificial Legendre collision rate |
|
bool |
|
Zero the coupling integrals |
|
bool |
|
Self-consistent Poisson field. Set |
The artificial collision operator (paper sec 2.5) uses the cubic spectrum
col[n] = n(n-1)(n-2) / ((N-1)(N-2)(N-3)), which is identically zero for
n = 0, 1, 2 — so collisions never touch the mass/momentum/energy moments.
Choosing Nh (important). Keep the Hermite basis bulk-only — structure inside
the Legendre window belongs to df. At large Nh (≳64) and saturation-scale fields,
the nonlinear force ladder (pump ~|E|·√(2n)/α) outruns the cubic collision damping
in the mid-n window and a spurious k=0 velocity-space cascade grows there at
~10× the physical rate, eventually destroying the run — at any practical ν_H
(0, 10, and 30 were all measured to fail on the bump-on-tail benchmark). A small
basis closes the window structurally: bump-on-tail with Nh=32 reproduces the
Nh=128 field observables to 3 digits with machine-precision energy conservation.
grid
Field |
Type |
Default |
Description |
|---|---|---|---|
|
int |
— |
Number of Fourier modes in x |
|
int |
— |
Number of AW-Hermite modes for |
|
int |
— |
Number of Legendre modes for |
|
float |
— |
Final simulation time (normalized). Snapped to an exact multiple of |
|
float |
|
Timestep |
|
str |
|
Time integrator: |
|
int |
|
( |
|
int/int/float |
|
( |
|
bool |
|
( |
integrator: implicit (implicit midpoint via AD-JFNK)
Advances the full RHS with the implicit-midpoint rule y1 = y0 + dt·F((y0+y1)/2),
solved by Jacobian-free Newton-Krylov: each Newton linear system uses a matrix-free
GMRES whose Jacobian-vector products are exact autodiff JVPs (jax.linearize) — the
Jacobian is never assembled (memory is the state plus a few Krylov vectors). Implicit
midpoint is A-stable (no CFL at all) and conserves quadratic invariants, so it conserves
mass exactly and energy to the solve tolerance, and stays stable into the saturated /
long-time regime where both lawson and imex blow up (e.g. bump-on-tail). Cost: each
step does newton_iters × (GMRES iterations) × (RHS evals), so it is the most expensive
per step — use it for the hard cases, not the cheap ones.
Preconditioning (precondition: true, default). The implicit operator’s stiffness is
dominated by the skew streaming term, whose eigenvalues smear along the imaginary axis
(~dt/2·α·k_max·√(2Nh)) — the worst case for unpreconditioned GMRES, which then needs
many iterations and can fail to converge at large dt/Nx (Newton then injects energy).
The preconditioner M = I − dt/2·(L_streaming + L_collision) is block-diagonal in k and
tridiagonal in mode index, so M⁻¹ is a cheap per-k tridiagonal solve that captures
exactly that stiff spectrum; GMRES on M⁻¹A then converges in a handful of iterations.
Two measured caveats. (1) Do not precondition the Lorentz-force block: its triangular
factors are strongly non-normal (nilpotent ladders, norm ~Nl²/width·|E|), and applying
their inverse stalls GMRES entirely at saturation-scale fields. (2) At large dt (≳0.05)
combined with large |E|, the stream-preconditioned solve itself degrades while
unpreconditioned GMRES still converges — set precondition: false for large-dt
experiments in strongly nonlinear regimes.
integrator: imex
The stiffness that limits the explicit step is the E·∂_v f Lorentz force: in the
spectral velocity bases it is strictly lower-triangular (nilpotent for Hermite,
lower-triangular + a rank-2 penalty for Legendre) with operator norm ~Nl²/width·|E|
— so explicit RK4’s |dt·‖L‖|≲2.8 limit tightens as modes/field grow. Setting
integrator: imex keeps free-streaming, collisions, and the Hermite→Legendre closure
flux in the explicit Lawson step, and advances the Lorentz force with an
unconditionally stable frozen-E Backward-Euler substep (a per-x triangular/dense
linear solve; first-order Lie split). This removes the CFL limit, letting two-stream
run at dt ≈ 0.02 instead of 0.002. Trade-offs: Backward Euler is mildly dissipative
and the split is first-order in dt, so for high-accuracy/conservation studies prefer
small-dt lawson; for robustness at large mode counts or large Nx, prefer imex.
Choosing dt. Free-streaming and collisions are integrated exactly, but the
explicit Lawson-RK4 treatment of the E-field force has a stability (CFL) limit that
tightens as the self-consistent field grows. For small-amplitude/linear runs (e.g.
driven Landau damping) dt = 0.05 is fine; for nonlinear instabilities that saturate
to a large field (two-stream) a smaller step is needed — dt ≈ 0.002 is stable and
converged for the two-stream benchmark. (The paper’s dt = 0.01 relies on its
unconditionally stable implicit-midpoint integrator; this explicit module trades that
for a smaller step and a much smaller memory footprint.) A run that goes NaN partway
through is the signature of dt above the CFL limit — halve it.
initialization
Selects how the initial C_n(x) and B_m(x) coefficients are built.
|
Parameters |
Description |
|---|---|---|
|
|
|
|
|
|
|
|
Bulk Maxwellian in |
|
|
Generic Hermite coefficient profiles plus a beam/sum-of-Gaussians |
Here k = 2π·mode/Lx. The Legendre projection uses Gauss-Legendre quadrature.
drivers (optional)
An external longitudinal field ex can be applied to the velocity-space force (it
never enters the Poisson solve), e.g. to drive a resonant EPW for a Landau-damping
measurement — the analogue of the Vlasov-1D ex driver. Omit the drivers block for
self-consistent runs.
drivers:
ex:
'0': # one entry per pulse
k0: 0.4 # wavenumber
w0: 1.285 # angular frequency (e.g. Re(omega) from the dispersion relation)
dw0: 0.0 # frequency offset (added to w0)
a0: 1.0e-3 # amplitude
t_center: 20.0 # pulse: center / full width / rise(+fall) time
t_width: 20.0
t_rise: 5.0
x_center: 7.85 # spatial envelope: center / width / rise (defaults span the box)
x_width: 1.0e6
x_rise: 1.0
The driver field is E_drive(x,t) = Σ env(x,t)·(w0+dw0)·a0·sin(k0 x − (w0+dw0) t) and
is saved as de in the fields group.
save
Standard ADEPT save block with t: {nt: ...} (or tmin/tmax/nt) sub-axes.
Key |
Contents |
|---|---|
|
Electric field |
|
AW-Hermite-Fourier coefficient timeseries |
|
Legendre-Fourier coefficient timeseries |
|
Scalar invariants |
post_process writes netCDF binaries and spacetime/scalar plots, and reports the
relative drift of each invariant as the metrics reldrift_{mass,momentum,energy}.
Example: two-stream instability
solver: hermite-legendre-1d
mlflow: {experiment: hermite-legendre-1d, run: two-stream}
units: {normalizing_density: 1e20/cc, normalizing_temperature: 1keV}
physics:
Lx: 12.566370614359172 # 4π
alpha: 1.4142135623730951
u: 0.0
v_a: -2.5
v_b: 2.5
gamma: 0.5
nu_H: 0.0
nu_L: 1.0
enforce_conservation: true
field: true
grid: {Nx: 64, Nh: 85, Nl: 171, tmax: 35.0, dt: 0.01}
initialization: {type: two-stream, eps: 0.01, mode: 1}
save:
fields: {t: {nt: 351}}
legendre: {t: {nt: 71}}
See configs/hermite-legendre-1d/ for the linear-advection, two-stream, and
bump-on-tail benchmark configurations.