Peano
Loading...
Searching...
No Matches
SpacetreeTest.cpp
Go to the documentation of this file.
1#include "SpacetreeTest.h"
2#include "../Spacetree.h"
5
7#include "peano4/utils/Loop.h"
8
9#include "tarch/la/Vector.h"
10
11
12tarch::logging::Log peano4::grid::tests::SpacetreeTest::_log("peano4::grid::tests::SpacetreeTest");
13
14
15#ifdef UseTestSpecificCompilerSettings
16#pragma optimize("",off)
17#endif
18
19
21 TestCase( "peano4::grid::tests::SpacetreeTest" ) {
22}
23
24
26 #if Dimensions==2
29
30 positionInPatch = {0,0};
31 coarsePosition = {0,0};
32 validateWithParams2( Spacetree::restrictToCoarseGrid(coarsePosition,positionInPatch), coarsePosition, positionInPatch );
33
34 positionInPatch = {0,3};
35 coarsePosition = {0,1};
36 validateWithParams2( Spacetree::restrictToCoarseGrid(coarsePosition,positionInPatch), coarsePosition, positionInPatch );
37
38 positionInPatch = {3,3};
39 coarsePosition = {1,1};
40 validateWithParams2( Spacetree::restrictToCoarseGrid(coarsePosition,positionInPatch), coarsePosition, positionInPatch );
41
42 positionInPatch = {2,2};
43 coarsePosition = {1,1};
44 validateWithParams2( Spacetree::restrictToCoarseGrid(coarsePosition,positionInPatch), coarsePosition, positionInPatch );
45
46 positionInPatch = {2,3};
47 coarsePosition = {1,1};
48 validateWithParams2( Spacetree::restrictToCoarseGrid(coarsePosition,positionInPatch), coarsePosition, positionInPatch );
49
50 positionInPatch = {0,2};
51 coarsePosition = {1,1};
52 validateWithParams2( !Spacetree::restrictToCoarseGrid(coarsePosition,positionInPatch), coarsePosition, positionInPatch );
53
54 positionInPatch = {0,2};
55 coarsePosition = {0,0};
56 validateWithParams2( Spacetree::restrictToCoarseGrid(coarsePosition,positionInPatch), coarsePosition, positionInPatch );
57 #endif
58}
59
60
62 #if Dimensions==2
63 Spacetree tree( {0.0,0.0}, {1.0,1.0} );
64 tree._id = 1;
65
66 GridVertex fineGridVertices[TwoPowerD];
67
68 fineGridVertices[0].setState( GridVertex::State::New );
69 fineGridVertices[0].setAdjacentRanks( {1,1,1,1} );
70 fineGridVertices[0].setBackupOfAdjacentRanks( {0,0,0,0} );
71
72 fineGridVertices[1].setState( GridVertex::State::Unrefined );
73 fineGridVertices[1].setAdjacentRanks( {1,1,1,1} );
74 fineGridVertices[1].setBackupOfAdjacentRanks( {1,1,1,1} );
75
76 fineGridVertices[2].setState( GridVertex::State::Unrefined );
77 fineGridVertices[2].setAdjacentRanks( {1,1,1,1} );
78 fineGridVertices[2].setBackupOfAdjacentRanks( {1,1,1,1} );
79
80 fineGridVertices[3].setState( GridVertex::State::Unrefined );
81 fineGridVertices[3].setAdjacentRanks( {1,1,1,1} );
82 fineGridVertices[3].setBackupOfAdjacentRanks( {1,1,1,1} );
83
84/*
85 vertex.toString():(state=New, adjacentRanks=[1,1,1,1],backupOfAdjacentRanks=[0,0,0,0],hasBeenAntecessorOfRefinedVertexInPreviousTreeSweep=0,isAntecessorOfRefinedVertexInCurrentTreeSweep=0,numberOfAdjacentRefinedLocalCells=1684632135,x=[0.777778,0.444444],level=3),splittingIsConsideredLocal:1,joiningIsConsideredLocal:1 (file:peano4/grid/Spacetree.cpp,line:95)
86 vertex.toString():(state=Unrefined,adjacentRanks=[1,1,1,1],backupOfAdjacentRanks=[1,1,1,1],hasBeenAntecessorOfRefinedVertexInPreviousTreeSweep=0,isAntecessorOfRefinedVertexInCurrentTreeSweep=0,numberOfAdjacentRefinedLocalCells=0, x=[0.814815,0.444444],level=3),splittingIsConsideredLocal:1,joiningIsConsideredLocal:1 (file:peano4/grid/Spacetree.cpp,line:95)
87 vertex.toString():(state=Unrefined,adjacentRanks=[1,1,1,1],backupOfAdjacentRanks=[1,1,1,1],hasBeenAntecessorOfRefinedVertexInPreviousTreeSweep=0,isAntecessorOfRefinedVertexInCurrentTreeSweep=0,numberOfAdjacentRefinedLocalCells=0, x=[0.777778,0.481481],level=3),splittingIsConsideredLocal:1,joiningIsConsideredLocal:0 (file:peano4/grid/Spacetree.cpp,line:95)
88 vertex.toString():(state=Unrefined,adjacentRanks=[1,1,1,1],backupOfAdjacentRanks=[1,1,1,1],hasBeenAntecessorOfRefinedVertexInPreviousTreeSweep=0,isAntecessorOfRefinedVertexInCurrentTreeSweep=0,numberOfAdjacentRefinedLocalCells=0, x=[0.814815,0.481481],level=3),splittingIsConsideredLocal:1,joiningIsConsideredLocal:1 (file:peano4/grid/Spacetree.cpp,line:95)
89*/
90
91 int result = tree.getNeighbourTrees( fineGridVertices, 0, true );
92 validateEquals( result, -1 );
93
94 result = tree.getNeighbourTrees( fineGridVertices, 1, true );
95 validateEquals( result, -1 );
96
97 result = tree.getNeighbourTrees( fineGridVertices, 2, true );
98 validateEquals( result, -1 );
99
100 result = tree.getNeighbourTrees( fineGridVertices, 3, true );
101 validateEquals( result, -1 );
102 #endif
103}
104
105
107 testMethod( testRestrictToCoarseGrid );
108 testMethod( testGetAdjacentDomainIds );
109}
110
111
112#ifdef UseTestSpecificCompilerSettings
113#pragma optimize("",on)
114#endif
#define TwoPowerD
Definition Globals.h:19
#define testMethod(name)
Run a test method and check for errors.
Definition TestMacros.h:24
#define validateWithParams2(booleanExpr, param0, param1)
Definition TestMacros.h:69
#define validateEquals(actualValue, validValue)
Definition TestMacros.h:299
Represents one tree.
Definition Spacetree.h:40
static bool restrictToCoarseGrid(const tarch::la::Vector< Dimensions, int > &coarseVertexPosition, const tarch::la::Vector< Dimensions, int > &fineVertexPosition)
Determines whether to restrict a vertex to the coarser level or not.
virtual void run() override
This routine is triggered by the TestCaseCollection.
static tarch::logging::Log _log
Logging device.
Log Device.
Definition Log.h:516
void setBackupOfAdjacentRanks(const tarch::la::Vector< TwoPowerD, int > &value)
void setState(State value)
void setAdjacentRanks(const tarch::la::Vector< TwoPowerD, int > &value)
Simple vector class.
Definition Vector.h:150