PeriDyno 1.0.0
Loading...
Searching...
No Matches
VirtualColocationStrategy.cu
Go to the documentation of this file.
1#include "VirtualColocationStrategy.h"
2
3#include "Node.h"
4#include "ParticleSystem/Module/SummationDensity.h"
5
6namespace dyno
7{
8 IMPLEMENT_TCLASS(VirtualColocationStrategy, TDataType)
9
10 template<typename TDataType>
11 VirtualColocationStrategy<TDataType>::VirtualColocationStrategy()
12 : VirtualParticleGenerator<TDataType>()
13 {
14
15 }
16
17 template<typename TDataType>
18 VirtualColocationStrategy<TDataType>::~VirtualColocationStrategy()
19 {
20
21 }
22
23 template <typename Coord>
24 __global__ void VP2RP_RealCopytoVirtual(
25 DArray<Coord> r_posArr,
26 DArray<Coord> v_posArr
27 )
28 {
29 int pId = threadIdx.x + (blockIdx.x * blockDim.x);
30 if (pId >= r_posArr.size()) return;
31
32 v_posArr[pId] = r_posArr[pId];
33
34 }
35
36 template<typename TDataType>
37 void VirtualColocationStrategy<TDataType>::constrain()
38 {
39 std::cout << "*DUAL-ISPH::ColocationStrategy(S.A.)" << std::endl;
40
41
42 int num = this->inRPosition()->size();
43
44
45 if (this->outVirtualParticles()->isEmpty())
46 {
47 this->outVirtualParticles()->allocate();
48 }
49
50 this->outVirtualParticles()->resize(num);
51
52 cuExecute(num, VP2RP_RealCopytoVirtual,
53 this->inRPosition()->getData(),
54 this->outVirtualParticles()->getData()
55 );
56 //this->inVPosition()->connect(this->outVirtualParticles());
57 }
58
59
60
61
62
63 DEFINE_CLASS(VirtualColocationStrategy);
64
65}