#[repr(u8)]pub enum StepPhase {
Show 52 variants
Idle = 0,
BuildDomain = 1,
BuildIC = 2,
BuildICSampling = 7,
BuildICCompression = 8,
BuildPoisson = 3,
BuildIntegrator = 4,
BuildExitConditions = 5,
BuildAssembly = 6,
DriftHalf1 = 10,
ComputeDensity = 11,
PoissonSolve = 12,
ComputeAcceleration = 13,
Kick = 14,
DriftHalf2 = 15,
LoMaC = 16,
PostDensity = 17,
Diagnostics = 18,
StepComplete = 19,
YoshidaDrift1 = 20,
YoshidaKick1 = 21,
YoshidaDrift2 = 22,
YoshidaKick2 = 23,
YoshidaDrift3 = 24,
YoshidaKick3 = 25,
YoshidaDrift4 = 26,
RkeiStage1 = 30,
RkeiStage2 = 31,
RkeiStage3 = 32,
UnsplitStage1 = 40,
UnsplitStage2 = 41,
UnsplitStage3 = 42,
UnsplitStage4 = 43,
AdaptiveLie = 44,
AdaptiveLieKick = 45,
AdaptiveError = 46,
Bm4Sub0 = 50,
Bm4Sub1 = 51,
Bm4Sub2 = 52,
Bm4Sub3 = 53,
Bm4Sub4 = 54,
Bm4Sub5 = 55,
Bm4Sub6 = 56,
Bm4Sub7 = 57,
Bm4Sub8 = 58,
Bm4Sub9 = 59,
Rkn6Phase1 = 60,
Rkn6Phase2 = 61,
Rkn6Phase3 = 62,
BugKStep = 80,
BugLStep = 81,
BugSStep = 82,
}Expand description
Enumeration of all possible progress phases.
Build phases (1–8) are set by phasma before caustic starts stepping.
Step phases (10+) are set by integrators and Simulation::step().
Variants§
Idle = 0
No computation in progress; the simulation is idle.
BuildDomain = 1
Constructing the computational domain (spatial/velocity extents, resolution, boundaries).
BuildIC = 2
Generating initial conditions (sampling the distribution function).
BuildICSampling = 7
Sampling phase-space points for the initial distribution function.
BuildICCompression = 8
Compressing the initial conditions into a low-rank representation (HT/TT).
BuildPoisson = 3
Initializing the Poisson solver (FFT plans, Green’s function, tree structure).
BuildIntegrator = 4
Constructing the time integrator (splitting scheme, RK tableaux).
BuildExitConditions = 5
Registering exit/termination conditions (energy drift, wall clock, etc.).
BuildAssembly = 6
Final assembly of the simulation object from all constructed components.
DriftHalf1 = 10
First half-step spatial drift in Strang splitting (advance x by v*dt/2).
ComputeDensity = 11
Computing the density field rho(x) by integrating f over velocity space.
PoissonSolve = 12
Solving the Poisson equation nabla^2 Phi = 4piG*rho for the gravitational potential.
ComputeAcceleration = 13
Computing the acceleration field g = -nabla(Phi) from the potential.
Kick = 14
Full velocity kick in Strang splitting (advance v by g*dt).
DriftHalf2 = 15
Second half-step spatial drift in Strang splitting (advance x by v*dt/2).
LoMaC = 16
Applying the LoMaC conservative projection to restore mass/momentum/energy conservation.
PostDensity = 17
Recomputing the density field after the time step for diagnostics.
Diagnostics = 18
Computing global diagnostics (energy, momentum, Casimir invariants, etc.).
StepComplete = 19
The time step has completed; all sub-phases finished.
YoshidaDrift1 = 20
Yoshida 4th-order splitting: first drift sub-step (c1*dt).
YoshidaKick1 = 21
Yoshida 4th-order splitting: first kick sub-step (d1*dt).
YoshidaDrift2 = 22
Yoshida 4th-order splitting: second drift sub-step (c2*dt).
YoshidaKick2 = 23
Yoshida 4th-order splitting: second kick sub-step (d2*dt).
YoshidaDrift3 = 24
Yoshida 4th-order splitting: third drift sub-step (c3*dt).
YoshidaKick3 = 25
Yoshida 4th-order splitting: third kick sub-step (d3*dt).
YoshidaDrift4 = 26
Yoshida 4th-order splitting: fourth (final) drift sub-step (c4*dt).
RkeiStage1 = 30
RKEI (SSP-RK3 exponential integrator): first stage evaluation.
RkeiStage2 = 31
RKEI (SSP-RK3 exponential integrator): second stage evaluation.
RkeiStage3 = 32
RKEI (SSP-RK3 exponential integrator): third stage evaluation and combination.
UnsplitStage1 = 40
Unsplit Runge-Kutta integrator: first stage (used by RK2, RK3, and RK4).
UnsplitStage2 = 41
Unsplit Runge-Kutta integrator: second stage (used by RK2, RK3, and RK4).
UnsplitStage3 = 42
Unsplit Runge-Kutta integrator: third stage (used by RK3 and RK4).
UnsplitStage4 = 43
Unsplit Runge-Kutta integrator: fourth stage (used by RK4 only).
AdaptiveLie = 44
Adaptive time-stepping: computing the Lie (first-order) estimate for error control.
AdaptiveLieKick = 45
Adaptive time-stepping: applying the velocity kick in the Lie estimate.
AdaptiveError = 46
Adaptive time-stepping: computing the error norm between splitting orders.
Bm4Sub0 = 50
Blanes-Moan 4th-order splitting: first drift sub-step (a1*dt).
Bm4Sub1 = 51
Blanes-Moan 4th-order splitting: first kick sub-step (b1*dt).
Bm4Sub2 = 52
Blanes-Moan 4th-order splitting: second drift sub-step (a2*dt).
Bm4Sub3 = 53
Blanes-Moan 4th-order splitting: second kick sub-step (b2*dt).
Bm4Sub4 = 54
Blanes-Moan 4th-order splitting: third drift sub-step (a3*dt).
Bm4Sub5 = 55
Blanes-Moan 4th-order splitting: third kick sub-step (b3*dt).
Bm4Sub6 = 56
Blanes-Moan 4th-order splitting: fourth drift sub-step (a4*dt).
Bm4Sub7 = 57
Blanes-Moan 4th-order splitting: fourth kick sub-step (b4*dt).
Bm4Sub8 = 58
Blanes-Moan 4th-order splitting: fifth drift sub-step (a5*dt).
Bm4Sub9 = 59
Blanes-Moan 4th-order splitting: fifth kick sub-step (b5*dt).
Rkn6Phase1 = 60
6th-order Runge-Kutta-Nystrom triple-jump composition: first Strang block.
Rkn6Phase2 = 61
6th-order Runge-Kutta-Nystrom triple-jump composition: second (scaled) Strang block.
Rkn6Phase3 = 62
6th-order Runge-Kutta-Nystrom triple-jump composition: third Strang block.
BugKStep = 80
BUG integrator: K-step (kinetic/drift sub-step).
BugLStep = 81
BUG integrator: L-step (Lie/interaction sub-step).
BugSStep = 82
BUG integrator: S-step (Strang-like combined sub-step).
Implementations§
Trait Implementations§
impl Copy for StepPhase
impl Eq for StepPhase
impl StructuralPartialEq for StepPhase
Auto Trait Implementations§
impl Freeze for StepPhase
impl RefUnwindSafe for StepPhase
impl Send for StepPhase
impl Sync for StepPhase
impl Unpin for StepPhase
impl UnsafeUnpin for StepPhase
impl UnwindSafe for StepPhase
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> DistributionExt for Twhere
T: ?Sized,
impl<T> DistributionExt for Twhere
T: ?Sized,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more