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::vbd::Data Struct Reference

VBD simulation configuration. More...

#include <Data.h>

Public Member Functions

PBAT_API DataWithVolumeMesh (Eigen::Ref< MatrixX const > const &X, Eigen::Ref< IndexMatrixX const > const &E)
 Simulation mesh.
 
PBAT_API DataWithSurfaceMesh (Eigen::Ref< IndexVectorX const > const &V, Eigen::Ref< IndexMatrixX const > const &F)
 Collision mesh.
 
PBAT_API DataWithBodies (Eigen::Ref< IndexVectorX const > const &B)
 Multibody map.
 
PBAT_API DataWithVelocity (Eigen::Ref< MatrixX const > const &v)
 Vertex velocities.
 
PBAT_API DataWithAcceleration (Eigen::Ref< MatrixX const > const &aext)
 Vertex external accelerations.
 
PBAT_API DataWithMaterial (Eigen::Ref< VectorX const > const &rhoe, Eigen::Ref< VectorX const > const &mue, Eigen::Ref< VectorX const > const &lambdae)
 Element material parameters.
 
PBAT_API DataWithDirichletConstrainedVertices (IndexVectorX const &dbc, Scalar muD=Scalar(1), bool bDbcSorted=false)
 Set Dirichlet constrained vertices.
 
PBAT_API DataWithVertexColoringStrategy (graph::EGreedyColorOrderingStrategy eOrdering, graph::EGreedyColorSelectionStrategy eSelection)
 Vertex graph coloring strategy to use.
 
PBAT_API DataWithInitializationStrategy (EInitializationStrategy strategy)
 BCD optimization initialization strategy.
 
PBAT_API DataWithRayleighDamping (Scalar kD)
 Uniform damping coefficient.
 
PBAT_API DataWithContactParameters (Scalar muC, Scalar muF, Scalar epsv)
 Normal and frictional contact parameters.
 
PBAT_API DataWithActiveSetUpdateFrequency (Index activeSetUpdateFrequency)
 Active set update frequency.
 
PBAT_API DataWithHessianDeterminantZeroUnder (Scalar zero)
 Numerical zero for hessian pseudo-singularity check.
 
PBAT_API DataWithChebyshevAcceleration (Scalar rho)
 Use Chebyshev acceleration.
 
PBAT_API DataWithAndersonAcceleration (Index window)
 Use Anderson acceleration.
 
PBAT_API DataWithBroydenMethod (Index window)
 Use Broyden method.
 
PBAT_API DataWithNesterovAcceleration (Scalar L, Index start=3)
 Use Nesterov acceleration.
 
PBAT_API DataWithTrustRegionAcceleration (Scalar eta, Scalar tau, bool bCurved=true)
 Use Trust Region acceleration.
 
PBAT_API DataConstruct (bool bValidate=true)
 Construct the simulation data.
 

Public Attributes

Matrix< kDims, Eigen::Dynamic > X
 3x|# verts| FEM nodal positions
 
IndexMatrix< 4, Eigen::Dynamic > E
 4x|# elems| FEM linear tetrahedral elements
 
IndexVectorX B
 |# verts| array of body indices
 
IndexVectorX V
 Collision vertices.
 
IndexMatrix< 3, Eigen::Dynamic > F
 3x|#collision triangles| collision triangles (on the boundary of T)
 
VectorX XVA
 
VectorX FA
 |# collision triangles| triangle areas
 
Matrix< kDims, Eigen::Dynamic > x
 3x|# verts| vertex positions
 
Matrix< kDims, Eigen::Dynamic > v
 3x|# verts| vertex velocities
 
Matrix< kDims, Eigen::Dynamic > aext
 3x|# verts| vertex external accelerations
 
VectorX m
 |# verts| vertex masses
 
Matrix< kDims, Eigen::Dynamic > xt
 3x|# verts| previous vertex positions
 
Matrix< kDims, Eigen::Dynamic > xtilde
 3x|# verts| inertial target positions
 
Matrix< kDims, Eigen::Dynamic > vt
 3x|# verts| previous vertex velocities
 
VectorX wg
 |# elems| quadrature weights
 
Matrix< 4, Eigen::Dynamic > GP
 |# elem.nodes|x|# dims*# elems| shape function gradients at elems
 
VectorX rhoe
 |# elems| mass densities
 
Matrix< 2, Eigen::Dynamic > lame
 2x|# elems| Lame coefficients
 
IndexVectorX GVGp
 |# verts+1| prefixes into GVGg
 
IndexVectorX GVGe
 
IndexVectorX GVGilocal
 
Scalar muD {1}
 Dirichlet penalty coefficient.
 
IndexVectorX dbc
 Dirichlet constrained vertices (sorted)
 
