Class Viscosity_Peer2016

Inheritance Relationships

Base Type

Class Documentation

class Viscosity_Peer2016 : public SPH::NonPressureForceBase

This class implements the implicit simulation method for viscous fluids introduced by Peer and Teschner [PT16].

References:

  • [PT16] Andreas Peer and Matthias Teschner. Prescribed Velocity Gradients for Highly Viscous SPH Fluids with Vorticity Diffusion. IEEE Transactions on Visualization and Computer Graphics, 2016. URL: https://doi.org/10.1109/TVCG.2016.2636144

Public Functions

Viscosity_Peer2016(FluidModel *model)
virtual ~Viscosity_Peer2016(void)
inline virtual std::string getMethodName()

returns the name of the method

virtual void step()
virtual void reset()
virtual void performNeighborhoodSearchSort()
inline FORCE_INLINE const Matrix3r & getTargetNablaV (const unsigned int i) const
inline FORCE_INLINE Matrix3r & getTargetNablaV (const unsigned int i)
inline FORCE_INLINE void setTargetNablaV (const unsigned int i, const Matrix3r &val)
inline FORCE_INLINE const Vector3r & getOmega (const unsigned int i) const
inline FORCE_INLINE Vector3r & getOmega (const unsigned int i)
inline FORCE_INLINE void setOmega (const unsigned int i, const Vector3r &val)

Public Static Functions

static inline NonPressureForceBase *creator(FluidModel *model)
static void matrixVecProdV(const Real *vec, Real *result, void *userData)
static FORCE_INLINE void diagonalMatrixElementV (const unsigned int row, Real &result, void *userData)
static void matrixVecProdOmega(const Real *vec, Real *result, void *userData)
static FORCE_INLINE void diagonalMatrixElementOmega (const unsigned int row, Real &result, void *userData)

Public Static Attributes

static std::string METHOD_NAME = "Peer et al. 2016"
static int VISCOSITY_COEFFICIENT = -1
static int ITERATIONS_V = -1
static int ITERATIONS_OMEGA = -1
static int MAX_ITERATIONS_V = -1
static int MAX_ERROR_V = -1
static int MAX_ITERATIONS_OMEGA = -1
static int MAX_ERROR_OMEGA = -1

Protected Types

typedef Eigen::ConjugateGradient<MatrixReplacement, Eigen::Lower | Eigen::Upper, JacobiPreconditioner1D> Solver

Protected Functions

virtual void initParameters()
void computeDensities()

Protected Attributes

std::vector<Real> m_density
std::vector<Matrix3r> m_targetNablaV
std::vector<Vector3r> m_omega
Solver m_solverV
Solver m_solverOmega
Real m_viscosity
unsigned int m_iterationsV
unsigned int m_iterationsOmega
unsigned int m_maxIterV
Real m_maxErrorV
unsigned int m_maxIterOmega
Real m_maxErrorOmega