16 #ifndef SURGSIM_PARTICLES_SPHREPRESENTATION_H 17 #define SURGSIM_PARTICLES_SPHREPRESENTATION_H 23 #include "SurgSim/Particles/Representation.h" 29 namespace DataStructures
31 template <
class T,
size_t N>
38 SURGSIM_STATIC_REGISTRATION(SphRepresentation);
65 void setMassPerParticle(
double particleMass);
69 double getMassPerParticle()
const;
74 void setDensity(
double density);
78 double getDensity()
const;
83 void setGasStiffness(
double stiffness);
87 double getGasStiffness()
const;
92 void setSurfaceTension(
double surfaceTension);
96 double getSurfaceTension()
const;
109 void setViscosity(
double viscosity);
113 double getViscosity()
const;
118 void setKernelSupport(
double support);
122 double getKernelSupport()
const;
126 void setStiffness(
double stiffness);
130 double getStiffness()
const;
134 void setDamping(
double damping);
138 double getDamping()
const;
142 void setFriction(
double friction);
146 double getFriction()
const;
149 bool doInitialize()
override;
151 bool doUpdate(
double dt)
override;
153 bool doHandleCollisions(
double dt,
const SurgSim::Collision::ContactMapType& collisions)
override;
159 void computeVelocityAndPosition(
double dt);
161 Eigen::Matrix<double, Eigen::Dynamic, 3, Eigen::RowMajor>
m_normal;
178 double m_kernelPoly6;
179 double m_kernelPoly6Gradient;
180 double m_kernelSpikyGradient;
181 double m_kernelViscosityLaplacian;
182 double m_kernelPoly6Laplacian;
185 std::shared_ptr<SurgSim::DataStructures::Grid<size_t, 3>>
m_grid;
189 void computeNeighbors();
192 void computeDensityAndPressureField();
195 void computeNormalField();
198 void computeAccelerations();
205 #endif // SURGSIM_PARTICLES_SPHREPRESENTATION_H double m_surfaceTension
Surface tension.
Definition: SphRepresentation.h:168
Math::Vector m_pressure
Particles' pressure.
Definition: SphRepresentation.h:164
Wraps glewInit() to separate the glew opengl definitions from the osg opengl definitions only imgui n...
Definition: AddRandomSphereBehavior.cpp:36
double m_gasStiffness
Stiffness of the gas considered.
Definition: SphRepresentation.h:167
double m_friction
Collision sliding friction coefficient.
Definition: SphRepresentation.h:171
Math::Vector m_density
Particles' density.
Definition: SphRepresentation.h:163
Eigen::Matrix< double, Eigen::Dynamic, 3, Eigen::RowMajor > m_normal
Particles' normal.
Definition: SphRepresentation.h:161
Eigen::Matrix< double, Eigen::Dynamic, 3, Eigen::RowMajor > m_acceleration
Particles' acceleration.
Definition: SphRepresentation.h:162
double m_damping
Collision damping.
Definition: SphRepresentation.h:170
The Representation class defines the base class for all Particle System.
Definition: Representation.h:40
double m_h
Kernels parameter (support length and its powers)
Definition: SphRepresentation.h:176
Eigen::Matrix< double, 3, 1 > Vector3d
A 3D vector of doubles.
Definition: Vector.h:57
double m_mass
Mass per particle (determine the density of particle per m3)
Definition: SphRepresentation.h:165
SurgSim::Math::Vector3d m_gravity
3D Gravity vector
Definition: SphRepresentation.h:172
Eigen::Matrix< double, Eigen::Dynamic, 1 > Vector
A dynamic size column vector.
Definition: Vector.h:68
double m_densityReference
Density of the reference gas.
Definition: SphRepresentation.h:166
Definitions of small fixed-size vector types.
double m_stiffness
Collision stiffness.
Definition: SphRepresentation.h:169
double m_viscosity
Viscosity coefficient.
Definition: SphRepresentation.h:173
std::shared_ptr< SurgSim::DataStructures::Grid< size_t, 3 > > m_grid
Grid acceleration to evaluate the kernels locally (storing the particles' index)
Definition: SphRepresentation.h:185
SphRepresentation is a Representation dedicated to Smoothed-Particles Hydrodynamics (SPH)...
Definition: SphRepresentation.h:46