graph::EGreedyColorOrderingStrategy eOrdering
 
graph::EGreedyColorSelectionStrategy eSelection
 
IndexVectorX colors
 |# vertices| map of vertex colors
 
IndexVectorX Pptr
 
IndexVectorX Padj
 |# verts| partition vertices
 
EInitializationStrategy strategy
 BCD optimization initialization strategy.
 
Scalar kD {0}
 Uniform damping coefficient.
 
Scalar muC {1e6}
 Uniform collision penalty.
 
Scalar muF {0.3}
 Uniform friction coefficient.
 
Scalar epsv {1e-3}
 
Index mActiveSetUpdateFrequency {1}
 Active set update frequency.
 
Scalar detHZero {1e-7}
 Numerical zero for hessian pseudo-singularity check.
 
EAccelerationStrategy eAcceleration {EAccelerationStrategy::None}
 Acceleration strategy.
 
Scalar rho {1}
 Chebyshev acceleration estimated spectral radius.
 
Index mWindowSize {5}
 Anderson acceleration window size.
 
Scalar mNesterovLipschitzConstant {1}
 Nesterov acceleration Lipschitz constant.
 
Index mNesterovAccelerationStart {3}
 Nesterov acceleration start iteration.
 
Scalar eta {0.2}
 Trust Region energy reduction accuracy threshold.
 
Scalar tau {2}
 Trust Region radius increase factor.
 
bool bCurved {true}
 Use curved accelerated path, otherwise use linear path.
 

Static Public Attributes

static auto constexpr kDims = 3
 Number of spatial dimensions.
 

Detailed Description

VBD simulation configuration.

Member Function Documentation

◆ Construct()

Data & pbat::sim::vbd::Data::Construct ( bool bValidate = true)

Construct the simulation data.

Parameters
bValidateThrow on detected ill-formed inputs
Returns
Reference to this

◆ WithAcceleration()

Data & pbat::sim::vbd::Data::WithAcceleration ( Eigen::Ref< MatrixX const > const & aext)

Vertex external accelerations.

Parameters
aext3x|# verts| vertex external accelerations
Returns
Reference to this

◆ WithActiveSetUpdateFrequency()

Data & pbat::sim::vbd::Data::WithActiveSetUpdateFrequency ( Index activeSetUpdateFrequency)

Active set update frequency.

Parameters
activeSetUpdateFrequencyActive set update frequency
Returns
Reference to this

◆ WithAndersonAcceleration()

Data & pbat::sim::vbd::Data::WithAndersonAcceleration ( Index window)

Use Anderson acceleration.

Parameters
windowAnderson acceleration window size
Returns
Reference to this

◆ WithBodies()

Data & pbat::sim::vbd::Data::WithBodies ( Eigen::Ref< IndexVectorX const > const & B)

Multibody map.

Parameters
B|# vertices| array of body indices s.t. B[i] is the body index of vertex i
Returns
Reference to this

◆ WithBroydenMethod()

Data & pbat::sim::vbd::Data::WithBroydenMethod ( Index window)

Use Broyden method.

Parameters
windowBroyden method window size
Returns
Reference to this

◆ WithChebyshevAcceleration()

Data & pbat::sim::vbd::Data::WithChebyshevAcceleration ( Scalar rho)

Use Chebyshev acceleration.

Parameters
rhoChebyshev acceleration estimated spectral radius
Returns
Reference to this

◆ WithContactParameters()

Data & pbat::sim::vbd::Data::WithContactParameters ( Scalar muC,
Scalar muF,
Scalar epsv )

Normal and frictional contact parameters.

Li et al. 2020 [8]

Parameters
muCNormal contact penalty
muFFriction coefficient
epsvRelative velocity threshold for static to dynamic friction's smooth transition. See [8].
Returns
Reference to this

◆ WithDirichletConstrainedVertices()

Data & pbat::sim::vbd::Data::WithDirichletConstrainedVertices ( IndexVectorX const & dbc,
Scalar muD = Scalar(1),
bool bDbcSorted = false )

Set Dirichlet constrained vertices.

Parameters
dbcDirichlet constrained vertices
muDDirichlet penalty coefficient
bDbcSortedIf false, dbc will be sorted
Returns
Reference to this

◆ WithHessianDeterminantZeroUnder()

Data & pbat::sim::vbd::Data::WithHessianDeterminantZeroUnder ( Scalar zero)

Numerical zero for hessian pseudo-singularity check.

Parameters
zeroNumerical zero
Returns
Reference to this

◆ WithInitializationStrategy()

Data & pbat::sim::vbd::Data::WithInitializationStrategy ( EInitializationStrategy strategy)

BCD optimization initialization strategy.

Parameters
strategyInitialization strategy
Returns
Reference to this

◆ WithMaterial()

