pub struct TreePoisson {
pub opening_angle: f64,
pub domain: Domain,
pub softening: f64,
}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 solve(&self, density: &DensityField, g: f64) -> PotentialField
fn solve(&self, density: &DensityField, g: f64) -> PotentialField
Solve ∇²Φ = 4πGρ and return the potential field.
Source§fn compute_acceleration(&self, potential: &PotentialField) -> AccelerationField
fn compute_acceleration(&self, potential: &PotentialField) -> AccelerationField
Compute the gravitational acceleration g = −∇Φ via spectral differentiation
or 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