Loading...
Searching...
No Matches
CUDAParticleSystemData2.hpp
Go to the documentation of this file.
1// This code is based on Jet framework.
2// Copyright (c) 2018 Doyub Kim
3// CubbyFlow is voxel-based fluid simulation engine for computer games.
4// Copyright (c) 2020 CubbyFlow Team
5// Core Part: Chris Ohk, Junwoo Hwang, Jihong Sin, Seungwoo Yoo
6// AI Part: Dongheon Cho, Minseo Kim
7// We are making my contributions/submissions to this project solely in our
8// personal capacity and are not conveying any rights to any intellectual
9// property of any third parties.
10
11#ifndef CUBBYFLOW_CUDA_PARTICLE_SYSTEM_DATA2_HPP
12#define CUBBYFLOW_CUDA_PARTICLE_SYSTEM_DATA2_HPP
13
14#ifdef CUBBYFLOW_USE_CUDA
15
20
21#include <cuda_runtime.h>
22
23namespace CubbyFlow
24{
26{
27 public:
30
33
35 using VectorData = CUDAArray1<float2>;
36
39
42
44 virtual ~CUDAParticleSystemData2() = default;
45
48
51
54
56 CUDAParticleSystemData2& operator=(
58
64 void Resize(size_t newNumberOfParticles);
65
67 size_t NumberOfParticles() const;
68
74 size_t AddIntData(int initialVal = 0);
75
81 size_t AddFloatData(float initialVal = 0.0f);
82
88 size_t AddVectorData(const Vector2F& initialVal = Vector2F{});
89
91 size_t NumberOfIntData() const;
92
94 size_t NumberOfFloatData() const;
95
97 size_t NumberOfVectorData() const;
98
100 ConstCUDAArrayView1<float2> Positions() const;
101
103 CUDAArrayView1<float2> Positions();
104
106 ConstCUDAArrayView1<float2> Velocities() const;
107
109 CUDAArrayView1<float2> Velocities();
110
113
116
119
122
124 ConstCUDAArrayView1<float2> VectorDataAt(size_t idx) const;
125
127 CUDAArrayView1<float2> VectorDataAt(size_t idx);
128
135 void AddParticle(const Vector2F& newPosition,
136 const Vector2F& newVelocity = Vector2F{});
137
144 void AddParticles(
147
154 void AddParticles(
157
160
163
169 const CUDAPointHashGridSearcher2* NeighborSearcher() const;
170
176 ConstCUDAArrayView1<uint32_t> NeighborLists() const;
177
179 void BuildNeighborSearcher(float maxSearchRadius);
180
182 void BuildNeighborLists(float maxSearchRadius);
183
185 void Set(const CUDAParticleSystemData2& other);
186
187 protected:
188 CUDAPointHashGridSearcher2Ptr m_neighborSearcher;
191 CUDAArray1<uint32_t> m_neighborLists;
192
193 private:
194 size_t m_numberOfParticles = 0;
195 size_t m_positionIdx;
196 size_t m_velocityIdx;
197
198 std::vector<IntData> m_intDataList;
199 std::vector<FloatData> m_floatDataList;
200 std::vector<VectorData> m_vectorDataList;
201};
202
204using CUDAParticleSystemData2Ptr = std::shared_ptr<CUDAParticleSystemData2>;
205} // namespace CubbyFlow
206
207#endif
208
209#endif
Definition pybind11Utils.hpp:21
Vector2< float > Vector2F
Definition Matrix.hpp:773
Matrix< T, Rows, 1 > Vector
Definition Matrix.hpp:738