1#ifndef PBAT_GPU_IMPL_XPBD_INTEGRATOR_H
2#define PBAT_GPU_IMPL_XPBD_INTEGRATOR_H
6#include "pbat/gpu/impl/common/Buffer.cuh"
7#include "pbat/gpu/impl/contact/VertexTriangleMixedCcdDcd.cuh"
8#include "pbat/gpu/impl/geometry/Bvh.cuh"
9#include "pbat/sim/xpbd/Data.h"
10#include "pbat/sim/xpbd/Enums.h"
23 using EConstraint = pbat::sim::xpbd::EConstraint;
24 static auto constexpr kConstraintTypes =
static_cast<int>(EConstraint::NumberOfConstraintTypes);
46 void SetCompliance(Eigen::Ref<GpuMatrixX const>
const&
alpha, EConstraint eConstraint);
59 Eigen::Vector<GpuScalar, 3>
const& min,
60 Eigen::Vector<GpuScalar, 3>
const& max);
95 std::array<common::Buffer<GpuScalar>, kConstraintTypes>
99 std::array<common::Buffer<GpuScalar>, kConstraintTypes>
103 std::array<common::Buffer<GpuScalar>, kConstraintTypes>
119 Eigen::Vector<GpuScalar, 3> Smin,
Smax;
common::Buffer< Index > Cptr
Cluster -> constraint map pointers.
Definition Integrator.cuh:113
GpuScalar muS
Coulomb static friction coefficient.
Definition Integrator.cuh:117
std::vector< Index > SGptr
Clustered constraint partitions' pointers.
Definition Integrator.cuh:111
common::Buffer< GpuScalar > DmInv
3x3x|#elements| array of material shape matrix inverses
Definition Integrator.cuh:93
contact::VertexTriangleMixedCcdDcd cd
Contact detection system.
Definition Integrator.cuh:85
Eigen::Vector< GpuScalar, 3 > Smax
Scene bounding box.
Definition Integrator.cuh:119
common::Buffer< GpuScalar > gamma
Definition Integrator.cuh:94
GpuScalar muK
Coulomb dynamic friction coefficient.
Definition Integrator.cuh:118
common::Buffer< GpuIndex > Cadj
Cluster -> constraint map constraints.
Definition Integrator.cuh:114
common::Buffer< GpuIndex, 4 > T
Tetrahedral simplices.
Definition Integrator.cuh:83
common::Buffer< GpuScalar, 3 > x
Vertex/particle positions.
Definition Integrator.cuh:82
common::Buffer< GpuScalar, 3 > xb
Vertex/particle positions buffer.
Definition Integrator.cuh:88
void SetFrictionCoefficients(GpuScalar muS, GpuScalar muK)
Definition Integrator.cu:198
common::Buffer< GpuScalar > muC
Collision vertex penalties.
Definition Integrator.cuh:116
common::Buffer< GpuScalar > lame
Lame coefficients.
Definition Integrator.cuh:92
Integrator(Data const &data)
Construct a new Integrator Impl object.
Definition Integrator.cu:21
void SetSceneBoundingBox(Eigen::Vector< GpuScalar, 3 > const &min, Eigen::Vector< GpuScalar, 3 > const &max)
Definition Integrator.cu:204
std::vector< Index > Pptr
Constraint partitions' pointers.
Definition Integrator.cuh:108
common::Buffer< GpuScalar > const & GetCompliance(EConstraint eConstraint) const
Definition Integrator.cu:217
void SetCompliance(Eigen::Ref< GpuMatrixX const > const &alpha, EConstraint eConstraint)
Definition Integrator.cu:193
common::Buffer< GpuScalar, 3 > xt
Vertex/particle positions at time t.
Definition Integrator.cuh:87
common::Buffer< GpuScalar, 3 > v
Vertex/particle velocities.
Definition Integrator.cuh:89
common::Buffer< GpuIndex > SGadj
Clustered constraint partitions' constraints.
Definition Integrator.cuh:112
common::Buffer< GpuScalar > minv
Vertex/particle mass inverses.
Definition Integrator.cuh:91
std::array< common::Buffer< GpuScalar >, kConstraintTypes > lagrange
Definition Integrator.cuh:96
GpuIndex mActiveSetUpdateFrequency
Active set update frequency.
Definition Integrator.cuh:120
common::Buffer< GpuScalar > const & GetLagrangeMultiplier(EConstraint eConstraint) const
Definition Integrator.cu:212
void Step(GpuScalar dt, GpuIndex iterations, GpuIndex substeps)
Definition Integrator.cu:88
std::array< common::Buffer< GpuScalar >, kConstraintTypes > beta
Definition Integrator.cuh:104
common::Buffer< GpuIndex > Padj
Constraint partitions' constraints.
Definition Integrator.cuh:109
std::array< common::Buffer< GpuScalar >, kConstraintTypes > alpha
Definition Integrator.cuh:100
common::Buffer< GpuScalar, 3 > aext
Vertex/particle external forces.
Definition Integrator.cuh:90
Type aliases for GPU code.
GPU algorithm implementations.
Definition VertexTriangleMixedCcdDcd.h:21
GPU related public functionality.
Definition Buffer.cu:16
The main namespace of the library.
Definition Aliases.h:15
float GpuScalar
Scalar type for GPU code.
Definition Aliases.h:19
std::int32_t GpuIndex
Index type for GPU code.
Definition Aliases.h:20