pub struct YoshidaSplitting {
pub g: f64,
/* private fields */
}Expand description
Fourth-order symplectic time integrator via Yoshida splitting.
Composes 7 sub-steps (4 drifts, 3 kicks with Poisson solves) using the Yoshida (1990) triple-jump coefficients to achieve O(dt^4) accuracy while preserving symplecticity.
Fields§
§g: f64Gravitational constant G used when solving the Poisson equation.
Implementations§
Trait Implementations§
Source§impl TimeIntegrator for YoshidaSplitting
impl TimeIntegrator for YoshidaSplitting
Source§fn advance(
&mut self,
repr: &mut dyn PhaseSpaceRepr,
solver: &dyn PoissonSolver,
advector: &dyn Advector,
dt: f64,
) -> Result<StepProducts, CausticError>
fn advance( &mut self, repr: &mut dyn PhaseSpaceRepr, solver: &dyn PoissonSolver, advector: &dyn Advector, dt: f64, ) -> Result<StepProducts, CausticError>
Advance the phase-space representation by one time step dt using Yoshida splitting.
Executes the 7-sub-step sequence (4 drifts + 3 kick-with-Poisson-solve) and applies SpectralV hypercollision damping after each kick. Returns end-of-step products.
Source§fn max_dt(&self, repr: &dyn PhaseSpaceRepr, cfl_factor: f64) -> f64
fn max_dt(&self, repr: &dyn PhaseSpaceRepr, cfl_factor: f64) -> f64
Estimate the maximum stable time step from the dynamical time t_dyn = 1/sqrt(G*rho_max).
Source§fn last_step_timings(&self) -> Option<&StepTimings>
fn last_step_timings(&self) -> Option<&StepTimings>
Return the timing breakdown from the most recent step.
Source§fn set_progress(&mut self, progress: Arc<StepProgress>)
fn set_progress(&mut self, progress: Arc<StepProgress>)
Attach a shared progress reporter for intra-step phase tracking.
Source§fn suggested_dt(&self) -> Option<f64>
fn suggested_dt(&self) -> Option<f64>
Return a suggested Δt from the adaptive controller (if any).
Default returns
None; adaptive integrators override this.Auto Trait Implementations§
impl Freeze for YoshidaSplitting
impl RefUnwindSafe for YoshidaSplitting
impl Send for YoshidaSplitting
impl Sync for YoshidaSplitting
impl Unpin for YoshidaSplitting
impl UnsafeUnpin for YoshidaSplitting
impl UnwindSafe for YoshidaSplitting
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
Mutably borrows from an owned value. Read more
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>
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 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>
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