Class Simulation
Defined in File Simulation.h
Nested Relationships
Class Documentation
-
class Simulation : public GenParam::ParameterObject
Class to manage the current simulation time and the time step size. This class is a singleton.
Public Types
-
typedef PrecomputedKernel<CubicKernel, 10000> PrecomputedCubicKernel
Public Functions
-
Simulation()
-
Simulation(const Simulation&) = delete
-
Simulation &operator=(const Simulation&) = delete
-
~Simulation()
-
void deferredInit()
This function is called after the simulation scene is loaded and all parameters are initialized. While reading a scene file several parameters can change. The deferred init function should initialize all values which depend on these parameters.
-
void reset()
-
void addFluidModel(const std::string &id, const unsigned int nFluidParticles, Vector3r *fluidParticles, Vector3r *fluidVelocities, unsigned int *fluidObjectIds, const unsigned int nMaxEmitterParticles)
-
inline FluidModel *getFluidModel(const unsigned int index)
-
inline FluidModel *getFluidModelFromPointSet(const unsigned int pointSetIndex)
-
inline const unsigned int numberOfFluidModels() const
-
void addBoundaryModel(BoundaryModel *bm)
-
inline BoundaryModel *getBoundaryModel(const unsigned int index)
-
inline BoundaryModel *getBoundaryModelFromPointSet(const unsigned int pointSetIndex)
-
inline const unsigned int numberOfBoundaryModels() const
-
void updateBoundaryVolume()
-
inline AnimationFieldSystem *getAnimationFieldSystem()
-
inline BoundaryHandlingMethods getBoundaryHandlingMethod() const
-
inline void setBoundaryHandlingMethod(BoundaryHandlingMethods val)
-
inline int getKernel() const
-
void setKernel(int val)
-
inline int getGradKernel() const
-
void setGradKernel(int val)
-
inline int isSimulationInitialized() const
-
void setSimulationInitialized(int val)
- inline FORCE_INLINE Real W_zero () const
- inline FORCE_INLINE Real W (const Vector3r &r) const
- inline FORCE_INLINE Vector3r gradW (const Vector3r &r)
-
inline int getSimulationMethod() const
-
void setSimulationMethod(const int val)
-
void setSimulationMethodChangedCallback(std::function<void()> const &callBackFct)
-
inline bool is2DSimulation()
-
inline bool zSortEnabled()
-
inline unsigned int stepsPerZSort()
-
void initKernels()
-
void updateTimeStepSize()
Update time step size depending on the chosen method.
-
void updateTimeStepSizeCFL()
Update time step size by CFL condition.
-
virtual void performNeighborhoodSearch()
Perform the neighborhood search for all fluid particles.
-
void performNeighborhoodSearchSort()
-
void computeNonPressureForces()
-
void animateParticles()
-
void emitParticles()
-
virtual void emittedParticles(FluidModel *model, const unsigned int startIndex)
-
inline NeighborhoodSearch *getNeighborhoodSearch()
-
inline void setCachePath(const std::string &cachePath)
-
inline const std::string &getCachePath() const
-
inline void setUseCache(const bool useCache)
-
inline const bool getUseCache() const
-
void saveState(BinaryFileWriter &binWriter)
-
void loadState(BinaryFileReader &binReader)
-
inline void addDragMethod(const std::string &name, const std::function<NonPressureForceBase*(FluidModel*)> &creator)
-
inline std::vector<NonPressureForceMethod> &getDragMethods()
-
inline void addElasticityMethod(const std::string &name, const std::function<NonPressureForceBase*(FluidModel*)> &creator)
-
inline std::vector<NonPressureForceMethod> &getElasticityMethods()
-
inline void addSurfaceTensionMethod(const std::string &name, const std::function<NonPressureForceBase*(FluidModel*)> &creator)
-
inline std::vector<NonPressureForceMethod> &getSurfaceTensionMethods()
-
inline void addViscosityMethod(const std::string &name, const std::function<NonPressureForceBase*(FluidModel*)> &creator)
-
inline std::vector<NonPressureForceMethod> &getViscosityMethods()
-
inline void addVorticityMethod(const std::string &name, const std::function<NonPressureForceBase*(FluidModel*)> &creator)
-
inline std::vector<NonPressureForceMethod> &getVorticityMethods()
- inline FORCE_INLINE unsigned int numberOfPointSets () const
- inline FORCE_INLINE unsigned int numberOfNeighbors (const unsigned int pointSetIndex, const unsigned int neighborPointSetIndex, const unsigned int index) const
- inline FORCE_INLINE unsigned int getNeighbor (const unsigned int pointSetIndex, const unsigned int neighborPointSetIndex, const unsigned int index, const unsigned int k) const
- inline FORCE_INLINE const unsigned int * getNeighborList (const unsigned int pointSetIndex, const unsigned int neighborPointSetIndex, const unsigned int index) const
Public Static Functions
-
static Simulation *getCurrent()
-
static void setCurrent(Simulation *tm)
-
static bool hasCurrent()
Public Static Attributes
-
static int SIM_2D = -1
-
static int PARTICLE_RADIUS = -1
-
static int GRAVITATION = -1
-
static int CFL_METHOD = -1
-
static int CFL_FACTOR = -1
-
static int CFL_MIN_TIMESTEPSIZE = -1
-
static int CFL_MAX_TIMESTEPSIZE = -1
-
static int ENABLE_Z_SORT = -1
-
static int STEPS_PER_Z_SORT = -1
-
static int KERNEL_METHOD = -1
-
static int GRAD_KERNEL_METHOD = -1
-
static int ENUM_KERNEL_CUBIC = -1
-
static int ENUM_KERNEL_WENDLANDQUINTICC2 = -1
-
static int ENUM_KERNEL_POLY6 = -1
-
static int ENUM_KERNEL_SPIKY = -1
-
static int ENUM_KERNEL_PRECOMPUTED_CUBIC = -1
-
static int ENUM_KERNEL_CUBIC_2D = -1
-
static int ENUM_KERNEL_WENDLANDQUINTICC2_2D = -1
-
static int ENUM_GRADKERNEL_CUBIC = -1
-
static int ENUM_GRADKERNEL_WENDLANDQUINTICC2 = -1
-
static int ENUM_GRADKERNEL_POLY6 = -1
-
static int ENUM_GRADKERNEL_SPIKY = -1
-
static int ENUM_GRADKERNEL_PRECOMPUTED_CUBIC = -1
-
static int ENUM_GRADKERNEL_CUBIC_2D = -1
-
static int ENUM_GRADKERNEL_WENDLANDQUINTICC2_2D = -1
-
static int SIMULATION_METHOD = -1
-
static int ENUM_CFL_NONE = -1
-
static int ENUM_CFL_STANDARD = -1
-
static int ENUM_CFL_ITER = -1
-
static int ENUM_SIMULATION_WCSPH = -1
-
static int ENUM_SIMULATION_PCISPH = -1
-
static int ENUM_SIMULATION_PBF = -1
-
static int ENUM_SIMULATION_IISPH = -1
-
static int ENUM_SIMULATION_DFSPH = -1
-
static int ENUM_SIMULATION_PF = -1
-
static int ENUM_SIMULATION_ICSPH = -1
-
static int BOUNDARY_HANDLING_METHOD = -1
-
static int ENUM_AKINCI2012 = -1
-
static int ENUM_KOSCHIER2017 = -1
-
static int ENUM_BENDER2019 = -1
Protected Attributes
-
std::vector<FluidModel*> m_fluidModels
-
std::vector<BoundaryModel*> m_boundaryModels
-
NeighborhoodSearch *m_neighborhoodSearch
-
AnimationFieldSystem *m_animationFieldSystem
-
int m_cflMethod
-
int m_kernelMethod
-
int m_gradKernelMethod
-
SimulationMethods m_simulationMethod
-
bool m_sim2D
-
bool m_enableZSort
-
unsigned int m_stepsPerZSort
-
unsigned int m_counter
-
std::function<void()> m_simulationMethodChanged
-
int m_boundaryHandlingMethod
-
std::string m_cachePath
-
bool m_useCache
-
std::vector<NonPressureForceMethod> m_dragMethods
-
std::vector<NonPressureForceMethod> m_elasticityMethods
-
std::vector<NonPressureForceMethod> m_surfaceTensionMethods
-
std::vector<NonPressureForceMethod> m_vorticityMethods
-
std::vector<NonPressureForceMethod> m_viscoMethods
-
bool m_simulationIsInitialized
-
struct FluidInfo
Fluid object information
-
struct NonPressureForceMethod
Public Members
-
std::string m_name
-
std::function<NonPressureForceBase*(FluidModel*)> m_creator
-
int m_id
-
std::string m_name
-
typedef PrecomputedKernel<CubicKernel, 10000> PrecomputedCubicKernel