pub struct StrangSplitting {
pub g: f64,
/* private fields */
}Expand description
Second-order symplectic time integrator via Strang splitting.
Executes drift(dt/2) -> Poisson solve -> kick(dt) -> drift(dt/2) each step.
After the kick, applies hypercollision damping when the representation is SpectralV.
Fields§
§g: f64Gravitational constant G used when solving the Poisson equation.
Implementations§
Trait Implementations§
Source§impl TimeIntegrator for StrangSplitting
impl TimeIntegrator for StrangSplitting
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 Strang splitting.
Sequence: drift(dt/2) -> Poisson solve -> kick(dt) -> [hypercollision] -> drift(dt/2). Returns the end-of-step density, potential, and acceleration for reuse by diagnostics.
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 StrangSplitting
impl RefUnwindSafe for StrangSplitting
impl Send for StrangSplitting
impl Sync for StrangSplitting
impl Unpin for StrangSplitting
impl UnsafeUnpin for StrangSplitting
impl UnwindSafe for StrangSplitting
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