Program Listing for File SurfaceTension_He2014.h

Return to documentation for file (SPlisHSPlasH/SurfaceTension/SurfaceTension_He2014.h)

#ifndef __SurfaceTension_He2014_h__
#define __SurfaceTension_He2014_h__

#include "SPlisHSPlasH/Common.h"
#include "SPlisHSPlasH/FluidModel.h"
#include "SPlisHSPlasH/NonPressureForceBase.h"

namespace SPH
{
    class SurfaceTension_He2014 : public NonPressureForceBase
    {
    protected:
        Real m_surfaceTension;
        Real m_surfaceTensionBoundary;

        std::vector<Real> m_color;
        std::vector<Real> m_gradC2;

        virtual void initParameters();

    public:
        static std::string METHOD_NAME;
        static int SURFACE_TENSION;
        static int SURFACE_TENSION_BOUNDARY;

        SurfaceTension_He2014(FluidModel *model);
        virtual ~SurfaceTension_He2014(void);

        static NonPressureForceBase* creator(FluidModel* model) { return new SurfaceTension_He2014(model); }
        virtual std::string getMethodName() { return METHOD_NAME; }

        virtual void step();
        virtual void reset();

        virtual void performNeighborhoodSearchSort();

        FORCE_INLINE const Real getColor(const unsigned int i) const
        {
            return m_color[i];
        }

        FORCE_INLINE Real& getColor(const unsigned int i)
        {
            return m_color[i];
        }

        FORCE_INLINE void setColor(const unsigned int i, const Real p)
        {
            m_color[i] = p;
        }

        FORCE_INLINE const Real getGradC2(const unsigned int i) const
        {
            return m_gradC2[i];
        }

        FORCE_INLINE Real& getGradC2(const unsigned int i)
        {
            return m_gradC2[i];
        }

        FORCE_INLINE void setGradC2(const unsigned int i, const Real p)
        {
            m_gradC2[i] = p;
        }
    };
}

#endif