Class SurfaceTension_Jeske2023

Inheritance Relationships

Base Type

Class Documentation

class SurfaceTension_Jeske2023 : public SPH::NonPressureForceBase

This class implements the implicit surface tension method by Jeske et al. 2023 [JWL+23].

References:

  • [JWL+23] Jeske, Stefan Rhys, Lukas Westhofen, Fabian Löschner, José Antonio Fernández-Fernández, and Jan Bender. “Implicit Surface Tension for SPH Fluid Simulation.” ACM Transactions on Graphics, November 7, 2023. URL: https://doi.org/10.1145/3631936.

Public Functions

SurfaceTension_Jeske2023(FluidModel *model)
virtual ~SurfaceTension_Jeske2023(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)
inline FORCE_INLINE const Real & getDensityGrad (const unsigned int i) const
inline FORCE_INLINE Real & getDensityGrad (const unsigned int i)
inline FORCE_INLINE void setDensityGrad (const unsigned int i, const Real &val)
void computeRHS(VectorXr &b, VectorXr &g)
void applyForces(const VectorXr &x)
inline Real getMaxSolverError()
inline void setMaxSolverError(Real error)
inline bool getWeakCoupling()
inline void setWeakCoupling(bool val)
inline bool getViscosity()
inline void setViscosity(Real val)
void computeDensityGradient()

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 = "Jeske et al. 2023"
static int SURFACE_TENSION = -1
static int SURFACE_TENSION_BOUNDARY = -1
static int ITERATIONS = -1
static int MAX_ITERATIONS = -1
static int MAX_ERROR = -1
static int VISCOSITY_COEFFICIENT = -1
static int VISCOSITY_COEFFICIENT_BOUNDARY = -1
static int XSPH = -1

Protected Types

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

Protected Functions

virtual void initParameters()

Protected Attributes

Real m_surfaceTension
Real m_surfaceTensionBoundary
Real m_viscosity
Real m_boundaryViscosity
unsigned int m_maxIter
Real m_maxError
unsigned int m_iterations
std::vector<Vector3r> m_vDiff
std::vector<Real> m_gradRho
std::vector<Real> m_surfaceEnergy
std::vector<Real> m_color
std::vector<Vector3r> m_colorGrad
std::vector<Vector3r> m_nonlinearAcc
std::vector<Vector3r> m_nonlinearRes
std::vector<Vector3r> m_nonlinearGrad
Real m_tangentialDistanceFactor
bool m_weakPhaseCoupling
Real m_xsph
Solver m_solver