Class Viscosity_Weiler2018

Inheritance Relationships

Base Type

Class Documentation

class SPH::Viscosity_Weiler2018 : public SPH::ViscosityBase

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)
~Viscosity_Weiler2018(void)
void step()
void reset()
void performNeighborhoodSearchSort()
FORCE_INLINE const Vector3r & getVDiff (const unsigned int i) const
FORCE_INLINE Vector3r & getVDiff (const unsigned int i)
FORCE_INLINE void setVDiff (const unsigned int i, const Vector3r &val)

Public Static Functions

void matrixVecProd(const Real *vec, Real *result, void *userData)

Public Static Attributes

int ITERATIONS = -1
int MAX_ITERATIONS = -1
int MAX_ERROR = -1
int VISCOSITY_COEFFICIENT_BOUNDARY = -1

Protected Types

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

Protected Functions

void initParameters()

Protected Attributes

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

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