Program Listing for File TimeStepDFSPH.h
↰ Return to documentation for file (SPlisHSPlasH/DFSPH/TimeStepDFSPH.h)
#ifndef __TimeStepDFSPH_h__
#define __TimeStepDFSPH_h__
#include "SPlisHSPlasH/Common.h"
#include "SPlisHSPlasH/TimeStep.h"
#include "SimulationDataDFSPH.h"
#include "SPlisHSPlasH/SPHKernels.h"
#define USE_WARMSTART
#define USE_WARMSTART_V
namespace SPH
{
class SimulationDataDFSPH;
class TimeStepDFSPH : public TimeStep
{
protected:
SimulationDataDFSPH m_simulationData;
const Real m_eps = static_cast<Real>(1.0e-5);
bool m_enableDivergenceSolver;
unsigned int m_iterationsV;
Real m_maxErrorV;
unsigned int m_maxIterationsV;
void computeDFSPHFactor(const unsigned int fluidModelIndex);
void pressureSolve();
void pressureSolveIteration(const unsigned int fluidModelIndex, Real &avg_density_err);
void divergenceSolve();
void divergenceSolveIteration(const unsigned int fluidModelIndex, Real &avg_density_err);
void computeDensityAdv(const unsigned int fluidModelIndex, const unsigned int index, const Real h, const Real density0);
void computeDensityChange(const unsigned int fluidModelIndex, const unsigned int index, const Real h);
void computePressureAccel(const unsigned int fluidModelIndex, const unsigned int i, const Real density0, std::vector<std::vector<Real>>& pressure_rho2, const bool applyBoundaryForces = false);
Real compute_aij_pj(const unsigned int fluidModelIndex, const unsigned int i);
virtual void performNeighborhoodSearchSort();
virtual void emittedParticles(FluidModel *model, const unsigned int startIndex);
virtual void initParameters();
public:
static int SOLVER_ITERATIONS_V;
static int MAX_ITERATIONS_V;
static int MAX_ERROR_V;
static int USE_DIVERGENCE_SOLVER;
TimeStepDFSPH();
virtual ~TimeStepDFSPH(void);
virtual void step();
virtual void reset();
virtual void resize();
};
}
#endif