usecrate::geometry::ParticlesContacts;usecrate::math::Real;usecrate::object::{Boundary, Fluid};usecrate::TimestepManager;/// Trait implemented by non-pressure forces.
////// This includes all non-pressure forces internal to a same fluid, or acting
/// between a fluid and a boundary.
pubtraitNonPressureForce: Send + Sync {/// Compute and applies the non-pressure forces to the given fluid.
////// The force application should result in adding accelerations to the
/// `fluid.accelerations` field.
fnsolve(&mutself,
timestep:&TimestepManager,
kernel_radius: Real,
fluid_fluid_contacts:&ParticlesContacts,
fluid_boundaries_contacts:&ParticlesContacts,
fluid:&mut Fluid,
boundaries:&[Boundary],
densities:&[Real],
);/// Apply the given permutation to all relevant field of this non-pressure force.
////// This is currently not used so it can be left empty.
fnapply_permutation(&mutself, _permutation:&[usize]){}}