13 template<
typename T>
class DataArray;
14 template<
typename T,
int N>
class VecDataArray;
48 size_t getNumParticles()
const;
53 std::shared_ptr<VecDataArray<double, 3>>
getPositions()
const {
return m_positions; }
70 std::shared_ptr<VecDataArray<double, 3>>
getVelocities()
const {
return m_velocities; }
82 std::shared_ptr<VecDataArray<double, 3>>
getNormals()
const {
return m_normals; }
87 std::shared_ptr<DataArray<double>>
getDensities()
const {
return m_densities; }
92 std::shared_ptr<VecDataArray<double, 3>>
getAccelerations()
const {
return m_acceleration; }
103 const std::vector<std::vector<size_t>>& getFluidNeighborLists()
const {
return m_neighborLists; }
110 const std::vector<std::vector<size_t>>& getBoundaryNeighborLists()
const {
return m_boundaryParticleNeighborLists; }
117 const std::vector<std::vector<NeighborInfo>>& getNeighborInfo()
const {
return m_neighborInfo; }
123 void setState(std::shared_ptr<SphState> rhs);
126 std::shared_ptr<VecDataArray<double, 3>> m_positions;
127 std::shared_ptr<VecDataArray<double, 3>> m_fullStepVelocities;
128 std::shared_ptr<VecDataArray<double, 3>> m_halfStepVelocities;
129 std::shared_ptr<VecDataArray<double, 3>> m_velocities;
131 std::shared_ptr<VecDataArray<double, 3>> m_boundaryParticlePositions;
133 std::shared_ptr<DataArray<double>> m_densities;
134 std::shared_ptr<VecDataArray<double, 3>> m_normals;
135 std::shared_ptr<VecDataArray<double, 3>> m_acceleration;
136 std::shared_ptr<VecDataArray<double, 3>> m_diffuseVelocities;
138 std::vector<std::vector<size_t>> m_neighborLists;
139 std::vector<std::vector<size_t>> m_boundaryParticleNeighborLists;
140 std::vector<std::vector<NeighborInfo>> m_neighborInfo;
std::vector< std::vector< NeighborInfo > > & getNeighborInfo()
Returns the vector of neighbor information ( {relative position, density} ), which is cached for othe...
std::shared_ptr< VecDataArray< double, 3 > > getFullStepVelocities() const
Returns the vector of all particle velocities.
void setBoundaryParticlePositions(std::shared_ptr< VecDataArray< double, 3 >> positions)
Set positions of the boundary (solid) particles.
std::vector< std::vector< size_t > > & getFluidNeighborLists()
Returns the vector of neighbor fluid particles.
std::vector< std::vector< size_t > > & getBoundaryNeighborLists()
Returns the vector of neighbor of boundary particles.
std::shared_ptr< VecDataArray< double, 3 > > getDiffuseVelocities() const
Returns the vector of all velocity diffusion.
std::shared_ptr< VecDataArray< double, 3 > > getHalfStepVelocities() const
Returns the vector of all particle velocities.
std::shared_ptr< DataArray< double > > getDensities() const
Returns the vector of all particle densities.
std::shared_ptr< VecDataArray< double, 3 > > getPositions() const
Get/Set the vector of all particle positions.
std::shared_ptr< VecDataArray< double, 3 > > getAccelerations() const
Returns the vector of all particle accelerations.
std::shared_ptr< VecDataArray< double, 3 > > getNormals() const
Returns the vector of all particle surface normals.
std::shared_ptr< VecDataArray< double, 3 > > getVelocities() const
Get/Set the vector of all particle velocities.
double density
density of neighbor particle
Vec3d relativePos
relative position
Simulation states of SPH particles.
The helper struct to store relative positions and densities of neighbor particlcles.
std::shared_ptr< VecDataArray< double, 3 > > getBoundaryParticlePositions() const
Returns the vector of all particle positions.