Class Viscosity_Weiler2018

Inheritance Relationships

Base Type

Class Documentation

class Viscosity_Weiler2018 : public SPH::NonPressureForceBase

This class implements the implicit Laplace viscosity method introduced by Weiler et al. 2018 [WKBB18].

References:

  • [WKBB18] Marcel Weiler, Dan Koschier, Magnus Brand, and Jan Bender. A physically consistent implicit viscosity solver for SPH fluids. Computer Graphics Forum (Eurographics), 2018. URL: https://doi.org/10.1111/cgf.13349

Public Functions

Viscosity_Weiler2018(FluidModel *model)
virtual ~Viscosity_Weiler2018(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 Vector3r & getVDiff (const unsigned int i) const
inline FORCE_INLINE Vector3r & getVDiff (const unsigned int i)
inline FORCE_INLINE void setVDiff (const unsigned int i, const Vector3r &val)
void computeRHS(VectorXr &b, VectorXr &g)
void applyForces(const VectorXr &x)

Public Static Functions

static inline NonPressureForceBase *creator(FluidModel *model)
static void matrixVecProd(const Real *vec, Real *result, void *userData)

Public Static Attributes

static std::string METHOD_NAME = "Weiler et al. 2018"
static int VISCOSITY_COEFFICIENT = -1
static int ITERATIONS = -1
static int MAX_ITERATIONS = -1
static int MAX_ERROR = -1
static int VISCOSITY_COEFFICIENT_BOUNDARY = -1

Protected Types

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

Protected Functions

virtual void initParameters()

Protected Attributes

Real m_viscosity
Real m_boundaryViscosity
unsigned int m_maxIter
Real m_maxError
unsigned int m_iterations
std::vector<Vector3r> m_vDiff
Real m_tangentialDistanceFactor
Solver m_solver

Protected Static Functions

static FORCE_INLINE void diagonalMatrixElement (const unsigned int row, Matrix3r &result, void *userData)