Struct salva3d::solver::Becker2009Elasticity
source · pub struct Becker2009Elasticity<KernelDensity: Kernel = CubicSplineKernel, KernelGradient: Kernel = CubicSplineKernel> { /* private fields */ }
Expand description
Elasticity based on the method from Becker et al. 2009.
Implementations§
source§impl<KernelDensity: Kernel, KernelGradient: Kernel> Becker2009Elasticity<KernelDensity, KernelGradient>
impl<KernelDensity: Kernel, KernelGradient: Kernel> Becker2009Elasticity<KernelDensity, KernelGradient>
sourcepub fn new(
young_modulus: Real,
poisson_ratio: Real,
nonlinear_strain: bool
) -> Self
pub fn new( young_modulus: Real, poisson_ratio: Real, nonlinear_strain: bool ) -> Self
Initialize elasticity from its young modulus and poisson ration.
If nonlinear_strain
is true
, the nonlinear version of the strain tensor is used.
This allows a more realistic simulation of large deformation. However this is slightly more
computationally intensive.
Trait Implementations§
source§impl<KernelDensity: Kernel, KernelGradient: Kernel> NonPressureForce for Becker2009Elasticity<KernelDensity, KernelGradient>
impl<KernelDensity: Kernel, KernelGradient: Kernel> NonPressureForce for Becker2009Elasticity<KernelDensity, KernelGradient>
source§fn solve(
&mut self,
_timestep: &TimestepManager,
kernel_radius: Real,
_fluid_fluid_contacts: &ParticlesContacts,
_fluid_boundaries_contacts: &ParticlesContacts,
fluid: &mut Fluid,
_boundaries: &[Boundary],
_densities: &[Real]
)
fn solve( &mut self, _timestep: &TimestepManager, kernel_radius: Real, _fluid_fluid_contacts: &ParticlesContacts, _fluid_boundaries_contacts: &ParticlesContacts, fluid: &mut Fluid, _boundaries: &[Boundary], _densities: &[Real] )
Compute and applies the non-pressure forces to the given fluid. Read more
source§fn apply_permutation(&mut self, permutation: &[usize])
fn apply_permutation(&mut self, permutation: &[usize])
Apply the given permutation to all relevant field of this non-pressure force. Read more
Auto Trait Implementations§
impl<KernelDensity, KernelGradient> RefUnwindSafe for Becker2009Elasticity<KernelDensity, KernelGradient>where
KernelDensity: RefUnwindSafe,
KernelGradient: RefUnwindSafe,
impl<KernelDensity, KernelGradient> Send for Becker2009Elasticity<KernelDensity, KernelGradient>
impl<KernelDensity, KernelGradient> Sync for Becker2009Elasticity<KernelDensity, KernelGradient>
impl<KernelDensity, KernelGradient> Unpin for Becker2009Elasticity<KernelDensity, KernelGradient>
impl<KernelDensity, KernelGradient> UnwindSafe for Becker2009Elasticity<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.