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
Integrator.h
Go to the documentation of this file.
1
10
11#ifndef PBAT_GPU_VBD_INTEGRATOR_H
12#define PBAT_GPU_VBD_INTEGRATOR_H
13
14#include "PhysicsBasedAnimationToolkitExport.h"
15#include "pbat/gpu/Aliases.h"
16#include "pbat/sim/vbd/Data.h"
17#include "pbat/sim/vbd/Enums.h"
18
19#include <string_view>
20
21namespace pbat::gpu::impl::vbd {
22class Integrator;
23} // namespace pbat::gpu::impl::vbd
24
25namespace pbat {
26namespace gpu {
27namespace vbd {
28
34{
35 public:
39
45 PBAT_API
46 Integrator(Data const& data);
47
48 Integrator(Integrator const&) = delete;
49 Integrator& operator=(Integrator const&) = delete;
54 PBAT_API Integrator(Integrator&& other) noexcept;
60 PBAT_API Integrator& operator=(Integrator&& other) noexcept;
64 PBAT_API ~Integrator();
65
72 PBAT_API void Step(GpuScalar dt, GpuIndex iterations, GpuIndex substeps = GpuIndex{1});
85 PBAT_API void TracedStep(
86 GpuScalar dt,
87 GpuIndex iterations,
88 GpuIndex substeps,
89 GpuIndex t,
90 std::string_view dir = ".");
95 PBAT_API void SetPositions(Eigen::Ref<GpuMatrixX const> const& X);
100 PBAT_API void SetVelocities(Eigen::Ref<GpuMatrixX const> const& v);
105 PBAT_API void SetExternalAcceleration(Eigen::Ref<GpuMatrixX const> const& aext);
126 PBAT_API void SetBlockSize(GpuIndex blockSize);
132 PBAT_API void SetSceneBoundingBox(
133 Eigen::Vector<GpuScalar, 3> const& min,
134 Eigen::Vector<GpuScalar, 3> const& max);
139 PBAT_API GpuMatrixX GetPositions() const;
144 PBAT_API GpuMatrixX GetVelocities() const;
145
146 private:
148};
149
150} // namespace vbd
151} // namespace gpu
152} // namespace pbat
153
154#endif // PBAT_GPU_VBD_INTEGRATOR_H
VBD integrator anka2024vbd.
Definition Integrator.cuh:39
PBAT_API Integrator(Data const &data)
Construct a new Integrator object.
Definition Integrator.cu:15
PBAT_API ~Integrator()
Destructor.
Definition Integrator.cu:52
PBAT_API GpuMatrixX GetVelocities() const
Get the vertex velocities.
Definition Integrator.cu:122
PBAT_API void SetSceneBoundingBox(Eigen::Vector< GpuScalar, 3 > const &min, Eigen::Vector< GpuScalar, 3 > const &max)
Sets the scene bounding box.
Definition Integrator.cu:110
PBAT_API void SetExternalAcceleration(Eigen::Ref< GpuMatrixX const > const &aext)
Set the external accelerations.
Definition Integrator.cu:85
PBAT_API void SetRayleighDampingCoefficient(GpuScalar kD)
Set the damping coefficient for Rayleigh damping.
Definition Integrator.cu:95
PBAT_API void SetInitializationStrategy(EInitializationStrategy strategy)
Sets the initialization strategy to kick-start the time step minimization.
Definition Integrator.cu:100
PBAT_API void SetPositions(Eigen::Ref< GpuMatrixX const > const &X)
Set the vertex positions.
Definition Integrator.cu:73
PBAT_API GpuMatrixX GetPositions() const
Get the vertex positions.
Definition Integrator.cu:117
pbat::sim::vbd::EInitializationStrategy EInitializationStrategy
Initialization strategy.
Definition Integrator.h:36
PBAT_API void SetVelocities(Eigen::Ref< GpuMatrixX const > const &v)
Set the vertex velocities.
Definition Integrator.cu:79
PBAT_API void SetNumericalZeroForHessianDeterminant(GpuScalar zero)
Set threshold for zero determinant check.
Definition Integrator.cu:90
PBAT_API void TracedStep(GpuScalar dt, GpuIndex iterations, GpuIndex substeps, GpuIndex t, std::string_view dir=".")
Execute one simulation step and trace the result.
Definition Integrator.cu:63
PBAT_API void SetBlockSize(GpuIndex blockSize)
Sets the GPU thread block size, for the BDF1 minimization.
Definition Integrator.cu:105
pbat::sim::vbd::Data Data
VBD data.
Definition Integrator.h:38
PBAT_API void Step(GpuScalar dt, GpuIndex iterations, GpuIndex substeps=GpuIndex{1})
Execute one simulation step.
Definition Integrator.cu:58
Type aliases for GPU code.
Vertex Block Descent (VBD) algorithms.
Definition AndersonIntegrator.cu:13
Vertex Block Descent (VBD) anka2024vbd public GPU API.
Definition Kernels.cu:9
GPU related public functionality.
Definition Buffer.cu:16
EInitializationStrategy
Initialization strategies for the VBD time step minimization.
Definition Enums.h:9
The main namespace of the library.
Definition Aliases.h:15
float GpuScalar
Scalar type for GPU code.
Definition Aliases.h:19
Eigen::Matrix< GpuScalar, Eigen::Dynamic, Eigen::Dynamic > GpuMatrixX
Matrix type for GPU code.
Definition Aliases.h:22
std::int32_t GpuIndex
Index type for GPU code.
Definition Aliases.h:20
VBD simulation configuration.
Definition Data.h:15