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::gpu::impl::xpbd::Integrator Class Reference

Public Types

using EConstraint = pbat::sim::xpbd::EConstraint
 
using Data = pbat::sim::xpbd::Data
 

Public Member Functions

 Integrator (Data const &data)
 Construct a new Integrator Impl object.
 
void Step (GpuScalar dt, GpuIndex iterations, GpuIndex substeps)
 
void SetCompliance (Eigen::Ref< GpuMatrixX const > const &alpha, EConstraint eConstraint)
 
void SetFrictionCoefficients (GpuScalar muS, GpuScalar muK)
 
void SetSceneBoundingBox (Eigen::Vector< GpuScalar, 3 > const &min, Eigen::Vector< GpuScalar, 3 > const &max)
 
common::Buffer< GpuScalar > const & GetLagrangeMultiplier (EConstraint eConstraint) const
 
common::Buffer< GpuScalar > const & GetCompliance (EConstraint eConstraint) const
 
void ProjectBlockNeoHookeanConstraints (GpuScalar dt, GpuScalar dt2)
 
void ProjectClusteredBlockNeoHookeanConstraints (GpuScalar dt, GpuScalar dt2)
 
void ProjectCollisionConstraints (GpuScalar dt, GpuScalar dt2)
 

Public Attributes

common::Buffer< GpuScalar, 3 > x
 Vertex/particle positions.
 
common::Buffer< GpuIndex, 4 > T
 Tetrahedral simplices.
 
contact::VertexTriangleMixedCcdDcd cd
 Contact detection system.
 
common::Buffer< GpuScalar, 3 > xt
 Vertex/particle positions at time t.
 
common::Buffer< GpuScalar, 3 > xb
 Vertex/particle positions buffer.
 
common::Buffer< GpuScalar, 3 > v
 Vertex/particle velocities.
 
common::Buffer< GpuScalar, 3 > aext
 Vertex/particle external forces.
 
common::Buffer< GpuScalarminv
 Vertex/particle mass inverses.
 
common::Buffer< GpuScalarlame
 Lame coefficients.
 
common::Buffer< GpuScalarDmInv
 3x3x|#elements| array of material shape matrix inverses
 
common::Buffer< GpuScalargamma
 
std::array< common::Buffer< GpuScalar >, kConstraintTypes > lagrange
 
std::array< common::Buffer< GpuScalar >, kConstraintTypes > alpha
 
std::array< common::Buffer< GpuScalar >, kConstraintTypes > beta
 
std::vector< IndexPptr
 Constraint partitions' pointers.
 
common::Buffer< GpuIndexPadj
 Constraint partitions' constraints.
 
std::vector< IndexSGptr
 Clustered constraint partitions' pointers.
 
common::Buffer< GpuIndexSGadj
 Clustered constraint partitions' constraints.
 
common::Buffer< IndexCptr
 Cluster -> constraint map pointers.
 
common::Buffer< GpuIndexCadj
 Cluster -> constraint map constraints.
 
common::Buffer< GpuScalarmuC
 Collision vertex penalties.
 
GpuScalar muS
 Coulomb static friction coefficient.
 
GpuScalar muK
 Coulomb dynamic friction coefficient.
 
Eigen::Vector< GpuScalar, 3 > Smin
 
Eigen::Vector< GpuScalar, 3 > Smax
 Scene bounding box.
 
GpuIndex mActiveSetUpdateFrequency
 Active set update frequency.
 

Static Public Attributes

static auto constexpr kConstraintTypes = static_cast<int>(EConstraint::NumberOfConstraintTypes)
 

Constructor & Destructor Documentation

◆ Integrator()

pbat::gpu::impl::xpbd::Integrator::Integrator ( Data const & data)

Construct a new Integrator Impl object.

Parameters
data

Member Function Documentation

◆ GetCompliance()

common::Buffer< GpuScalar > const & pbat::gpu::impl::xpbd::Integrator::GetCompliance ( EConstraint eConstraint) const
Parameters
eConstraint
Returns

◆ GetLagrangeMultiplier()

common::Buffer< GpuScalar > const & pbat::gpu::impl::xpbd::Integrator::GetLagrangeMultiplier ( EConstraint eConstraint) const
Parameters
eConstraint
Returns

◆ SetCompliance()

void pbat::gpu::impl::xpbd::Integrator::SetCompliance ( Eigen::Ref< GpuMatrixX const > const & alpha,
EConstraint eConstraint )
Parameters
alpha
eConstraint

◆ SetFrictionCoefficients()

void pbat::gpu::impl::xpbd::Integrator::SetFrictionCoefficients ( GpuScalar muS,
GpuScalar muK )
Parameters
muS
muK

◆ SetSceneBoundingBox()

void pbat::gpu::impl::xpbd::Integrator::SetSceneBoundingBox ( Eigen::Vector< GpuScalar, 3 > const & min,
Eigen::Vector< GpuScalar, 3 > const & max )
Parameters
min
max

◆ Step()

void pbat::gpu::impl::xpbd::Integrator::Step ( GpuScalar dt,
GpuIndex iterations,
GpuIndex substeps )
Parameters
dt
iterations
substeps

Member Data Documentation

◆ alpha

std::array<common::Buffer<GpuScalar>, kConstraintTypes> pbat::gpu::impl::xpbd::Integrator::alpha

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

◆ beta

std::array<common::Buffer<GpuScalar>, kConstraintTypes> pbat::gpu::impl::xpbd::Integrator::beta

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

◆ gamma

common::Buffer<GpuScalar> pbat::gpu::impl::xpbd::Integrator::gamma
  1. + mu/lambda, where mu,lambda are Lame coefficients

◆ lagrange

std::array<common::Buffer<GpuScalar>, kConstraintTypes> pbat::gpu::impl::xpbd::Integrator::lagrange

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


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