Struct salva3d::solver::IISPHSolver
source · pub struct IISPHSolver<KernelDensity: Kernel = CubicSplineKernel, KernelGradient: Kernel = CubicSplineKernel> {
pub min_pressure_iter: usize,
pub max_pressure_iter: usize,
pub max_density_error: Real,
/* private fields */
}
Expand description
A IISPH (Implicit Incompressible Smoothed Particle Hydrodynamics) pressure solver.
Fields§
§min_pressure_iter: usize
Minimum number of iterations that must be executed for pressure resolution.
max_pressure_iter: usize
Maximum number of iterations that must be executed for pressure resolution.
max_density_error: Real
Maximum acceptable density error (in percents).
The pressure solver will continue iterating until the density error drops bellow this threshold, or until the maximum number of pressure iterations is reached.
Implementations§
Trait Implementations§
source§impl<KernelDensity, KernelGradient> PressureSolver for IISPHSolver<KernelDensity, KernelGradient>
impl<KernelDensity, KernelGradient> PressureSolver for IISPHSolver<KernelDensity, KernelGradient>
source§fn init_with_fluids(&mut self, fluids: &[Fluid])
fn init_with_fluids(&mut self, fluids: &[Fluid])
Initialize this solver with the given fluids.
source§fn init_with_boundaries(&mut self, _boundaries: &[Boundary])
fn init_with_boundaries(&mut self, _boundaries: &[Boundary])
Initialize this solver with the given boundaries.
source§fn predict_advection(
&mut self,
timestep: &TimestepManager,
kernel_radius: Real,
contact_manager: &ContactManager,
gravity: &Vector<Real>,
fluids: &mut [Fluid],
boundaries: &[Boundary]
)
fn predict_advection( &mut self, timestep: &TimestepManager, kernel_radius: Real, contact_manager: &ContactManager, gravity: &Vector<Real>, fluids: &mut [Fluid], boundaries: &[Boundary] )
Predicts advection with the given gravity.
source§fn evaluate_kernels(
&mut self,
kernel_radius: Real,
contact_manager: &mut ContactManager,
fluids: &[Fluid],
boundaries: &[Boundary]
)
fn evaluate_kernels( &mut self, kernel_radius: Real, contact_manager: &mut ContactManager, fluids: &[Fluid], boundaries: &[Boundary] )
Evaluate the SPH kernels for all the contacts in
contact_manager
.source§fn compute_densities(
&mut self,
contact_manager: &ContactManager,
fluids: &[Fluid],
boundaries: &mut [Boundary]
)
fn compute_densities( &mut self, contact_manager: &ContactManager, fluids: &[Fluid], boundaries: &mut [Boundary] )
Compute the densities of all the boundary and fluid particles.
Auto Trait Implementations§
impl<KernelDensity, KernelGradient> RefUnwindSafe for IISPHSolver<KernelDensity, KernelGradient>where
KernelDensity: RefUnwindSafe,
KernelGradient: RefUnwindSafe,
impl<KernelDensity, KernelGradient> Send for IISPHSolver<KernelDensity, KernelGradient>
impl<KernelDensity, KernelGradient> Sync for IISPHSolver<KernelDensity, KernelGradient>
impl<KernelDensity, KernelGradient> Unpin for IISPHSolver<KernelDensity, KernelGradient>
impl<KernelDensity, KernelGradient> UnwindSafe for IISPHSolver<KernelDensity, KernelGradient>where
KernelDensity: UnwindSafe,
KernelGradient: UnwindSafe,
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
§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
The inverse inclusion map: attempts to construct
self
from the equivalent element of its
superset. Read more§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
Checks if
self
is actually part of its subset T
(and can be converted to it).§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
Use with care! Same as
self.to_subset
but without any property checks. Always succeeds.§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
The inclusion map: converts
self
to the equivalent element of its superset.