PeriDyno 1.0.0
Loading...
Searching...
No Matches
VirtualParticleShiftingStrategy.h
Go to the documentation of this file.
1
16
17
18#pragma once
22#include "Collision/NeighborPointQuery.h"
23
24namespace dyno {
25
26 template<typename TDataType> class SummationDensity;
27 template<typename TDataType> class NeighborPointQuery;
28 /*
29 *@Brief: Particle shifting strategy in Dual-particle SPH method. (Virtual paritlce genorator).
30 *@Note : Implementation is based on PBF method (Position Base Fluid.)
31 *@Paper: Liu et al., ACM Trans Graph (TOG). 2024. (A Dual-Particle Approach for Incompressible SPH Fluids) doi.org/10.1145/3649888
32 */
33
34 template<typename TDataType>
36 {
37
39
40
41 public:
42 typedef typename TDataType::Real Real;
43 typedef typename TDataType::Coord Coord;
44
47
48 void constrain() override;
49
51
53
54 //public:
55 DEF_VAR_IN(Real, TimeStep, "Time Step");
56
57 DEF_VAR(int, IterationNumber, 5, "Iteration number of the PBD solver");
58
59 DEF_VAR(Real, RestDensity, Real(1000), "Reference density");
60
61 DEF_VAR(Real, SamplingDistance, Real(0.005), "");
62
63 DEF_VAR(Real, SmoothingLength, Real(0.0075), "");
64
65 //DEF_VAR(Real, VirtualRestDensity, Real(1000.0f), "");
66
67 DEF_VAR_IN(uint, FrameNumber, "Frame number");
68
69
73 DEF_ARRAY_IN(Coord, RPosition, DeviceType::GPU, "Input real particle position");
74
75 /*
76 *@brief Virtual neighbors of Virtual Particles
77 */
78 DEF_ARRAYLIST_OUT(int, VVNeighborIds, DeviceType::GPU, "Return virtual particles' virtual neighbor ids");
79
80
84 DEF_ARRAY_OUT(Real, VDensity, DeviceType::GPU, "Final particle density");
85
86 //DEF_EMPTY_IN_ARRAY(Type, ParticleType, DeviceType::GPU, "Particle Type");
87
88 private:
92 // DArray<Coord> m_position_old;
93
95
96 private:
97 //std::shared_ptr<SummationDensity<TDataType>> m_v_summation;
98
99 std::shared_ptr <SummationDensity<TDataType>> m_vv_density;
100 std::shared_ptr <NeighborPointQuery<TDataType>> m_vv_nbrQuery;
101 };
102}
#define DECLARE_TCLASS(name, T1)
Definition Object.h:87
The standard summation density.
DEF_VAR_IN(uint, FrameNumber, "Frame number")
DEF_VAR(int, IterationNumber, 5, "Iteration number of the PBD solver")
DEF_ARRAY_OUT(Real, VDensity, DeviceType::GPU, "Final particle density")
Final particle densities.
DEF_VAR_IN(Real, TimeStep, "Time Step")
std::shared_ptr< NeighborPointQuery< TDataType > > m_vv_nbrQuery
DEF_VAR(Real, SamplingDistance, Real(0.005), "")
DEF_ARRAYLIST_OUT(int, VVNeighborIds, DeviceType::GPU, "Return virtual particles' virtual neighbor ids")
DEF_ARRAY_IN(Coord, RPosition, DeviceType::GPU, "Input real particle position")
Real Particle positions.
DEF_VAR(Real, RestDensity, Real(1000), "Reference density")
DEF_VAR(Real, SmoothingLength, Real(0.0075), "")
std::shared_ptr< SummationDensity< TDataType > > m_vv_density
This is an implementation of AdditiveCCD based on peridyno.
Definition Array.h:25
Array< T, DeviceType::GPU > DArray
Definition Array.inl:89
unsigned int uint
Definition VkProgram.h:14