1#include "VirtualColocationStrategy.h"
4#include "ParticleSystem/Module/SummationDensity.h"
8 IMPLEMENT_TCLASS(VirtualColocationStrategy, TDataType)
10 template<typename TDataType>
11 VirtualColocationStrategy<TDataType>::VirtualColocationStrategy()
12 : VirtualParticleGenerator<TDataType>()
17 template<typename TDataType>
18 VirtualColocationStrategy<TDataType>::~VirtualColocationStrategy()
23 template <typename Coord>
24 __global__ void VP2RP_RealCopytoVirtual(
25 DArray<Coord> r_posArr,
26 DArray<Coord> v_posArr
29 int pId = threadIdx.x + (blockIdx.x * blockDim.x);
30 if (pId >= r_posArr.size()) return;
32 v_posArr[pId] = r_posArr[pId];
36 template<typename TDataType>
37 void VirtualColocationStrategy<TDataType>::constrain()
39 std::cout << "*DUAL-ISPH::ColocationStrategy(S.A.)" << std::endl;
42 int num = this->inRPosition()->size();
45 if (this->outVirtualParticles()->isEmpty())
47 this->outVirtualParticles()->allocate();
50 this->outVirtualParticles()->resize(num);
52 cuExecute(num, VP2RP_RealCopytoVirtual,
53 this->inRPosition()->getData(),
54 this->outVirtualParticles()->getData()
56 //this->inVPosition()->connect(this->outVirtualParticles());
63 DEFINE_CLASS(VirtualColocationStrategy);