7 std::cout <<
"Prime Factors of " << inNum <<
":" << std::endl;
8 std::deque<size_t>::const_iterator facIt = inFac.begin();
9 while(facIt != inFac.end()){
10 std::cout << *facIt++;
11 if(facIt != inFac.end())
14 std::cout << std::endl;
18 std::cout <<
"Partition(" << rank <<
"," << numPart <<
"):";
20 std::cout << std::endl;
32 std::vector<size_t> domainStart(3,0);
33 std::vector<size_t> domainSize1(3,16);
35 std::vector<bool> partDirection;
37 std::vector<int> numPartitions;
38 std::vector<bool> partitionTest(16,
false);
39 partitionTest[1] =
true;
43 partitionTest[0] =
true;
44 if(partInterval != testInterval1)
45 partitionTest[0] =
false;
47 numPartitions.resize(0);
48 partDirection.resize(0);
52 partitionTest[1] =
true;
53 if(partInterval[0] != testInterval1[0] &&
54 partInterval[1] != testInterval1[1] &&
55 partInterval[2].second != 7)
56 partitionTest[1] =
false;
58 numPartitions.resize(0);
62 partitionTest[2] =
true;
63 if(partInterval[0] != testInterval1[0] &&
64 partInterval[1] != testInterval1[1] &&
65 partInterval[2].first != 8)
66 partitionTest[2] =
false;
68 partDirection.resize(0);
69 numPartitions.resize(0);
73 partitionTest[3] =
true;
74 if(partInterval[0] != testInterval1[0] &&
75 partInterval[1] != testInterval1[1] &&
76 partInterval[2].second != 5)
77 partitionTest[3] =
false;
79 numPartitions.resize(0);
83 partitionTest[3] =
true;
84 if(partInterval[2].first != 6 &&
85 partInterval[2].second != 10 &&
86 partInterval[1] != testInterval1[1] &&
87 partInterval[0] != testInterval1[0])
88 partitionTest[3] =
false;
90 numPartitions.resize(0);
94 partitionTest[3] =
true;
95 if(partInterval[2].first != 11 &&
96 partInterval[2].second != 15 &&
97 partInterval[1] != testInterval1[1] &&
98 partInterval[0] != testInterval1[0])
99 partitionTest[3] =
false;
101 partDirection.resize(0);
102 numPartitions.resize(0);
105 std::cout <<
"Test 4 failed." << std::endl;
108 partitionTest[4] =
true;
109 if(partInterval[2].second != 7 &&
110 partInterval[1].second != 7 &&
111 partInterval[0] != testInterval1[0])
112 partitionTest[4] =
false;
114 numPartitions.resize(0);
119 partitionTest[5] =
true;
120 if(partInterval[1].first != 8 &&
121 partInterval[2].second != 7 &&
122 partInterval[0] != testInterval1[0])
123 partitionTest[5] =
false;
125 numPartitions.resize(0);
130 partitionTest[6] =
true;
131 if(partInterval[1].second != 7 &&
132 partInterval[2].second != 15 &&
133 partInterval[0] != testInterval1[0])
134 partitionTest[6] =
false;
136 numPartitions.resize(0);
141 partitionTest[7] =
true;
142 if(partInterval[1].first != 8 &&
143 partInterval[2].first != 8 &&
144 partInterval[0] != testInterval1[0])
145 partitionTest[7] =
false;
147 partDirection.resize(0);
148 numPartitions.resize(0);
152 partitionTest[8] =
true;
153 if(partInterval[0].second != 7 &&
154 partInterval[1].second != 7 &&
155 partInterval[2].second != 7)
156 partitionTest[8] =
false;
158 numPartitions.resize(0);
162 partitionTest[9] =
true;
163 if(partInterval[0].second != 15 &&
164 partInterval[1].second != 7 &&
165 partInterval[2].second != 7)
166 partitionTest[9] =
false;
168 numPartitions.resize(0);
172 partitionTest[10] =
true;
173 if(partInterval[0].second != 7 &&
174 partInterval[1].second != 15 &&
175 partInterval[2].second != 7)
176 partitionTest[10] =
false;
178 numPartitions.resize(0);
182 partitionTest[11] =
true;
183 if(partInterval[0].second != 15 &&
184 partInterval[1].second != 15 &&
185 partInterval[2].second != 7)
186 partitionTest[11] =
false;
188 numPartitions.resize(0);
192 partitionTest[12] =
true;
193 if(partInterval[0].second != 7 &&
194 partInterval[1].second != 7 &&
195 partInterval[2].second != 15)
196 partitionTest[12] =
false;
198 numPartitions.resize(0);
202 partitionTest[13] =
true;
203 if(partInterval[0].second != 15 &&
204 partInterval[1].second != 7 &&
205 partInterval[2].second != 15)
206 partitionTest[13] =
false;
208 numPartitions.resize(0);
212 partitionTest[14] =
true;
213 if(partInterval[0].second != 7 &&
214 partInterval[1].second != 15 &&
215 partInterval[2].second != 15)
216 partitionTest[14] =
false;
218 numPartitions.resize(0);
222 partitionTest[15] =
true;
223 if(partInterval[0].second != 15 &&
224 partInterval[1].second != 15 &&
225 partInterval[2].second != 15)
226 partitionTest[15] =
false;
229 serialUnitResults.
UpdateResult(
"PCPP::SimplePartitionInterval",testPass);
230 serialUnitResults.
UpdateResult(
"PCPP::SimplePartitionInterval-1",partitionTest[0]);
231 serialUnitResults.
UpdateResult(
"PCPP::SimplePartitionInterval-2-0",partitionTest[1]);
232 serialUnitResults.
UpdateResult(
"PCPP::SimplePartitionInterval-2-1",partitionTest[2]);
233 serialUnitResults.
UpdateResult(
"PCPP::SimplePartitionInterval-3",partitionTest[3]);
234 serialUnitResults.
UpdateResult(
"PCPP::SimplePartitionInterval-4-0",partitionTest[4]);
235 serialUnitResults.
UpdateResult(
"PCPP::SimplePartitionInterval-4-1",partitionTest[5]);
236 serialUnitResults.
UpdateResult(
"PCPP::SimplePartitionInterval-4-2",partitionTest[6]);
237 serialUnitResults.
UpdateResult(
"PCPP::SimplePartitionInterval-4-3",partitionTest[7]);
238 serialUnitResults.
UpdateResult(
"PCPP::SimplePartitionInterval-8-0",partitionTest[8]);
239 serialUnitResults.
UpdateResult(
"PCPP::SimplePartitionInterval-8-1",partitionTest[9]);
240 serialUnitResults.
UpdateResult(
"PCPP::SimplePartitionInterval-8-2",partitionTest[10]);
241 serialUnitResults.
UpdateResult(
"PCPP::SimplePartitionInterval-8-3",partitionTest[11]);
242 serialUnitResults.
UpdateResult(
"PCPP::SimplePartitionInterval-8-4",partitionTest[12]);
243 serialUnitResults.
UpdateResult(
"PCPP::SimplePartitionInterval-8-5",partitionTest[13]);
244 serialUnitResults.
UpdateResult(
"PCPP::SimplePartitionInterval-8-6",partitionTest[14]);
245 serialUnitResults.
UpdateResult(
"PCPP::SimplePartitionInterval-8-7",partitionTest[15]);
int SimplePartitionInterval(const pcpp::IndexIntervalType &inInterval, std::vector< bool > partDirection, int partID, int numPart, pcpp::IndexIntervalType &outInterval, std::vector< int > &numPartitions)
Multi-dimensional interval partitioning (non-MPI)
void TestVarious(ix::test::results &serialUnitResults)
Encapsulating class for collections of test results.
void OutputTestPartition(unsigned int rank, unsigned int numPart, pcpp::IndexIntervalType &partInterval)
Testing constructs for unit testing.
void UpdateResult(const std::string &name, const ValueType &result)
Updates an existing test result.
std::ostream & PrettyPrint(std::ostream &outStream) const
Simple Block Structured Mesh object.
void OutputFactors(const std::deque< size_t > &inFac, size_t inNum)