1#ifndef PBAT_SIM_VBD_DATA_H
2#define PBAT_SIM_VBD_DATA_H
5#include "PhysicsBasedAnimationToolkitExport.h"
17 static auto constexpr kDims = 3;
28 WithVolumeMesh(Eigen::Ref<MatrixX const>
const&
X, Eigen::Ref<IndexMatrixX const>
const&
E);
37 Eigen::Ref<IndexVectorX const>
const&
V,
38 Eigen::Ref<IndexMatrixX const>
const&
F);
65 Eigen::Ref<VectorX const>
const&
rhoe,
66 Eigen::Ref<VectorX const>
const& mue,
67 Eigen::Ref<VectorX const>
const& lambdae);
78 bool bDbcSorted =
false);
223 EInitializationStrategy::AdaptivePbat};
Enums for graph algorithms API.
EGreedyColorSelectionStrategy
Enumeration of color selection strategies for graph coloring algorithms.
Definition Enums.h:19
@ LeastUsed
Select the least used color from the color palette.
Definition Enums.h:20
EGreedyColorOrderingStrategy
Enumeration of vertex traversal ordering strategies for graph coloring algorithms.
Definition Enums.h:27
@ LargestDegree
Always visit the vertex with the largest degree next.
Definition Enums.h:30
PBAT's Vertex Block Descent (VBD) anka2024vbd API.
Definition AndersonIntegrator.cpp:10
EAccelerationStrategy
Acceleration strategies for the VBD time step minimization.
Definition Enums.h:21
EInitializationStrategy
Initialization strategies for the VBD time step minimization.
Definition Enums.h:9
Eigen::Vector< Index, Eigen::Dynamic > IndexVectorX
Dynamic-size index vector type.
Definition Aliases.h:49
Eigen::Vector< Scalar, Eigen::Dynamic > VectorX
Dynamic-size vector type.
Definition Aliases.h:33
Eigen::Matrix< Index, Rows, Cols > IndexMatrix
Fixed-size index matrix type.
Definition Aliases.h:47
std::ptrdiff_t Index
Index type.
Definition Aliases.h:17
double Scalar
Scalar type.
Definition Aliases.h:18
Eigen::Matrix< Scalar, Rows, Cols > Matrix
Fixed-size matrix type.
Definition Aliases.h:31
VBD simulation configuration.
Definition Data.h:15
Scalar epsv
Definition Data.h:227
PBAT_API Data & WithAcceleration(Eigen::Ref< MatrixX const > const &aext)
Vertex external accelerations.
Definition Data.cpp:68
IndexVectorX dbc
Dirichlet constrained vertices (sorted)
Definition Data.h:207
Matrix< kDims, Eigen::Dynamic > vt
3x|# verts| previous vertex velocities
Definition Data.h:187
Scalar muD
Dirichlet penalty coefficient.
Definition Data.h:206
PBAT_API Data & WithBroydenMethod(Index window)
Use Broyden method.
Definition Data.cpp:155
VectorX m
|# verts| vertex masses
Definition Data.h:183
IndexVectorX GVGp
|# verts+1| prefixes into GVGg
Definition Data.h:197
PBAT_API Data & WithTrustRegionAcceleration(Scalar eta, Scalar tau, bool bCurved=true)
Use Trust Region acceleration.
Definition Data.cpp:170
IndexVectorX Padj
|# verts| partition vertices
Definition Data.h:219
PBAT_API Data & WithSurfaceMesh(Eigen::Ref< IndexVectorX const > const &V, Eigen::Ref< IndexMatrixX const > const &F)
Collision mesh.
Definition Data.cpp:34
Scalar tau
Trust Region radius increase factor.
Definition Data.h:245
PBAT_API Data & WithVolumeMesh(Eigen::Ref< MatrixX const > const &X, Eigen::Ref< IndexMatrixX const > const &E)
Simulation mesh.
Definition Data.cpp:21
Scalar detHZero
Numerical zero for hessian pseudo-singularity check.
Definition Data.h:230
Matrix< kDims, Eigen::Dynamic > aext
3x|# verts| vertex external accelerations
Definition Data.h:182
Index mWindowSize
Anderson acceleration window size.
Definition Data.h:237
IndexVectorX V
Collision vertices.
Definition Data.h:172
IndexMatrix< 4, Eigen::Dynamic > E
4x|# elems| FEM linear tetrahedral elements
Definition Data.h:168
Matrix< kDims, Eigen::Dynamic > xt
3x|# verts| previous vertex positions
Definition Data.h:185
IndexVectorX Pptr
Definition Data.h:217
PBAT_API Data & WithRayleighDamping(Scalar kD)
Uniform damping coefficient.
Definition Data.cpp:115
graph::EGreedyColorSelectionStrategy eSelection
Definition Data.h:213
Scalar rho
Chebyshev acceleration estimated spectral radius.
Definition Data.h:234
PBAT_API Data & WithVertexColoringStrategy(graph::EGreedyColorOrderingStrategy eOrdering, graph::EGreedyColorSelectionStrategy eSelection)
Vertex graph coloring strategy to use.
Definition Data.cpp:100
Matrix< kDims, Eigen::Dynamic > x
3x|# verts| vertex positions
Definition Data.h:180
graph::EGreedyColorOrderingStrategy eOrdering
Definition Data.h:210
PBAT_API Data & WithChebyshevAcceleration(Scalar rho)
Use Chebyshev acceleration.
Definition Data.cpp:141
Scalar mNesterovLipschitzConstant
Nesterov acceleration Lipschitz constant.
Definition Data.h:240
PBAT_API Data & Construct(bool bValidate=true)
Construct the simulation data.
Definition Data.cpp:179
Index mNesterovAccelerationStart
Nesterov acceleration start iteration.
Definition Data.h:241
PBAT_API Data & WithBodies(Eigen::Ref< IndexVectorX const > const &B)
Multibody map.
Definition Data.cpp:56
IndexVectorX GVGe
Definition Data.h:198
static auto constexpr kDims
Number of spatial dimensions.
Definition Data.h:17
Matrix< 2, Eigen::Dynamic > lame
2x|# elems| Lame coefficients
Definition Data.h:194
VectorX rhoe
|# elems| mass densities
Definition Data.h:193
PBAT_API Data & WithNesterovAcceleration(Scalar L, Index start=3)
Use Nesterov acceleration.
Definition Data.cpp:162
Matrix< kDims, Eigen::Dynamic > X
3x|# verts| FEM nodal positions
Definition Data.h:167
EInitializationStrategy strategy
BCD optimization initialization strategy.
Definition Data.h:222
IndexVectorX B
|# verts| array of body indices
Definition Data.h:171
EAccelerationStrategy eAcceleration
Acceleration strategy.
Definition Data.h:231
Scalar muC
Uniform collision penalty.
Definition Data.h:225
PBAT_API Data & WithVelocity(Eigen::Ref< MatrixX const > const &v)
Vertex velocities.
Definition Data.cpp:62
Scalar eta
Trust Region energy reduction accuracy threshold.
Definition Data.h:244
PBAT_API Data & WithContactParameters(Scalar muC, Scalar muF, Scalar epsv)
Normal and frictional contact parameters.
Definition Data.cpp:121
PBAT_API Data & WithInitializationStrategy(EInitializationStrategy strategy)
BCD optimization initialization strategy.
Definition Data.cpp:109
VectorX XVA
Definition Data.h:175
Matrix< kDims, Eigen::Dynamic > v
3x|# verts| vertex velocities
Definition Data.h:181
Scalar muF
Uniform friction coefficient.
Definition Data.h:226
Matrix< 4, Eigen::Dynamic > GP
|# elem.nodes|x|# dims*# elems| shape function gradients at elems
Definition Data.h:192
PBAT_API Data & WithDirichletConstrainedVertices(IndexVectorX const &dbc, Scalar muD=Scalar(1), bool bDbcSorted=false)
Set Dirichlet constrained vertices.
Definition Data.cpp:86
Matrix< kDims, Eigen::Dynamic > xtilde
3x|# verts| inertial target positions
Definition Data.h:186
IndexVectorX colors
|# vertices| map of vertex colors
Definition Data.h:216
PBAT_API Data & WithMaterial(Eigen::Ref< VectorX const > const &rhoe, Eigen::Ref< VectorX const > const &mue, Eigen::Ref< VectorX const > const &lambdae)
Element material parameters.
Definition Data.cpp:74
Scalar kD
Uniform damping coefficient.
Definition Data.h:224
IndexVectorX GVGilocal
Definition Data.h:201
PBAT_API Data & WithAndersonAcceleration(Index window)
Use Anderson acceleration.
Definition Data.cpp:148
bool bCurved
Use curved accelerated path, otherwise use linear path.
Definition Data.h:246
Index mActiveSetUpdateFrequency
Active set update frequency.
Definition Data.h:229
PBAT_API Data & WithActiveSetUpdateFrequency(Index activeSetUpdateFrequency)
Active set update frequency.
Definition Data.cpp:129
VectorX wg
|# elems| quadrature weights
Definition Data.h:190
IndexMatrix< 3, Eigen::Dynamic > F
3x|#collision triangles| collision triangles (on the boundary of T)
Definition Data.h:174
VectorX FA
|# collision triangles| triangle areas
Definition Data.h:177
PBAT_API Data & WithHessianDeterminantZeroUnder(Scalar zero)
Numerical zero for hessian pseudo-singularity check.
Definition Data.cpp:135