pub struct TreePoisson {
pub opening_angle: f64,
pub domain: Domain,
pub softening: f64,
/* private fields */
}Expand description
Barnes-Hut tree code Poisson solver.
For each grid point the potential is computed via an O(N log N) tree walk with configurable opening angle θ. Smaller θ gives higher accuracy (θ → 0 recovers direct summation) at the cost of more work.
Fields§
§opening_angle: f64Opening angle criterion θ for the multipole approximation.
domain: DomainComputational domain.
softening: f64Plummer softening length (prevents 1/r singularity).
Implementations§
Trait Implementations§
Source§impl PoissonSolver for TreePoisson
impl PoissonSolver for TreePoisson
Source§fn set_progress(&mut self, p: Arc<StepProgress>)
fn set_progress(&mut self, p: Arc<StepProgress>)
Register a shared progress handle for intra-step reporting to the TUI.
Source§fn solve(&self, density: &DensityField, g: f64) -> PotentialField
fn solve(&self, density: &DensityField, g: f64) -> PotentialField
Solve for the gravitational potential Φ by building an octree and performing an O(N log N) tree walk at each grid point.
Source§fn compute_acceleration(&self, potential: &PotentialField) -> AccelerationField
fn compute_acceleration(&self, potential: &PotentialField) -> AccelerationField
Compute gravitational acceleration g = -∇Φ via second-order centered finite differences.
Auto Trait Implementations§
impl Freeze for TreePoisson
impl RefUnwindSafe for TreePoisson
impl Send for TreePoisson
impl Sync for TreePoisson
impl Unpin for TreePoisson
impl UnsafeUnpin for TreePoisson
impl UnwindSafe for TreePoisson
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