Data & pbat::sim::vbd::Data::WithMaterial ( Eigen::Ref< VectorX const > const & rhoe,
Eigen::Ref< VectorX const > const & mue,
Eigen::Ref< VectorX const > const & lambdae )

Element material parameters.

Parameters
rhoe|# elems| mass densities
mue|# elems| 1st Lame coefficients
lambdae|# elems| 2nd Lame coefficients
Returns
Reference to this

◆ WithNesterovAcceleration()

Data & pbat::sim::vbd::Data::WithNesterovAcceleration ( Scalar L,
Index start = 3 )

Use Nesterov acceleration.

Parameters
LLipschitz constant estimation for the gradient
startStart iteration for Nesterov acceleration
Returns
Reference to this

◆ WithRayleighDamping()

Data & pbat::sim::vbd::Data::WithRayleighDamping ( Scalar kD)

Uniform damping coefficient.

Parameters
kDDamping coefficient
Returns
Reference to this

◆ WithSurfaceMesh()

Data & pbat::sim::vbd::Data::WithSurfaceMesh ( Eigen::Ref< IndexVectorX const > const & V,
Eigen::Ref< IndexMatrixX const > const & F )

Collision mesh.

Parameters
VCollision vertices
F3x|# collision triangles| collision triangles (on the boundary of T)
Returns
Reference to this
Precondition
WithVolumeMesh() must be called before this

◆ WithTrustRegionAcceleration()

Data & pbat::sim::vbd::Data::WithTrustRegionAcceleration ( Scalar eta,
Scalar tau,
bool bCurved = true )

Use Trust Region acceleration.

Parameters
etaTrust Region energy reduction accuracy threshold
tauTrust Region radius increase factor
bCurvedUse curved accelerated path, otherwise use linear path. Default is true.
Returns
Reference to this
Precondition
tau > 1 and eta > 0

◆ WithVelocity()

Data & pbat::sim::vbd::Data::WithVelocity ( Eigen::Ref< MatrixX const > const & v)

Vertex velocities.

Parameters
v3x|# verts| vertex velocities
Returns
Reference to this

◆ WithVertexColoringStrategy()

Data & pbat::sim::vbd::Data::WithVertexColoringStrategy ( graph::EGreedyColorOrderingStrategy eOrdering,
graph::EGreedyColorSelectionStrategy eSelection )

Vertex graph coloring strategy to use.

Parameters
eOrderingVertex visiting order
eSelectionColor selection strategy
Returns
Reference to this

◆ WithVolumeMesh()

Data & pbat::sim::vbd::Data::WithVolumeMesh ( Eigen::Ref< MatrixX const > const & X,
Eigen::Ref< IndexMatrixX const > const & E )

Simulation mesh.

If body map has not been set, all vertices are assumed to belong to the same body.

Parameters
X3x|# vertices| vertex positions
E4x|# elements| tetrahedra
Returns
Reference to this

Member Data Documentation

◆ eOrdering

graph::EGreedyColorOrderingStrategy pbat::sim::vbd::Data::eOrdering
Initial value:
{
@ LargestDegree
Always visit the vertex with the largest degree next.
Definition Enums.h:30

Vertex graph coloring ordering strategy

◆ epsv

Scalar pbat::sim::vbd::Data::epsv {1e-3}

IPC [8] 's relative velocity threshold for static to dynamic friction's smooth transition

◆ eSelection

graph::EGreedyColorSelectionStrategy pbat::sim::vbd::Data::eSelection
Initial value:
{
@ LeastUsed
Select the least used color from the color palette.
Definition Enums.h:20

Vertex graph coloring selection strategy

◆ GVGe

IndexVectorX pbat::sim::vbd::Data::GVGe

|# of vertex-elems adjacencies| element indices s.t. GVGe[k] for GVGp[i] <= k < GVGp[i+1] gives the element e adjacent to vertex i

◆ GVGilocal

IndexVectorX pbat::sim::vbd::Data::GVGilocal

|# of vertex-elems adjacencies| local vertex indices s.t. GVGilocal[k] for GVGp[i] <= k < GVGp[i+1] gives the local vertex index of vertex i in element e=GVGe[k]

◆ Pptr

IndexVectorX pbat::sim::vbd::Data::Pptr

|# partitions+1| partition pointers, s.t. the range [Pptr[p], /< Pptr[p+1]) indexes into Padj from partition p

◆ strategy

EInitializationStrategy pbat::sim::vbd::Data::strategy
Initial value:
{
EInitializationStrategy::AdaptivePbat}

BCD optimization initialization strategy.

◆ XVA

VectorX pbat::sim::vbd::Data::XVA

|# verts| vertex areas (i.e. triangle areas distributed onto vertices for boundary integration)


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