Full orbit, SPECTRE and GPU objective¶
This page states the models that replace or supplement the guiding-centre system: full-orbit tracing, the per-volume treatment of SPECTRE equilibria, and the segmented loss objective of the CUDA backend. Usage: Running SIMPLE.
Full-orbit tracing¶
orbit_model = 7 (with orbit_coord = 1) integrates the Lorentz motion
in Cartesian position and velocity,
in the normalisation of Guiding-centre model (src/orbit_fo_boris.f90).
\(\mathbf B(\mathbf x)\) comes from a Boozer chartmap: the chartmap is
inverted to \(u = (\rho,\vartheta_B,\varphi_B)\) by Newton iteration and
\(\mathbf B = \nabla\times\mathbf A\) is assembled from the Boozer
potentials \(A_\vartheta(s)\), \(A_\varphi(s)\), so that
\(B^s = 0\) exactly; a pseudo-Cartesian chart
\((\rho\cos\vartheta,\rho\sin\vartheta,\varphi)\) keeps the inversion
regular at the axis. The step is the Boris drift–rotate–drift scheme with
\(\bar{\mathbf t} = \mathbf B\,h/(2\bar\rho_0)\):
with \(\mathbf B\) at \(\mathbf x^{n+1/2}\). It rotates the velocity
exactly for constant \(\mathbf B\) and preserves phase-space volume.
The step is the guiding-centre microstep, \(h = \Delta\tau/\sqrt2\), so
the gyro-angle per step is \(\Delta\tau\,B/\rho_0\): npoiper2 must
make \(2\pi R_0 B/(\texttt{npoiper2}\,\rho_0) \ll 1\). The particle
starts one gyroradius from the sampled guiding centre (init_fo in
src/simple.f90). A marker is lost when its reconstructed guiding centre reaches
\(\rho \ge 1\) and the particle is within 0.05 of the edge. Full-orbit
tracing does not support walls, collisions or classification.
SPECTRE equilibria¶
A multi-region relaxed MHD equilibrium has \(M_\text{vol}\) nested
volumes with a smooth field inside each and current sheets on the
interfaces, across which the tangential field jumps. SIMPLE labels position
by \(\rho_g \in [0, M_\text{vol}]\), volume \(k\) covering
\([k-1,k]\) (integ_coords = 6), and builds a Meiss canonical chart per
volume (Coordinates and field representation). Inside a volume the symplectic guiding-centre
integrators run unchanged.
At a sheet the guiding-centre ordering fails, because \(\mathbf b\)
changes over a distance smaller than the gyroradius. Multi-volume tracing
therefore requires integmode > 0 and crossing_level = 3: when the
guiding centre comes within spectre_fo_entry_larmor (default 1.5) radial
gyroradii \(\rho_r = \rho_L|\nabla\rho_g|\) of an interface or of the
outer boundary, SIMPLE switches to the full Lorentz orbit in the sharp
per-volume field (RK45 with located sheet crossings), and returns beyond
spectre_fo_entry_larmor + 1 radial gyroradii. The algorithm is in
DOC/spectre-interface-crossing.md; DOC/spectre-rejected-interface-models.md
derives why fixed-\(\mu\) guiding-centre maps across a sheet are invalid
(Design notes).
GPU loss objective¶
The CUDA backend (GPU tracing) traces guiding-centre orbits in
Boozer coordinates in segments of gpu_t_block and after each segment
evaluates
stopping when \(W > \texttt{gpu\_maxloss}\)
(src/simple_cuda_native_rk54.cu). This follows the objective of Landreman
et al. (2026).
References¶
M. Landreman, M. Czekanski, A. Giuliani, B. Jang, R. Conlin, Bayesian optimization of stellarator alpha-particle confinement using data-informed parameter spaces and dimensionality reduction, arXiv:2606.19523 (2026), https://arxiv.org/abs/2606.19523