34#include <gmock/gmock.h>
40#include "../../testUtilitiesGPU.h"
54namespace index_rearrangement_tests
73 uint numberOfSendIndices;
74 uint numberOfRecvIndices;
84 this->numberOfSendIndices = numberOfSendIndices;
88 return numberOfSendIndices;
92 return numberOfRecvIndices;
96 this->numberOfRecvIndices = numberOfRecvIndices;
103 std::vector<uint> fluidNodeIndicesBorder;
108 :
GridImp(object, startX, startY, startZ, endX, endY, endZ, delta, d, level)
115 SPtr<GridImpDouble> grid(std::make_shared<GridImpDouble>(
object, startX, startY, startZ, endX, endY, endZ, delta, d, level));
125using namespace index_rearrangement_tests;
167 void SetUp()
override
171 std::shared_ptr<LevelGridBuilderDouble> builder = std::make_shared<LevelGridBuilderDouble>(grid);
188 testSubject = std::make_unique<IndexRearrangementForStreams>(
207 <<
"sendProcessNeighborX[].index does not match the expected vector";
219 for (
int i = 0;
i < (
int)receivedIndices.size(); ++
i) {
231 this->receivedIndices = receivedIndices;
235 std::vector<uint> receivedIndices;
244 sut = std::make_unique<IndexRearrangementForStreams>(
para,
builder, Communicator);
255 std::shared_ptr<LevelGridBuilderDouble>
builder;
256 std::unique_ptr<IndexRearrangementForStreams>
sut;
264 void SetUp()
override
273 builder = std::make_shared<LevelGridBuilderDouble>(grid);
281 createTestSubject(communicator);
291 createTestSubject(communicator);
301 std::vector<uint>
expected = { 10 };
305 createTestSubject(communicator);
315 std::vector<uint>
expected = { 10, 20, 30 };
319 createTestSubject(communicator);
330 std::vector<uint>
expected = { 10, 20, 30, 40, 50 };
333 createTestSubject(communicator);
343 std::vector<uint>
expected = { 0, 20, 30, 40 };
347 createTestSubject(communicator);
390 void SetUp()
override
394 std::shared_ptr<LevelGridBuilderDouble> builder = std::make_shared<LevelGridBuilderDouble>(grid);
399 testSubject = std::make_unique<IndexRearrangementForStreams>(
static SPtr< GridImpDouble > makeShared()
void receiveSend(real *buffer_send, int size_buffer_send, real *buffer_receive, int size_buffer_recv, int neighbor_rank) const override
void receiveSend(uint *buffer_receive, int, int, const uint *, int, int) const override
void setReceivedIndices(const std::vector< uint > &receivedIndices)
class that is used to rearrange the arrays of node indices for communication between gpus....
ProcessNeighbor27 sendProcess
std::vector< uint > act()
std::vector< uint > sendIndicesForCommAfterFtoCPositions
std::shared_ptr< LevelGridBuilderDouble > builder
const uint numberOfProcessNeighbors
std::unique_ptr< IndexRearrangementForStreams > sut
void createTestSubject(vf::parallel::Communicator &Communicator)
ProcessNeighbor27 recvProcess
const int indexOfProcessNeighbor
ProcessNeighbor27 neighbor
std::unique_ptr< IndexRearrangementForStreams > testSubject
RecvIndicesForCommAfterFtoC ri
std::unique_ptr< IndexRearrangementForStreams > testSubject
SendIndicesForCommAfterFtoCX sendIndices
static SPtr< GridImpDouble > makeShared(SPtr< Object > object, real startX, real startY, real startZ, real endX, real endY, real endZ, real delta, Distribution d, uint level)
GridImpDouble(SPtr< Object > object, real startX, real startY, real startZ, real endX, real endY, real endZ, real delta, Distribution d, uint level)
uint getNumberOfSendIndices(int direction, uint level) override
LevelGridBuilderDouble(SPtr< Grid > grid)
uint getNumberOfReceiveIndices(int direction, uint level) override
void setNumberOfSendIndices(uint numberOfSendIndices)
SPtr< Grid > getGrid(uint level) override
void setNumberOfRecvIndices(uint numberOfRecvIndices)
An abstract class for communication between processes in parallel computation.
A class implements Communicator for shared memory.
std::shared_ptr< T > SPtr
SPtr< Parameter > createParameterForLevel(uint level)
bool vectorsAreEqual(const T *vector1, const std::vector< T > &vectorExpected)
TEST_F(GridGeneratorTests_initalValuesDomainDecompostion, whenNoCommunication_sendProcessNeighborShouldNotExist)
const int indexOfProcessNeighbor
std::vector< uint > sendIndicesForCommAfterFtoCPositions
int numberOfRecvNodesAfterFtoC
const int numberOfProcessNeighbors
std::vector< uint > recvIndices
std::vector< uint > sendIndicesForCommAfterFtoCPositions
const int numberOfProcessNeighbors
std::vector< uint > interpolationCellFineToCoarseCoarse
std::vector< uint > sendIndices
const std::vector< uint > sendProcessNeighborX_expected
const int indexOfProcessNeighbor
const int numberOfSendNodesAfterFtoC_expected
std::vector< uint > interpolationCellCoarseToFineCoarse
const std::vector< uint > sendIndicesForCommAfterFtoCPositions_expected