Plasma models, orderings, and scales

Two pages answer different questions. Computational layers says where a computation belongs in VAFT (Formula, Process, Code). This page says what physical model the computation represents.

New here? Start with Plasma models: a guide (#1739). It explains the model families and places every VAFT mode, with generated tables; this page holds the evidence behind each classification.

What this page is. It is the Phase A audit of #1723, under issue #1725: a reviewed scientific classification.

What it is not. It is not an API: no enum and no model class is introduced here. Phase B (#1727) will encode only the distinctions that survive this audit.

How confidence is marked. Every classification carries a confidence:

confidence meaning
verified backed by a primary theory publication, upstream solver documentation, or upstream source
provisional backed by literature, but not checked against source, or a citation detail is unconfirmed
unresolved the evidence needed has not been found

A VAFT name is never evidence for the physics.

1. Why one “fidelity” axis does not work

The models VAFT drives differ along several independent axes, listed in the table below.

Resistive MHD and gyrokinetics are not two rungs of one ladder. Their orderings differ:

  • resistive MHD averages over all particle phase space and closes the layer with a resistivity;
  • gyrokinetics keeps $k_\perp\rho\sim1$ and phase-space structure, but removes the fast gyro-motion.

Neither reduces to the other. Collisional electromagnetic gyrokinetics does contain tearing and microtearing layer physics, but under a different ordering.

The axes the audit found to be physically meaningful are:

axis question it answers examples of values
scientific operation what is being computed stability, perturbed equilibrium, neoclassical transport, turbulence, orbit/loss, source deposition
bulk description what represents the bulk plasma fluid, hybrid (fluid + kinetic response), kinetic, particle (test particles), reduced
fluid model which fluid closure, when there is one ideal MHD, resistive MHD, extended MHD
kinetic equation which kinetic equation is solved, when one is none, drift kinetic, gyrokinetic, Fokker–Planck (test species)
kinetic population which species obey it all species, thermal ions (+ electrons), fast ions, energetic particles
kinetic coupling how a kinetic result re-enters a fluid model energy (δW_k), pressure, current, closure on a given displacement, sources
distribution formulation $f$ split δf, full-f, N/A
orbit representation particle motion full orbit, guiding centre, bounce/transit averaged, N/A
spatial domain radial extent local (flux tube or single surface), radially global, whole volume
topology domain field-line topology covered closed flux surfaces, open field lines, across the separatrix
regime dynamics linear, nonlinear, quasilinear, steady state, static (marginal)
field model perturbed fields MHD displacement, electrostatic, electromagnetic ($A_\parallel$, $\delta B_\parallel$)

Two points this audit settled:

  • Orbit representation is a separate axis from the kinetic equation. ASCOT5 and NUBEAM solve a Fokker–Planck equation by Monte Carlo orbit following, while SIMPLE follows orbits and evolves no distribution.
  • “Kinetic-profile input” is not an axis at all. It is a property of the inputs (§6).

How the tables write “not applicable”. In the tables below, “—”, “none” and “N/A” all mean not applicable: for example, a fluid model solves no kinetic equation. The record of §10 writes that as None.

2. Theory foundations

2.1 Fluid hierarchy

Ideal MHD.

  • Single fluid, ideal Ohm’s law $E + v\times B = 0$, scalar pressure with an adiabatic or incompressible closure.
  • Valid at $\rho/L\ll1$ and $\omega\ll\Omega_i$, on scales above $d_i$.
  • The scalar-pressure closure also assumes collisions keep the pressure isotropic, or treats the anisotropy as negligible.
  • References: Bernstein, Frieman, Kruskal & Kulsrud, Proc. R. Soc. A 244, 17 (1958); Freidberg, Ideal MHD (2014).

Resistive MHD.

  • Adds $\eta J$ to Ohm’s law. In a tokamak this matters only in thin layers around rational surfaces.
  • Glasser, Greene & Johnson, Phys. Fluids 18, 875 (1975).

Hall, two-fluid and extended MHD.

  • These add, separately, the Hall term $J\times B/ne$, the electron pressure gradient, electron inertia, gyroviscosity (FLR) and anisotropic pressure. They come from Braginskii’s two-fluid equations, Rev. Plasma Phys. 1, 205 (1965).
  • “Extended MHD” is a family of fluid closures.
  • It is not a synonym for kinetic MHD (§2.5).

Reduced MHD.

  • An expansion in $\epsilon=a/R$, $\beta$ and $k_\parallel/k_\perp$; Strauss, Phys. Fluids 19, 134 (1976).
  • It is an ordering applied to a fluid model, not a different fluid model. Low aspect ratio weakens its premise (#1627).

2.2 Drift kinetics

Ordering.

  • $\omega/\Omega_c\ll1$ and $\rho/L\ll1$.
  • The gyro-phase is averaged out.
  • Particles move as guiding centres: parallel streaming, $E\times B$ drift, $\nabla B$ and curvature drifts.
  • Collisions are retained as needed.

The equation is derived systematically by Hazeltine, Plasma Phys. 15, 77 (1973). The neoclassical application is reviewed by Hinton & Hazeltine, Rev. Mod. Phys. 48, 239 (1976).

Three related things that are not equivalent:

  • Guiding-centre dynamics: single-particle equations of motion. Littlejohn, J. Plasma Phys. 29, 111 (1983); Cary & Brizard, Rev. Mod. Phys. 81, 693 (2009).
  • The drift-kinetic equation: evolves the guiding-centre distribution.
  • Neoclassical transport: one application of the drift-kinetic equation, as a steady first-order solution driven by equilibrium gradients.

2.3 Gyrokinetics

Ordering.

  • Low frequency, $\omega/\Omega_i\sim\rho_*$.
  • Strong anisotropy, $k_\parallel/k_\perp\sim\rho_*$.
  • Small fluctuations, $\delta f/F\sim\rho_*$.
  • But $k_\perp\rho\sim1$ is allowed: the gyro-phase is removed by gyro-averaging, not by assuming $k_\perp\rho\ll1$.

References: Frieman & Chen, Phys. Fluids 25, 502 (1982); Brizard & Hahm, Rev. Mod. Phys. 79, 421 (2007). The multiscale treatment with rotation is Abel, Plunk, Wang, Barnes, Cowley, Dorland & Schekochihin, Rep. Prog. Phys. 76, 116201 (2013).

Relation to drift kinetics. In the limit $k_\perp\rho\to0$, the gyrokinetic equation reduces to a drift-kinetic form. Gyrokinetics is therefore not “higher-fidelity drift kinetics”:

  • it keeps finite-$k_\perp\rho$ physics that drift kinetics orders out;
  • its δf is a small fluctuation about the equilibrium;
  • neoclassical drift kinetics is also δf ($f_1/F_0\sim\rho_*$), but $f_1$ is a steady, axisymmetric departure, not a fluctuation.

2.4 Particle-orbit descriptions

There are three descriptions:

  • full orbit: the Lorentz force;
  • guiding-centre orbit: first-order guiding-centre equations;
  • distribution evolution: a kinetic equation for $f$.

Monte Carlo codes connect the first two to the third. A test-particle Fokker–Planck equation can be solved by following markers with stochastic collision kicks (ASCOT5, NUBEAM). This is still a statement about a test population in a fixed background, not about the bulk plasma.

An orbit integrator alone is not a drift-kinetic plasma solver. SIMPLE is one example: it evolves no distribution.

2.5 Kinetic-MHD and hybrid models

Shared structure. The bulk plasma is fluid (MHD). A kinetic equation for selected populations supplies part of the force through a pressure tensor, a current, or an energy term. The family:

  • Kruskal & Oberman, Phys. Fluids 1, 275 (1958): the collisionless kinetic energy principle;
  • Antonsen & Lane, Phys. Fluids 23, 1205 (1980);
  • Cheng, Phys. Rep. 211, 1 (1992): the kinetic-MHD review;
  • Park et al., Phys. Fluids B 4, 2033 (1992): hybrid gyrokinetic-MHD.

Distinctions to keep:

  • MHD plus a drift-kinetic response (DCON kinetic, MARS-K);
  • MHD plus a gyrokinetic response (the hybrid gyrokinetic-MHD of Park et al. 1992);
  • MHD plus kinetic energetic particles (M3D-K, MEGA, NIMROD kinetic);
  • a fully kinetic or gyrokinetic plasma (CGYRO, GENE, GTC, ORB5).

Kinetic-MHD is a family, not one model. What varies inside it is the coupling (pressure or current), the population, and the orbit treatment (§8).

3. The GPEC suite, mode by mode

Sources.

  • Upstream: ~/git/GPEC at e68d7ac2 (2026-08-04).
  • VAFT adapter: vaft/code/gpec/. Packaged namelists: vaft/data/gpec/*.in.

Main finding. DCON’s kinetic mode is not a separate kinetic solver:

  • with kin_flag=t, DCON calls PENTRC’s drift-kinetic operator at every surface and every bounce harmonic $\ell$;
  • it adds the complex result into the ideal Euler–Lagrange coefficient matrices (dcon/fourfit.F:1062-1085, 1153-1158).
mode operation bulk fluid model kinetic equation kinetic population coupling FLR collisions regime confidence
DCON ideal (kin_flag=f) $n\neq0$ stability: Newcomb criterion on the Euler–Lagrange ODE, δW eigenvalues fluid linear ideal MHD energy principle none — — N/A none linear, static verified
DCON kinetic (kin_flag=t) same ODE with a complex, non-self-adjoint δW + δW_k; Im δW gives the torque hybrid ideal MHD linear drift kinetics in a bounce/transit-harmonic (action-angle) decomposition (PENTRC operator) one thermal main ion; electrons if electron_flag=t; Maxwellian $f_0$ by default (f0type also allows jkp, cgl); no energetic particles energy (δW_k matrices added to the EL coefficients), self-consistent none (zero Larmor radius) pentrc.in nutype: zero / small / Krook / harmonic linear, zero lab-frame frequency verified (equation class); provisional (the name “drift-kinetic MHD”)
GPEC ideal perturbed equilibrium under an external 3-D field fluid ideal MHD none — — N/A none linear, static verified
GPEC kinetic self-consistent kinetic perturbed equilibrium; dw_flag energy and torque profiles hybrid ideal MHD inherited from DCON’s matrices, nothing separate inherited inherited none inherited linear, static verified
GPEC thresholds (singthresh_*) critical resonant field / island width per surface reduced layer models SLAYER: “linear drift MHD” slab; Callen: analytic cubic none (kinetic profiles only) — — unresolved unresolved linear layer provisional
PENTRC on a GPEC ξ NTV torque, non-ambipolar flux for a given displacement kinetic closure on a fluid displacement, not self-consistent (ideal or kinetic GPEC ξ is input) linear drift kinetics, bounce-harmonic decomposition; reduced variants: large aspect ratio, CGL fluid limit one species per run: main ion or electrons torque from the anti-Hermitian part none zero / small / Krook / harmonic linear, static verified
RDCON + RMATCH Δ′ matrix and matched resistive growth rates fluid outer: ideal MHD; inner: linear resistive MHD (GGJ) none — — N/A scalar η per surface linear eigenvalue verified
STRIDE ideal stability and free-boundary Δ′ fluid ideal MHD (outer region only; no η) none — — N/A none linear verified
MATCH (ideal_flag=t, as shipped) reconstruct DCON’s ideal eigenfunction fluid ideal MHD none — — N/A none linear provisional

3.1 DCON ideal

The governing model.

  • Linear ideal MHD energy principle, the BFKK δW.
  • Integrated as Newcomb’s Euler–Lagrange ODE in a Fourier poloidal basis.
  • The ideal jump condition at rational surfaces.

References: Newcomb, Ann. Phys. 10, 232 (1960); Glasser, Phys. Plasmas 23, 072505 (2016).

Numerical and boundary-condition choices, not physics:

  • vac_flag: free or fixed boundary;
  • psiedge, sas_flag, qhigh: edge truncation;
  • delta_m*;
  • con_flag: integrate through singular layers instead of applying the ideal jump. It changes eigenvalues and turns off GPEC singfld. VAFT’s packaged dcon.in sets con_flag = t, so singfld is off in VAFT runs by default.

Local diagnostics alongside:

  • the Mercier criterion;
  • high-$n$ ballooning: Connor, Hastie & Taylor, Proc. R. Soc. A 365, 1 (1979);
  • the GGJ $D_I$, $D_R$, $H$ from resist_eval, as diagnostics only.

3.2 DCON kinetic

The flags, from source:

flag effect source
kin_flag builds PENTRC kinetic matrices and adds them to the EL coefficients; singular surfaces then move off the rationals and are found as zeros of det F (ksing_find) dcon_mod.f:108; dcon.F:214-245; sing.f:1486
passing_flag, trapped_flag choose the pitch-angle domain, i.e. the PENTRC method prefix f/t/p. Upstream defaults F/T, so a default kinetic run is trapped-only. VAFT’s template sets both to t fourfit.F:959-968
ion_flag, electron_flag add main-ion and/or electron δW_k; the contributions are summed fourfit.F:1066-1085
dcon_kin_threads OpenMP thread count; numerical only dcon.F:89-95

Kinetic physics (all from PENTRC).

  • Linear δf about a Maxwellian $f_0$ by default, decomposed into bounce/transit harmonics $\ell$. The $\ell=0$ term is the bounce average; $\ell\neq0$ terms are resonances where $n(\omega_E+\omega_D)\sim\ell\omega_b$, so the operator is not restricted to $\omega\ll\omega_b$.
  • The drive term contains $\omega_E+\omega_{n}+\omega_{T}(x-3/2)$.
  • The denominator is $i(\ell\omega_b\sqrt{x}+n(\omega_E+\omega_D x))-\nu$ (pentrc/energy.f90:374). The mode frequency does not appear: the response is at zero lab-frame frequency.
  • Resonances retained: bounce, transit, precession and $E\times B$.
  • No gyro-average appears anywhere in pentrc/, so FLR is zero. Zero orbit width is inferred from the flux-surface bounce averaging, not stated in the source.

The species model. One thermal ion, $Z$ and $m$ from pentrc.in. The collision frequencies and $\ln\Lambda$ are computed internally from $n$ and $T$, and $Z_{\rm eff}$ from $n_i/n_e$ with one impurity.

Configuration split. DCON-kinetic physics is partly configured outside dcon.in: nl, nutype, f0type, zi, mi and the kinetic file come from pentrc.in. The kinetic-file rotation column is $\omega_E$, not $\omega_\phi$ (pentrc/inputs.f90:162-167).

References (upstream-cited): Park, Phys. Plasmas 18, 110702 (2011), the kinetic energy principle; Logan, Park, Kim, Wang & Berkery, Phys. Plasmas 20, 122507 (2013); Park & Logan, Phys. Plasmas 24, 032505 (2017).

3.3 GPEC kinetic

Not a gpec.in switch. GPEC reads kin_flag and con_flag back from DCON’s euler.bin (gpec/idcon.f:62), so its kinetic content is entirely inherited from DCON.

Thresholds (singthresh_*). They use kinetic profiles through initialize_pentrc(op_kin=T), but no kinetic equation.

3.4 RDCON, STRIDE and RMATCH

No kinetic equation in either. Neither rdcon/ nor rmatch/ reads a kinetic file.

What VAFT’s inputs do. VAFT supplies $T_e$, $n_e$, $Z_{\rm eff}$ and $\ln\Lambda$ (RDCONOptions). These fill only RMATCH’s per-surface eta (NRL Spitzer) and massden, through vaft/code/gpec/_solvers.py:385-457.

Classification. This is kinetic-profile-informed resistive parameters. It is not kinetic_equation = drift_kinetic.

References: Glasser, Wang & Park, Phys. Plasmas 23, 112506 (2016); Glasser & Kolemen, Phys. Plasmas 25, 082502 (2018).

3.5 PENTRC

Classification:

  • linear drift kinetics in a bounce/transit-harmonic decomposition;
  • the general-aspect-ratio methods are fgar, tgar and pgar (full = trapped + passing);
  • reduced variants: rlar and clar (large aspect ratio), and fcgl, a CGL fluid limit;
  • one species per run;
  • torque from the anti-Hermitian part.

Use with GPEC. It is a kinetic closure evaluated on a fluid displacement, not a self-consistent model. Inside DCON-kinetic, the same operator is self-consistent.

Factorization. PENTRC is best described by attributes: drift kinetic, bounce-harmonic, linear δf, closure on a given ξ. A single “neoclassical” label does not cover it. The older PENT code was not audited; VAFT drives PENTRC only.

References: Park, Boozer & Menard, Phys. Rev. Lett. 102, 065002 (2009); Logan et al. (2013).

4. GACODE

Sources. Upstream ~/git/gacode; VAFT vaft/code/gacode/.

mode operation bulk kinetic equation population distribution FLR collisions domain regime confidence
NEO as VAFT runs it neoclassical fluxes, bootstrap $j_\parallel$, poloidal flow kinetic (all species) drift kinetic, first order: steady $f_1$ driven by $\nabla F_M$ and $E_r$ all species (≤6, VAFT’s guard); electrons kinetic δf none full linearized Fokker–Planck (COLLISION_MODEL=4) local; several radii are independent local solves steady state verified
NEO analytic companions (HS, NCLASS, Sauter) closed-form neoclassical fluxes reduced none — N/A N/A model-specific local steady verified (existence)
CGYRO linear ES/EM (VAFT default ES) microstability: γ, ω, eigenfunction kinetic gyrokinetic all species, gyrokinetic electrons δf full gyro-average Sugama (4) by default local flux tube linear initial value verified
CGYRO nonlinear turbulent fluxes kinetic gyrokinetic, nonlinear as above δf full as above local nonlinear verified
TGLF (single $k_y$ / QL with SAT 0–3) linear eigenmodes; quasilinear fluxes reduced none solved: a gyro-Landau-fluid moment system derived from gyrokinetics trapped and passing species N/A approximate (gyro-averaged moments) reduced model local linear / quasilinear verified (reduction)
TGLF-NN quasilinear fluxes reduced (learned surrogate) none; inherits its parent TGLF variant as parent N/A inherited inherited local quasilinear provisional

NEO.

  • Neoclassical drift kinetics here means solving for the steady first-order distribution of all species.
  • That is a different operation from DCON-kinetic’s orbit-averaged response inside δW, though both are drift kinetic.
  • References: Belli & Candy, Plasma Phys. Control. Fusion 50, 095010 (2008); 54, 015015 (2012).

CGYRO.

  • References: Candy, Belli & Bravenec, J. Comput. Phys. 324, 73 (2016). Collisions: Sugama, Watanabe & Nunami, Phys. Plasmas 16, 112503 (2009).
  • Its existing record, vaft.code.gacode.cgyro.formalism(), maps onto the axes in §1 as below.
CGYRO field values today broad axis (#1723) gyrokinetic-specific (#1353) implementation detail
distribution_formulation delta_f yes — —
spatial_domain local yes the global-spectral variant —
numerical_representation continuum no continuum vs PIC matters for GK comparisons yes
field_model es, em-aperp, em-aperp-bpar coarse: ES vs EM the $A_\parallel$ / $\delta B_\parallel$ split the integer N_FIELD
regime linear, nonlinear yes — —
topology_domain closed_flux_surface yes — —
geometry_model miller no Miller / MXH / s-α partly
species_model kinetic_electrons as kinetic population adiabatic vs gyrokinetic electrons —

Not in the record, though they are physics: kinetic_equation = gyrokinetic (implicit), the collision model, and the fact that VAFT pins $\gamma_E=\gamma_p=M=0$ (no rotation or shear).

TGLF.

  • References: Staebler, Kinsey & Waltz, Phys. Plasmas 14, 055909 (2007), with Hammett & Perkins, Phys. Rev. Lett. 64, 3019 (1990) for the Landau-fluid closure.
  • SAT1: Staebler, Candy, Howard & Holland, Phys. Plasmas 23, 062518 (2016). SAT2: Staebler et al., Nucl. Fusion 61, 116007 (2021). SAT3: Dudding et al., Nucl. Fusion 62, 096005 (2022).

TGLF-NN.

  • Its physical meaning is that of the TGLF variant it was trained on.
  • Its computational realization is a learned surrogate, which is a separate fact.
  • In VAFT the variant is known only from the model name, and a SAT mismatch is reported but not refused (tglf/surrogate/inference.py:149-178).

5. Orbit and fast-ion codes

mode operation bulk equation population orbit collisions coupling confidence
ASCOT5 SIM_MODE=1 fast-ion orbits, distribution, losses particle (test) Fokker–Planck for the test species, by Monte Carlo minority / test species full orbit test-particle Coulomb on a Maxwellian background none (fixed fields and background) verified (upstream docs)
ASCOT5 SIM_MODE=2 (default) same particle (test) same same guiding centre (first-order transform) guiding-centre operator none verified
ASCOT5 SIM_MODE=3 same, wall loads particle (test) same same guiding centre, switching to full orbit near the wall as above none verified
NUBEAM (standard FLR) beam deposition, slowing down, heating, current drive, torque particle (test) inside a transport code Fokker–Planck for fast ions, by Monte Carlo beam ions, fusion products guiding centre + FLR position sampling drag, energy diffusion, pitch scattering; charge exchange sources and fast-ion pressure returned; no field feedback verified (code)
NUBEAM VEST case (nlbgflr=1) as above as above as above as above enhanced FLR (gyro-orbit deformed by $\nabla B$), meant for low-field STs as above as above verified
SIMPLE collisionless guiding-centre confinement / loss fraction particle (test) none: orbit integration alphas / test particles guiding centre, symplectic none none provisional; no VAFT adapter

ASCOT5. Option names come from a5py/ascot5io/options.py. SIM_MODE=4 (field-line tracing) is omitted: it evolves no particles. References: Hirvijoki et al., Comput. Phys. Commun. 185, 1310 (2014) for ASCOT4; Varje et al., arXiv:1908.02482 (2019) for ASCOT5.

NUBEAM. References: Goldston et al., J. Comput. Phys. 43, 61 (1981); Pankin et al., Comput. Phys. Commun. 159, 157 (2004).

SIMPLE. Albert, Kasilov & Kernbichler, J. Comput. Phys. 403, 109065 (2020).

VAFT coverage. ASCOT5 appears in VAFT only as a diagram catalogue entry. SIMPLE does not appear at all.

6. What “kinetic” means in VAFT names

The word carries seven distinct meanings (categories A–G below) across VAFT’s public surface. Each name below is classified so that documentation can say which one it means. No name is changed by this audit.

category meaning representative names say instead
A. measurement/data Thomson, CES/ion Doppler data, or slices that have them “kinetic diagnostics” (Profiles.md), kinetic_overview_profiles, n_kinetic / supports_kinetic_efit (vest_upstream.py), kineticEfit/ sample directory profile diagnostics; slices with measured $T_i$
B. profile container $n$, $T$, ω on a radial grid KineticProfiles, read_kin/write_kin, SyntheticKineticProfiles, build_kinetic_core_profiles, GPEC/PENTRC kinetic_file kinetic-profile set
C. kinetically constrained reconstruction EFIT with a pressure constraint from profiles vaft.code.efit.kinetic, run_kinetic_efit, stages kinetic_efit / electron_efit, lineage electron_kinetic, KINETIC_FAMILIES, equilibrium_family: kinetic kinetic-pressure-constrained EFIT (measured $T_i$, or assumed $T_i/T_e$)
D. profile-informed closure or coefficient profiles set a closure or coefficient of a fluid calculation chease_kinetic_iteration, closure="kinetic_pressure", RDCON’s $T_e$/$n_e$ → η kinetic-profile-pressure closure; profile-informed resistivity
E. hybrid fluid-kinetic model a kinetic response inside a fluid model kin_flag / “kinetic DCON”, NTV “kinetic response” kinetic-MHD (δW_k) DCON; drift-kinetic response
F. kinetic governing equation the code solves a kinetic equation NEO (“drift-kinetic solver”), gyrokinetics_local_from_cgyro, “kinetic electrons” (CGYRO) drift-kinetic neoclassical; gyrokinetic; gyrokinetic (non-adiabatic) electrons
G. derived from kinetic theory a reduced or analytic model fitted to kinetic results Sauter/Redl fits, TGLF, NTV formulas, Porcelli “kinetic effects” drift-kinetic-derived fit; quasilinear gyro-Landau-fluid

The names most likely to mislead:

  1. kinetic_efit versus run_kinetic_efit.
    • The function runs both the electron_efit stage (Thomson + assumed $T_i/T_e$) and the kinetic_efit stage (measured $T_i$).
    • The stage name means “measured $T_i$” only.
  2. The lineage electron_kinetic (vaft/validation/kinetic_state.py) is the electron_efit stage under a second name.
  3. “Kinetic state” names three unrelated things:
    • the lane-K Thomson-vs-reconstruction slice table;
    • a synthetic self-consistent equilibrium/profile state (Profiles.md);
    • the NEO-ready local plasma state.
  4. kinetic_pressure means five things:
    • measured thermal pressure in validation;
    • EFIT constraint points;
    • a CHEASE closure mode;
    • a synthetic-profile pressure constraint;
    • a plot alias.
  5. kin_flag versus the .kin file.
    • kin_flag=t switches DCON to kinetic-MHD.
    • A .kin file with kin_flag=f only feeds profiles to PENTRC or the threshold models.
  6. EFIT_KINETIC_FAMILIES (_summary.py) includes MSE and $j_\phi$, so there “kinetic” means “non-magnetic”.
  7. kinetic_energy*:
    • kinetic_energy_from_beta_p_B_pa_V_p is the thermal stored energy;
    • virial_kinetic_energy is bulk-flow energy.

Kinetic-profile input never implies a kinetic governing equation. The RDCON row of §3, the CHEASE iteration and the EFIT names all show the same pattern: a fluid model whose inputs or closures come from measured or assumed profiles.

7. Orderings and scales

Purpose of this section. It is a compact map from scales to the classifications above. The full reference for characteristic scales and orderings is Characteristic scales and orderings (#1724). The ordering parameters themselves are #1627. The ordering contracts each mode of §3–§5 and §12 consumes are vaft.validation.model_contracts.ADAPTER_MODES (#1823), drawn under the contract map in Asymptotic orderings.

Frequencies. For thermal ions they are typically ordered as

\[\Omega_{ci} \gg \omega_{t,i},\ \omega_{b,i} \gg \omega_{D,i} \quad;\quad \tau_A^{-1} \gtrsim \omega_{t,i} \sim c_s/qR \gg \tau_E^{-1} \gg \tau_R^{-1}.\]

Caveats:

  • The first chain is for ions. For electrons in a low-field device it can fail. In VEST ($T_e\approx100$ eV, $qR\approx1.2$ m, $B\approx0.1$ T), $\omega_{t,e}\approx5\times10^6$ against $\Omega_{ci}\approx10^7$ rad/s.
  • $\omega_E\ll\omega_{t,i}$ holds only for sub-sonic flow.
  • The collision frequency $\nu$ is not in either chain, because it can sit anywhere. Its ratio to the bounce frequency, $\nu_*$, sets the neoclassical regime, and its ratio to $\omega$ separates collisional fluid closure from kinetic treatment.
  • The second chain is the conventional tokamak hierarchy. VEST’s short pulse can compress it.

Lengths:

  • $\rho_s$ and $\rho_i$ against gradient lengths $L_n$, $L_T$ and the minor radius $a$;
  • $k_\perp\rho$;
  • the connection length $qR$;
  • the banana orbit width $\sim q\rho/\sqrt\epsilon$;
  • the resistive layer width;
  • the radial simulation domain.
model family what it removes ordering that justifies it
ideal MHD particle phase space; resistivity $\rho/L\ll1$, $\omega\ll\Omega_i$, $S\gg1$, scales $\gg d_i$
resistive MHD (layer) phase space; keeps η only in the layer as ideal MHD outside the layer
drift kinetics the gyro-phase $\omega/\Omega\ll1$, $\rho/L\ll1$, $k_\perp\rho\ll1$
gyrokinetics the gyro-phase, keeping $k_\perp\rho\sim1$ $\omega/\Omega\sim\rho_$, $k_\parallel/k_\perp\sim\rho_$, $\delta f/F\sim\rho_*$
bounce-harmonic drift kinetics (PENTRC, DCON-kinetic) gyro-phase; bounce phase as a harmonic sum $\omega/\Omega\ll1$, $\rho/L\ll1$; the $\ell=0$ term is the bounce average, and $\ell\neq0$ keeps the resonances at $n(\omega_E+\omega_D)\sim\ell\omega_b$
guiding-centre orbit following the gyro-phase for one particle $\rho/L_B\ll1$ (fails for fast ions at low field, hence NUBEAM’s FLR options)

Why the hierarchy is not a ladder.

  • Ideal MHD averages over phase space completely; drift kinetics keeps phase space but drops the gyro-phase.
  • Gyrokinetics keeps phase space at finite $k_\perp\rho$, but orders $\omega/\Omega$ and the fluctuation amplitude.
  • Resistive MHD closes a thin layer with a resistivity. Collisional electromagnetic gyrokinetics resolves such layers kinetically, under a different ordering. Neither model reduces to the other.
  • A guiding-centre orbit integrator follows a particle and evolves no distribution.

8. Unresolved

Each item says what evidence is missing.

DCON and GPEC:

  • Whether DCON-kinetic should be called “drift-kinetic MHD”. The operator is drift kinetic and bounce averaged at zero lab-frame frequency. The exact ordering statement of Park (2011) and Park & Logan (2017) has not been checked against it.
  • The Kruskal–Oberman correspondence. PENTRC implements a CGL limit (f0type="cgl"); no KO-labelled limit exists in the source.
  • How the fluid compressional term and δW_k are partitioned (double counting). No adiabatic-γ term was found in DCON’s matrix construction.
  • Finite orbit width in PENTRC: inferred absent, not stated.
  • The “harmonic” collision model: an energy- and ℓ-dependent Krook model; its derivation reference was not found.
  • SLAYER’s physics: only “linear drift MHD” in its README. Callen’s threshold rests on an internal report (UW-CPTC 16-4, 2016).

GACODE:

  • The CGYRO collision-operator class, and whether NEO’s and CGYRO’s operators belong to one generic category. NEO’s “4” and CGYRO’s “4” are different operators.
  • The FLR content of TGLF’s gyro-Landau-fluid moments.
  • The training provenance of the TGLF-NN models VAFT resolves.

Taxonomy design:

  • NUBEAM’s guiding centre + FLR sampling (and nlbgflr) does not fit a guiding-centre / full-orbit binary.
  • Whether full orbit belongs under the kinetic equation or the orbit representation. This audit puts it under orbit representation (§1); Phase B must confirm.
  • Pressure versus current coupling. MEGA’s coupling scheme, and MARS-K’s FLR and collision content, are unconfirmed from source.
  • How kinetic reduced MHD (KRMHD) terminology should be represented.

External codes: GTC-X has no identified primary reference.

9. Stress test against external codes

These rows check that the axes are not overfitted to VAFT’s backends. All are provisional: from literature, not source.

code bulk fluid model kinetic equation population coupling domain reference
MARS-F fluid linear resistive MHD + flow, wall none — — whole volume + vacuum Liu et al., Phys. Plasmas 7, 3681 (2000)
MARS-K hybrid linear MHD bounce/precession-resonant drift kinetics, perturbative or self-consistent thermal + energetic pressure ($p_\parallel$, $p_\perp$) whole volume Liu, Chu, Gimblett & Hastie, Phys. Plasmas 15, 112503 (2008)
GENE (local / global) kinetic — gyrokinetic all — flux tube / radially global Jenko et al., Phys. Plasmas 7, 1904 (2000); Görler et al., J. Comput. Phys. 230, 7053 (2011)
GENE-X kinetic — gyrokinetic, full-f, EM, across the separatrix all — whole volume incl. SOL Michels et al., Comput. Phys. Commun. 264, 107986 (2021)
GTC kinetic (PIC) — gyrokinetic ions and energetic particles; fluid-kinetic hybrid electrons in EM runs all — global Lin et al., Science 281, 1835 (1998) (electrostatic); Lin & Chen, Phys. Plasmas 8, 1447 (2001) (hybrid electrons)
ORB5 kinetic (PIC) — gyrokinetic, δf with control variates all — global Jolliet et al., Comput. Phys. Commun. 177, 409 (2007); Lanti et al., Comput. Phys. Commun. 251, 107072 (2020)
M3D-K hybrid nonlinear resistive MHD drift-/gyro-kinetic energetic particles (PIC) energetic particles pressure global Fu et al., Phys. Plasmas 13, 052517 (2006)
MEGA hybrid nonlinear MHD guiding-centre energetic particles energetic particles current (unresolved) global Todo & Sato, Phys. Plasmas 5, 1321 (1998)
NIMROD kinetic hybrid extended (two-fluid) MHD drift-kinetic δf PIC energetic particles pressure global Kim, Sovinec & Parker, Comput. Phys. Commun. 164, 448 (2004)

Fit. Every row is expressible with the §1 axes, without a fidelity score and without inventing values: an absent axis is “N/A”.

Strain. The axes are strained in three places, all already listed in §8:

  • the coupling type of hybrid codes;
  • the orbit-representation question;
  • NUBEAM’s guiding centre + FLR sampling, which fits neither guiding centre nor full orbit.

Proposed, not implemented.

Required fields:

  • scientific_operation;
  • bulk_description, one of fluid / hybrid / kinetic / particle / reduced.

Conditional fields, each None when not applicable:

  • fluid_model: ideal_mhd / resistive_mhd / extended_mhd;
  • kinetic_equation: drift_kinetic / gyrokinetic / fokker_planck_test_particle;
  • kinetic_population;
  • kinetic_coupling: energy / pressure / current / closure (on a given displacement) / sources.

Independent axes, carried over from CGYRO’s record where they exist:

  • distribution_formulation;
  • orbit_representation: full_orbit / guiding_centre / bounce_averaged;
  • spatial_domain;
  • topology_domain;
  • regime;
  • field_model, coarse: ES/EM.

Not in the common record:

  • input provenance: kinetic profiles measured, fitted or assumed;
  • collision operators, saturation rules, geometry models, the integer encodings;
  • confidence.

Input provenance stays with the inputs (§6). The rest stays solver-specific. Confidence describes our knowledge, not the model, so it stays separate.

Distinguish unknown from not applicable. None means not applicable; an explicit "unknown" marks a legacy mode whose physics is not documented.

Backend gaps this audit found, for Phase C:

  • GPEC (#1734), resolved. Every GPEC-suite run now records its formalism from the prepared dcon.in / pentrc.in / gpec.in (see “GPEC suite” in §11), so a kinetic run is distinguishable from an ideal one.
  • GACODE (#1735), resolved.
    • CGYRO reads AE_FLAG, EQUILIBRIUM_MODEL, GLOBAL_FLAG, the collision model and the rotation inputs from the written input.
    • NEO records its geometry the way NEO reads it, so equilibrium_model=0 with profile_model=1 is recorded as s-α (see “GACODE suite” in §11).

11. The implemented record (#1727)

Phase B encodes the vocabulary of §10 as vaft.code.formalism.PlasmaFormalism. It is an immutable record with controlled values and is not a model class:

from vaft.code.gacode import cgyro
cgyro.plasma_formalism(config).as_dict()   # versioned, JSON-ready

What the record enforces:

  • None means not applicable and "unknown" means undocumented. The two required fields can be neither.
  • Only generically impossible combinations are refused:
    • fluid: a kinetic equation, or no fluid model;
    • kinetic: a fluid model, no kinetic equation, or the test-species fokker_planck equation;
    • hybrid: missing a fluid model, a kinetic equation or a coupling;
    • particle: a fluid model, an equation other than fokker_planck, or no orbit representation;
    • reduced: a kinetic equation or a fluid model, since its parent theory goes in derived_from;
    • any bulk description:
      • derived_from outside a reduced model;
      • a coupling outside hybrid and particle formulations;
      • a drift-kinetic or gyrokinetic equation with full orbits (both remove the gyro-phase);
      • a distribution formulation without a kinetic equation;
      • an orbit representation or a population where neither has meaning.
  • There is no field for “kinetic profiles were used”: that is a property of the inputs.
  • Solver-specific physics goes in extensions. These are JSON values only, copied and frozen on construction, so the record pickles, deep-copies and round-trips through to_json() unchanged.
  • Mixed modes. A mode that switches representation mid-run records its dominant representation, with the switch in extensions. Examples: ASCOT5 SIM_MODE=3, guiding centre then full orbit near the wall; NUBEAM’s guiding centre plus FLR sampling.

Where the implemented names differ from the §10 proposal:

  • fokker_planck (proposed as fokker_planck_test_particle) and guiding_center (proposed as guiding_centre).
  • New values: gyrocenter (the gyrokinetic orbit representation); mhd_displacement and prescribed field models; time_dependent; and the equilibrium operation.
  • reduced_mhd is not a fluid model: it is an ordering on one (§2.1).
  • numerical_representation (continuum vs PIC) is deliberately not a common axis. It changes no physics, so it stays in extensions.
  • SCHEMA_VERSION changes with any field or vocabulary change, and from_dict reads only its own version.

IMAS. The record is not mapped to an IMAS field. No standard location for it has been identified (#1727 §12), so VAFT run provenance stays authoritative. CGYRO runs store the record as provenance["plasma_formalism"], beside the #1353 provenance["formalism"] that the gyrokinetics_local mapping already writes.

theory concept (§2) field example backend mode
ideal / resistive MHD bulk_description="fluid", fluid_model DCON ideal; RDCON + RMATCH
MHD + drift-kinetic response "hybrid", kinetic_equation="drift_kinetic", kinetic_coupling="energy", orbit_representation="bounce_averaged" DCON kin_flag=t
kinetic closure on a given displacement "hybrid", kinetic_coupling="closure" PENTRC on a GPEC ξ
standalone drift kinetics "kinetic", "drift_kinetic" NEO
local δf gyrokinetics "kinetic", "gyrokinetic", spatial_domain="local", distribution_formulation="delta_f" CGYRO
gyrokinetic-derived reduced model "reduced", derived_from="gyrokinetic", regime="quasilinear" TGLF, TGLF-NN
test particles "particle", kinetic_equation="fokker_planck" or None, orbit_representation ASCOT5, NUBEAM; SIMPLE (no equation)

CGYRO is the reference integration.

  • cgyro.plasma_formalism(config) builds the shared record.
  • The existing #1353 record, cgyro.formalism(), is now read from it, with unchanged keys and values. The two cannot disagree.
  • CGYRO’s own detail stays in extensions: the em-aperp / em-aperp-bpar split, the continuum representation, Miller geometry and gyrokinetic electrons.

Deferred to Phase C.

  • GPEC suite (#1734): done – see below.
  • GACODE (#1735): done – see below.
  • NUBEAM and ASCOT5: no Phase C issue yet.

GACODE suite (#1735). Every NEO, TGLF and CGYRO run, and every TGLF-NN prediction, stores its record as provenance["plasma_formalism"]. The record is derived from the KEY=VALUE input the run was written with (vaft.code.gacode._formalism), with upstream defaults for absent keys. A shared input format does not imply shared governing physics:

GACODE suite
|
+-- NEO      kinetic / drift_kinetic, neoclassical_transport, steady_state
|            (SIM_MODEL 0/3/5 analytic theory, 4 neural network: reduced, derived_from drift_kinetic)
+-- TGLF     reduced, derived_from gyrokinetic: gyro-Landau-fluid quasilinear transport
|            (microstability / linear with USE_TRANSPORT_MODEL=F)
+-- TGLF-NN  the TGLF variant it was trained on, realized as a learned surrogate (extensions.realization)
+-- CGYRO    kinetic / gyrokinetic, local delta-f continuum (microstability or turbulent_transport)
  • NEO.
    • AE_FLAG=1 removes the electrons from the kinetic population.
    • The analytic models carry no kinetic population, because they solve for no distribution.
    • EQUILIBRIUM_MODEL (s-α / large aspect ratio / Miller) applies only with PROFILE_MODEL=1. With PROFILE_MODEL=2, VAFT’s default, the shape is input_gacode_shape.
    • The collision, rotation, Spitzer and 3-D switches stay in extensions.
  • TGLF.
    • The saturation rule is recorded with the linear controls TGLF’s start-up presets impose with it (XNU_MODEL, WDIA_TRAPPED, UNITS, NMODES), as the effective values, together with the field switches, the geometry and the electron model.
    • vaft.code.mitim.compare.effective_tglf_controls, used to compare MITIM’s inputs with VAFT’s, keeps its own implementation. A test pins that the two agree on every canonical input.
  • TGLF-NN.
    • The physical fields are those of the TGLF variant, read from the model identity (SAT rule, field model), never from the request; unknown where the model does not say.
    • The SAT rule implies XNU_MODEL and WDIA_TRAPPED. The variant’s UNITS and NMODES are recorded as unknown.
    • The realization is extensions.realization="learned_surrogate", surrogate_of="tglf". No kinetic equation is “neural network”.
  • CGYRO.
    • plasma_formalism(config, parameters=...) reads the field model (N_FIELD), the regime (NONLINEAR_FLAG), the electron model, the geometry (EQUILIBRIUM_MODEL 1 s-α, 2 MXH, recorded as VAFT’s historical miller), GLOBAL_FLAG (1 gives spatial_domain="unknown", never a bare global), the collision model and the rotation. The rotation is "none" when GAMMA_E, GAMMA_P and MACH are all zero, and unknown with PROFILE_MODEL=2, which takes them from input.gacode.
    • The #1353 formalism() is still derived from this record.
  • Not covered. The classical (Braginskii) result in vaft.process.transport_state has no record yet: the vocabulary has no operation for classical collisional transport, and adding one is a SCHEMA_VERSION change for #1727, not part of this phase.

GPEC suite (#1734). vaft.code.gpec resolves a record for every DCON, RDCON, STRIDE, ideal-GPEC and PENTRC run from the namelists the cell was prepared with (upstream defaults where a key is absent), stores it on GPECModuleRun.plasma_formalism (the versioned as_dict(), so run manifests carry it) and inside each mhd_linear fragment as <plasma_formalism>, read back by extract_dcon_stability / extract_rdcon_stability. The physics map – a classification, not the software dependency graph:

GPEC software suite
|
+-- DCON      kin_flag=f  ideal_stability       fluid  / ideal_mhd                       static
|             kin_flag=t  ideal_stability       hybrid / drift_kinetic, coupling energy, bounce_averaged, delta_f
|                                               populations from ion_flag / electron_flag (never "all")
+-- RDCON                 resistive_stability   fluid  / resistive_mhd when RMATCH solved the inner layer
|                                               (match_flag writes delta.out), else ideal_mhd (outer region);
|                                               an RPEC run (globalsol.bin) is perturbed_equilibrium; Te/ne ->
|                                               Spitzer eta stays an extension, never a kinetic equation
+-- STRIDE                resistive_stability   fluid  / ideal_mhd (outer-region Delta-prime, no eta)
+-- GPEC                  perturbed_equilibrium fluid or hybrid, inherited from the DCON run it reads
|                                               (singthresh_* layer models stay auxiliary, in extensions)
`-- PENTRC                toroidal_torque       hybrid / drift_kinetic, coupling closure on the GPEC xi,
                                                one species per run; methods, nutype, f0type in extensions

A run whose governing namelist is absent, or whose physics flag cannot be read, gets no record rather than the upstream defaults. MATCH and RMATCH get no record of their own: they are numerical stages of the DCON and RDCON calculations they complete, recorded in those runs’ extensions. No named kinetic limit (Kruskal-Oberman, …) is recorded from kin_flag alone.

12. Equilibrium codes

Added with #1823, so that every adapter whose results feed the ordering contracts has a classified mode.

mode operation bulk fluid model topology regime ordering contract confidence
EFIT reconstruction (magnetic, kinetic) Grad–Shafranov fit to measurements fluid ideal MHD (static force balance) across the separatrix static equilibrium sequence verified (equation class)
CHEASE fixed boundary Grad–Shafranov solve for given $p’$, $FF’$ or $j$ fluid ideal MHD (static force balance) closed flux surfaces static equilibrium sequence verified (equation class)
TokaMaker, TES free boundary Grad–Shafranov with coils and conductors fluid ideal MHD (static force balance) across the separatrix static equilibrium sequence verified (equation class)
NICE reconstruction Grad–Shafranov fit to measurements fluid ideal MHD (static force balance) across the separatrix static equilibrium sequence provisional (experimental adapter)

Notes:

  • An equilibrium solves $\mathbf j\times\mathbf B = \nabla p$ with a scalar pressure and no flow. Its ordering is that force balance is re-established faster than the state moves, $\tau_{evol}/\tau_A \gg 1$, with subsonic and sub-Alfvénic flow. It is not the ideal-MHD stability contract: an equilibrium makes no claim about $S$, $k\,d_i$ or $k_\perp\rho_i$, which concern perturbations.
  • A kinetic-profile constraint (§6 category C) does not change this classification.
  • A time series of reconstructions is a sequence of equilibria, not a time-dependent MHD calculation.

results matching ""

    No results matching ""