Program Listing for File SimulationDataPBF.h

Return to documentation for file (SPlisHSPlasH/PBF/SimulationDataPBF.h)

#ifndef __SimulationDataPBF_h__
#define __SimulationDataPBF_h__

#include "SPlisHSPlasH/Common.h"
#include <vector>
#include "SPlisHSPlasH/FluidModel.h"

namespace SPH
{
    class SimulationDataPBF
    {
        public:
            SimulationDataPBF();
            virtual ~SimulationDataPBF();

        protected:
            std::vector<std::vector<Real>> m_lambda;
            std::vector<std::vector<Vector3r>> m_deltaX;
            std::vector<std::vector<Vector3r>> m_oldX;
            std::vector<std::vector<Vector3r>> m_lastX;

        public:
            virtual void init();

            virtual void cleanup();

            virtual void reset();

            void performNeighborhoodSearchSort();

            void emittedParticles(FluidModel *model, const unsigned int startIndex);

            FORCE_INLINE const Real& getLambda(const unsigned int fluidIndex, const unsigned int i) const
            {
                return m_lambda[fluidIndex][i];
            }

            FORCE_INLINE Real& getLambda(const unsigned int fluidIndex, const unsigned int i)
            {
                return m_lambda[fluidIndex][i];
            }

            FORCE_INLINE void setLambda(const unsigned int fluidIndex, const unsigned int i, const Real &val)
            {
                m_lambda[fluidIndex][i] = val;
            }

            FORCE_INLINE Vector3r &getDeltaX(const unsigned int fluidIndex, const unsigned int i)
            {
                return m_deltaX[fluidIndex][i];
            }

            FORCE_INLINE const Vector3r &getDeltaX(const unsigned int fluidIndex, const unsigned int i) const
            {
                return m_deltaX[fluidIndex][i];
            }

            FORCE_INLINE void setDeltaX(const unsigned int fluidIndex, const unsigned int i, const Vector3r &val)
            {
                m_deltaX[fluidIndex][i] = val;
            }

            FORCE_INLINE Vector3r &getLastPosition(const unsigned int fluidIndex, const unsigned int i)
            {
                return m_lastX[fluidIndex][i];
            }

            FORCE_INLINE const Vector3r &getLastPosition(const unsigned int fluidIndex, const unsigned int i) const
            {
                return m_lastX[fluidIndex][i];
            }

            FORCE_INLINE void setLastPosition(const unsigned int fluidIndex, const unsigned int i, const Vector3r &pos)
            {
                m_lastX[fluidIndex][i] = pos;
            }

            FORCE_INLINE Vector3r &getOldPosition(const unsigned int fluidIndex, const unsigned int i)
            {
                return m_oldX[fluidIndex][i];
            }

            FORCE_INLINE const Vector3r &getOldPosition(const unsigned int fluidIndex, const unsigned int i) const
            {
                return m_oldX[fluidIndex][i];
            }

            FORCE_INLINE void setOldPosition(const unsigned int fluidIndex, const unsigned int i, const Vector3r &pos)
            {
                m_oldX[fluidIndex][i] = pos;
            }

    };
}

#endif