Program Listing for File SimulationDataPCISPH.h
↰ Return to documentation for file (SPlisHSPlasH/PCISPH/SimulationDataPCISPH.h)
#ifndef __SimulationDataPCISPH_h__
#define __SimulationDataPCISPH_h__
#include "SPlisHSPlasH/Common.h"
#include <vector>
#include "SPlisHSPlasH/FluidModel.h"
namespace SPH
{
class SimulationDataPCISPH
{
public:
SimulationDataPCISPH();
virtual ~SimulationDataPCISPH();
protected:
std::vector<Real> m_pcisph_factor;
std::vector<std::vector<Vector3r>> m_predX;
std::vector<std::vector<Vector3r>> m_predV;
std::vector<std::vector<Real>> m_densityAdv;
std::vector<std::vector<Real>> m_pressure;
std::vector<std::vector<Vector3r>> m_pressureAccel;
public:
virtual void init();
virtual void cleanup();
virtual void reset();
void performNeighborhoodSearchSort();
Real getPCISPH_ScalingFactor(const unsigned int fluidIndex) { return m_pcisph_factor[fluidIndex]; }
void emittedParticles(FluidModel *model, const unsigned int startIndex);
FORCE_INLINE Vector3r &getPredictedPosition(const unsigned int fluidIndex, const unsigned int i)
{
return m_predX[fluidIndex][i];
}
FORCE_INLINE const Vector3r &getPredictedPosition(const unsigned int fluidIndex, const unsigned int i) const
{
return m_predX[fluidIndex][i];
}
FORCE_INLINE void setPredictedPosition(const unsigned int fluidIndex, const unsigned int i, const Vector3r &pos)
{
m_predX[fluidIndex][i] = pos;
}
FORCE_INLINE Vector3r &getPredictedVelocity(const unsigned int fluidIndex, const unsigned int i)
{
return m_predV[fluidIndex][i];
}
FORCE_INLINE const Vector3r &getPredictedVelocity(const unsigned int fluidIndex, const unsigned int i) const
{
return m_predV[fluidIndex][i];
}
FORCE_INLINE void setPredictedVelocity(const unsigned int fluidIndex, const unsigned int i, const Vector3r &vel)
{
m_predV[fluidIndex][i] = vel;
}
FORCE_INLINE const Real getDensityAdv(const unsigned int fluidIndex, const unsigned int i) const
{
return m_densityAdv[fluidIndex][i];
}
FORCE_INLINE Real& getDensityAdv(const unsigned int fluidIndex, const unsigned int i)
{
return m_densityAdv[fluidIndex][i];
}
FORCE_INLINE void setDensityAdv(const unsigned int fluidIndex, const unsigned int i, const Real d)
{
m_densityAdv[fluidIndex][i] = d;
}
FORCE_INLINE const Real getPressure(const unsigned int fluidIndex, const unsigned int i) const
{
return m_pressure[fluidIndex][i];
}
FORCE_INLINE Real& getPressure(const unsigned int fluidIndex, const unsigned int i)
{
return m_pressure[fluidIndex][i];
}
FORCE_INLINE void setPressure(const unsigned int fluidIndex, const unsigned int i, const Real p)
{
m_pressure[fluidIndex][i] = p;
}
FORCE_INLINE Vector3r &getPressureAccel(const unsigned int fluidIndex, const unsigned int i)
{
return m_pressureAccel[fluidIndex][i];
}
FORCE_INLINE const Vector3r &getPressureAccel(const unsigned int fluidIndex, const unsigned int i) const
{
return m_pressureAccel[fluidIndex][i];
}
FORCE_INLINE void setPressureAccel(const unsigned int fluidIndex, const unsigned int i, const Vector3r &val)
{
m_pressureAccel[fluidIndex][i] = val;
}
};
}
#endif