7 #include "imstkSphState.h" 8 #include "imstkLogger.h" 9 #include "imstkVecDataArray.h" 13 SphState::SphState(
const int numElements) :
14 m_positions(
std::make_shared<VecDataArray<double, 3>>(numElements)),
15 m_fullStepVelocities(
std::make_shared<VecDataArray<double, 3>>(numElements)),
16 m_halfStepVelocities(
std::make_shared<VecDataArray<double, 3>>(numElements)),
17 m_velocities(
std::make_shared<VecDataArray<double, 3>>(numElements)),
18 m_boundaryParticlePositions(
std::make_shared<VecDataArray<double, 3>>()),
19 m_densities(
std::make_shared<DataArray<double>>(numElements)),
20 m_normals(
std::make_shared<VecDataArray<double, 3>>(numElements)),
21 m_acceleration(
std::make_shared<VecDataArray<double, 3>>(numElements)),
22 m_diffuseVelocities(
std::make_shared<VecDataArray<double, 3>>(numElements))
24 std::fill_n(m_densities->getPointer(), m_densities->size(), 1.0);
25 std::fill_n(m_acceleration->getPointer(), m_acceleration->size(), Vec3d(0, 0, 0));
26 std::fill_n(m_diffuseVelocities->getPointer(), m_diffuseVelocities->size(), Vec3d(0, 0, 0));
27 std::fill_n(m_velocities->getPointer(), m_velocities->size(), Vec3d(0.0, 0.0, 0.0));
28 std::fill_n(m_halfStepVelocities->getPointer(), m_halfStepVelocities->size(), Vec3d(0.0, 0.0, 0.0));
29 std::fill_n(m_fullStepVelocities->getPointer(), m_fullStepVelocities->size(), Vec3d(0.0, 0.0, 0.0));
31 m_neighborInfo.resize(static_cast<size_t>(numElements));
32 m_neighborLists.resize(static_cast<size_t>(numElements));
38 *m_positions = *rhs->getPositions();
39 *m_velocities = *rhs->getVelocities();
40 *m_halfStepVelocities = *rhs->getHalfStepVelocities();
41 *m_fullStepVelocities = *rhs->getFullStepVelocities();
42 *m_boundaryParticlePositions = *rhs->getBoundaryParticlePositions();
43 *m_densities = *rhs->getDensities();
44 *m_normals = *rhs->getNormals();
45 *m_acceleration = *rhs->getAccelerations();
46 *m_diffuseVelocities = *rhs->getDiffuseVelocities();
48 m_neighborLists = rhs->getFluidNeighborLists();
49 m_boundaryParticleNeighborLists = rhs->getBoundaryNeighborLists();
50 m_neighborInfo = rhs->getNeighborInfo();
52 m_positions->postModified();
58 return m_positions->size();
size_t getNumParticles() const
Get number of particles.
void setState(std::shared_ptr< SphState > rhs)
Set the state to a given one.