Program Listing for File TimeStepICSPH.h

Return to documentation for file (SPlisHSPlasH/ICSPH/TimeStepICSPH.h)

#ifndef __TimeStepICSPH_h__
#define __TimeStepICSPH_h__

#include "SPlisHSPlasH/Common.h"
#include "SPlisHSPlasH/TimeStep.h"
#include "SimulationDataICSPH.h"
#include "SPlisHSPlasH/SPHKernels.h"

namespace SPH
{
    class SimulationDataICSPH;

    class TimeStepICSPH : public TimeStep
    {
    protected:
        SimulationDataICSPH m_simulationData;
        Real m_lambda;
        bool m_clamping;
        const Real m_psi = 1.5;

        void computeDensityAdv(const unsigned int fluidModelIndex);
        void compute_aii(const unsigned int fluidModelIndex);
        void pressureSolve();
        void pressureSolveIteration(const unsigned int fluidModelIndex, Real &avg_density_err);
        void integration(const unsigned int fluidModelIndex);

        void computePressureAccels(const unsigned int fluidModelIndex);

        virtual void performNeighborhoodSearchSort();

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

    public:
        static int LAMBDA;
        static int PRESSURE_CLAMPING;

        TimeStepICSPH();
        virtual ~TimeStepICSPH(void);

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

        const SimulationDataICSPH &getSimulationData() { return m_simulationData; };
    };
}

#endif