PhysicsBasedAnimationToolkit 0.0.10
Cross-platform C++20 library of algorithms and data structures commonly used in computer graphics research on physically-based simulation.
Loading...
Searching...
No Matches
pbat::sim::xpbd::Data Struct Reference

Public Member Functions

PBAT_API DataWithVolumeMesh (Eigen::Ref< MatrixX const > const &V, Eigen::Ref< IndexMatrixX const > const &E)
 
PBAT_API DataWithSurfaceMesh (Eigen::Ref< IndexVectorX const > const &V, Eigen::Ref< IndexMatrixX const > const &F)
 
PBAT_API DataWithBodies (Eigen::Ref< IndexVectorX const > const &BV)
 
PBAT_API DataWithVelocity (Eigen::Ref< MatrixX const > const &v)
 
PBAT_API DataWithAcceleration (Eigen::Ref< MatrixX const > const &aext)
 
PBAT_API DataWithMassInverse (Eigen::Ref< VectorX const > const &minv)
 
PBAT_API DataWithElasticMaterial (Eigen::Ref< MatrixX const > const &lame)
 
PBAT_API DataWithCollisionPenalties (Eigen::Ref< VectorX const > const &muV)
 
PBAT_API DataWithFrictionCoefficients (Scalar muS, Scalar muD)
 
PBAT_API DataWithActiveSetUpdateFrequency (Index frequency)
 
PBAT_API DataWithDamping (Eigen::Ref< VectorX > const &beta, EConstraint constraint)
 
PBAT_API DataWithCompliance (Eigen::Ref< VectorX > const &alpha, EConstraint constraint)
 
PBAT_API DataWithPartitions (std::vector< Index > const &Pptr, std::vector< Index > const &Padj)
 
PBAT_API DataWithClusterPartitions (std::vector< Index > const &SGptr, std::vector< Index > const &SGadj, std::vector< Index > const &Cptr, std::vector< Index > const &Cadj)
 See Ton-That et al. 2023 [14] for more details.
 
PBAT_API DataWithDirichletConstrainedVertices (IndexVectorX const &dbc)
 
PBAT_API DataConstruct (bool bValidate=true)
 

Public Attributes

IndexVectorX V
 |#collision vertices| array of indices into columns of x
 
IndexMatrixX F
 
IndexMatrixX T
 Tetrahedra.
 
IndexVectorX BV
 |#particles| array of body indices
 
MatrixX x
 Vertex positions.
 
MatrixX v
 Vertex velocities.
 
MatrixX aext
 Vertex external accelerations.
 
VectorX minv
 Vertex mass inverses.
 
MatrixX xt
 Vertex positions at time t.
 
MatrixX xb
 Vertex positions buffer for contact.
 
MatrixX lame
 2x|#quad.pts.| Lame coefficients
 
MatrixX DmInv
 3x3x|#elements| array of material shape matrix inverses
 
VectorX gammaSNH
 
VectorX muV
 |#collision vertices| array of collision penalties
 
Scalar muS {0.3}
 Static friction coefficient.
 
Scalar muD {0.2}
 Dynamic friction coefficient.
 
Index mActiveSetUpdateFrequency {1}
 Contact active set update frequency.
 
std::array< VectorX, static_cast< int >(EConstraint::NumberOfConstraintTypes)> alpha
 
std::array< VectorX, static_cast< int >(EConstraint::NumberOfConstraintTypes)> beta
 
std::array< VectorX, static_cast< int >(EConstraint::NumberOfConstraintTypes)> lambda
 
IndexVectorX dbc
 Dirichlet constrained vertices.
 
std::vector< IndexPptr
 Compressed sparse storage's pointers for constraint partitions.
 
std::vector< IndexPadj
 Compressed sparse storage's edges for constraint indices.
 
std::vector< IndexSGptr
 Supernodal constraint graph's partition pointers.
 
std::vector< IndexSGadj
 Supernodal constraint graph's partition adjacency.
 
std::vector< IndexCptr
 
std::vector< IndexCadj
 Constraint indices in each cluster.
 

Member Function Documentation

◆ WithClusterPartitions()

Data & pbat::sim::xpbd::Data::WithClusterPartitions ( std::vector< Index > const & SGptr,
std::vector< Index > const & SGadj,
std::vector< Index > const & Cptr,
std::vector< Index > const & Cadj )

See Ton-That et al. 2023 [14] for more details.

Parameters
SGptr
SGadj
Cptr
Cadj
Returns

Member Data Documentation

◆ alpha

std::array<VectorX, static_cast<int>(EConstraint::NumberOfConstraintTypes)> pbat::sim::xpbd::Data::alpha

Compliance alpha[0] -> Stable Neo-Hookean constraint compliance alpha[1] -> Collision penalty constraint compliance

◆ beta

std::array<VectorX, static_cast<int>(EConstraint::NumberOfConstraintTypes)> pbat::sim::xpbd::Data::beta

Damping beta[0] -> Stable Neo-Hookean constraint damping beta[1] -> Collision penalty constraint damping

◆ Cptr

std::vector<Index> pbat::sim::xpbd::Data::Cptr

Flattened cluster pointers, where [Cptr[c], Cptr[c+1]) gives indices into C to obtain cluster c's constraints

◆ F

IndexMatrixX pbat::sim::xpbd::Data::F

3x|#triangles| array of collision triangles (on the boundary of T), indexing into columns of x

◆ gammaSNH

VectorX pbat::sim::xpbd::Data::gammaSNH
  1. + mu/lambda, where mu,lambda are Lame coefficients

◆ lambda

std::array<VectorX, static_cast<int>(EConstraint::NumberOfConstraintTypes)> pbat::sim::xpbd::Data::lambda

"Lagrange" multipliers: lambda[0] -> Stable Neo-Hookean constraint multipliers lambda[1] -> Collision penalty constraint multipliers


The documentation for this struct was generated from the following files: