pub struct VgfPoisson { /* private fields */ }Expand description
Vico–Greengard–Ferrando isolated Poisson solver.
Convolves the density with a truncated Green’s function whose Fourier
transform G_hat(k) = -(1 - cos(kR)) / (2π k²) is smooth, giving
spectral accuracy without the real-space singularity regularization
required by Hockney-Eastwood.
The kernel is computed analytically in Fourier space — no FFT of a real-space Green’s function is needed.
Implementations§
Trait Implementations§
Source§impl PoissonSolver for VgfPoisson
impl PoissonSolver for VgfPoisson
Source§fn set_progress(&mut self, p: Arc<StepProgress>)
fn set_progress(&mut self, p: Arc<StepProgress>)
Attach a shared progress handle for intra-step reporting.
Source§fn solve(&self, density: &DensityField, g: f64) -> PotentialField
fn solve(&self, density: &DensityField, g: f64) -> PotentialField
Solve the Poisson equation for the given density field.
Zero-pads rho into (2N)^3, convolves with the VGF kernel in Fourier space, and extracts the N^3 potential sub-grid.
Source§fn compute_acceleration(&self, potential: &PotentialField) -> AccelerationField
fn compute_acceleration(&self, potential: &PotentialField) -> AccelerationField
Compute the gravitational acceleration via second-order finite differences.
Auto Trait Implementations§
impl !Freeze for VgfPoisson
impl !RefUnwindSafe for VgfPoisson
impl Send for VgfPoisson
impl Sync for VgfPoisson
impl Unpin for VgfPoisson
impl UnsafeUnpin for VgfPoisson
impl !UnwindSafe for VgfPoisson
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