pub struct BugIntegrator {
pub config: BugConfig,
pub g: f64,
/* private fields */
}Expand description
BUG (Basis Update & Galerkin) integrator for low-rank tensor formats.
When the representation is an HtTensor, this integrator evolves the
solution directly on the low-rank manifold via K/L/S-step updates.
For other representations, it falls back to standard Strang splitting.
Fields§
§config: BugConfigBUG algorithm parameters (tolerance, max rank, midpoint, conservative).
g: f64Gravitational constant G used for the Poisson solve.
Implementations§
Trait Implementations§
Source§impl TimeIntegrator for BugIntegrator
impl TimeIntegrator for BugIntegrator
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 distribution by one timestep dt.
If the representation is HtTensor, performs a BUG step (standard or midpoint
depending on config). Otherwise falls back to Strang splitting.
Source§fn max_dt(&self, repr: &dyn PhaseSpaceRepr, cfl_factor: f64) -> f64
fn max_dt(&self, repr: &dyn PhaseSpaceRepr, cfl_factor: f64) -> f64
Dynamical-time CFL: dt <= cfl_factor / sqrt(G * rho_max).
Source§fn last_step_timings(&self) -> Option<&StepTimings>
fn last_step_timings(&self) -> Option<&StepTimings>
Return 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 progress reporter for intra-step TUI updates.
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 BugIntegrator
impl RefUnwindSafe for BugIntegrator
impl Send for BugIntegrator
impl Sync for BugIntegrator
impl Unpin for BugIntegrator
impl UnsafeUnpin for BugIntegrator
impl UnwindSafe for BugIntegrator
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