Program Listing for File TimeStep.h
↰ Return to documentation for file (SPlisHSPlasH/TimeStep.h)
#pragma once
#include "Common.h"
#include "ParameterObject.h"
#include "FluidModel.h"
#include "BoundaryModel.h"
#include "Discregrid/discrete_grid.hpp"
namespace SPH
{
class TimeStep : public GenParam::ParameterObject
{
public:
static int SOLVER_ITERATIONS;
static int MIN_ITERATIONS;
static int MAX_ITERATIONS;
static int MAX_ERROR;
protected:
unsigned int m_iterations;
Real m_maxError;
unsigned int m_minIterations;
unsigned int m_maxIterations;
void clearAccelerations(const unsigned int fluidModelIndex);
virtual void initParameters();
void approximateNormal(Discregrid::DiscreteGrid* map, const Eigen::Vector3d &x, Eigen::Vector3d &n, const unsigned int dim);
void computeVolumeAndBoundaryX(const unsigned int fluidModelIndex, const unsigned int i, const Vector3r &xi);
void computeVolumeAndBoundaryX();
void computeDensityAndGradient(const unsigned int fluidModelIndex, const unsigned int i, const Vector3r &xi);
void computeDensityAndGradient();
public:
TimeStep();
virtual ~TimeStep(void);
void computeDensities(const unsigned int fluidModelIndex);
virtual void step() = 0;
virtual void reset();
virtual void init();
virtual void resize() = 0;
virtual void emittedParticles(FluidModel *model, const unsigned int startIndex) {};
virtual void performNeighborhoodSearchSort() {};
virtual void saveState(BinaryFileWriter &binWriter) {};
virtual void loadState(BinaryFileReader &binReader) {};
#ifdef USE_PERFORMANCE_OPTIMIZATION
void precomputeValues();
#endif
};
}