Skip to main content

StepPhase

Enum StepPhase 

Source
#[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§

Source§

impl StepPhase

Source

pub fn from_u8(v: u8) -> Self

Convert from raw u8, returning Idle for unknown values.

Source

pub fn label(self) -> &'static str

Human-readable label for display.

Source

pub fn is_build(self) -> bool

Whether this is a build phase (set by phasma before caustic starts stepping).

Trait Implementations§

Source§

impl Clone for StepPhase

Source§

fn clone(&self) -> StepPhase

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for StepPhase

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl PartialEq for StepPhase

Source§

fn eq(&self, other: &StepPhase) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Copy for StepPhase

Source§

impl Eq for StepPhase

Source§

impl StructuralPartialEq for StepPhase

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> ByRef<T> for T

Source§

fn by_ref(&self) -> &T

Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> DistributionExt for T
where T: ?Sized,

Source§

fn rand<T>(&self, rng: &mut (impl Rng + ?Sized)) -> T
where Self: Distribution<T>,

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts 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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts 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
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

impl<T> Boilerplate for T
where T: Copy + Send + Sync + Debug + PartialEq + 'static,

Source§

impl<T, U> Imply<T> for U
where T: ?Sized, U: ?Sized,