Finished ordering implementation

release/4.3a0
Andrew Melim 2014-10-14 23:46:12 -04:00
parent ad74a4b8c9
commit 99caf8833a
2 changed files with 19 additions and 10 deletions

View File

@ -207,18 +207,28 @@ namespace gtsam {
vector<int> adj = met.adj();
vector<int> perm, iperm;
idx_t size = xadj.size() - 1;
for (int i = 0; i < size; i++)
{
perm.push_back(0);
iperm.push_back(0);
}
int outputError;
idx_t size = xadj.size();
outputError = METIS_NodeND(&size, xadj.data(), adj.data(), NULL, NULL, perm.data(), iperm.data());
outputError = METIS_NodeND(&size, &xadj[0], &adj[0], NULL, NULL, &perm[0], &iperm[0]);
Ordering result;
if (outputError != METIS_OK)
{
std::cout << "METIS ordering error!\n";
std::cout << "METIS failed during Nested Dissection ordering!\n";
return result;
}
result.resize(size);
for (size_t j = 0; j < size; ++j)
result[j] = perm[j];
return result;
}

View File

@ -121,12 +121,11 @@ TEST(Ordering, csr_format) {
TEST(Ordering, metis) {
SymbolicFactorGraph sfg;
sfg.push_factor(0, 1);
sfg.push_factor(1, 2);
sfg.push_factor(2, 3);
sfg.push_factor(3, 4);
Ordering::METIS(sfg);
sfg.push_factor(0, 1);
sfg.push_factor(1, 2);
Ordering metis = Ordering::METIS(sfg);
}
/* ************************************************************************* */
int main() { TestResult tr; return TestRegistry::runAllTests(tr); }