Program Listing for File SimulationDataPF.h
↰ Return to documentation for file (SPlisHSPlasH/PF/SimulationDataPF.h)
#ifndef __SimulationDataPF_h__
#define __SimulationDataPF_h__
#include "SPlisHSPlasH/Common.h"
#include "SPlisHSPlasH/FluidModel.h"
#include <vector>
namespace SPH
{
class SimulationDataPF
{
public:
SimulationDataPF();
virtual ~SimulationDataPF();
protected:
std::vector<std::vector<Vector3r>> m_old_position;
std::vector<std::vector<unsigned int>> m_num_fluid_neighbors;
std::vector<std::vector<Vector3r>> m_s;
std::vector<std::vector<Vector3r>> m_mat_diag;
std::vector<unsigned int> m_particleOffset;
public:
virtual void init();
virtual void cleanup();
virtual void reset();
void performNeighborhoodSearchSort();
void emittedParticles(FluidModel *model, const unsigned int startIndex);
FORCE_INLINE const Vector3r getOldPosition(const unsigned int fluidIndex, const unsigned int i) const
{
return m_old_position[fluidIndex][i];
}
FORCE_INLINE Vector3r& getOldPosition(const unsigned int fluidIndex, const unsigned int i)
{
return m_old_position[fluidIndex][i];
}
FORCE_INLINE void setOldPosition(const unsigned int fluidIndex, const unsigned int i, const Vector3r p)
{
m_old_position[fluidIndex][i] = p;
}
FORCE_INLINE const unsigned int getNumFluidNeighbors(const unsigned int fluidIndex, const unsigned int i) const
{
return m_num_fluid_neighbors[fluidIndex][i];
}
FORCE_INLINE unsigned int& getNumFluidNeighbors(const unsigned int fluidIndex, const unsigned int i)
{
return m_num_fluid_neighbors[fluidIndex][i];
}
FORCE_INLINE void setNumFluidNeighbors(const unsigned int fluidIndex, const unsigned int i, const unsigned int n)
{
m_num_fluid_neighbors[fluidIndex][i] = n;
}
FORCE_INLINE const Vector3r& getS(const unsigned int fluidIndex, const unsigned int i) const
{
return m_s[fluidIndex][i];
}
FORCE_INLINE Vector3r& getS(const unsigned int fluidIndex, const unsigned int i)
{
return m_s[fluidIndex][i];
}
FORCE_INLINE void setS(const unsigned int fluidIndex, const unsigned int i, const Vector3r & s)
{
m_s[fluidIndex][i] = s;
}
FORCE_INLINE const Vector3r& getDiag(const unsigned int fluidIndex, const unsigned int i) const
{
return m_mat_diag[fluidIndex][i];
}
FORCE_INLINE Vector3r& getDiag(const unsigned int fluidIndex, const unsigned int i)
{
return m_mat_diag[fluidIndex][i];
}
FORCE_INLINE void setDiag(const unsigned int fluidIndex, const unsigned int i, const Vector3r & s)
{
m_mat_diag[fluidIndex][i] = s;
}
FORCE_INLINE const unsigned int & getParticleOffset(const unsigned int fluidIndex) const
{
return m_particleOffset[fluidIndex];
}
};
}
#endif