summaryrefslogtreecommitdiffstats
path: root/src/metis-test.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/metis-test.cpp')
-rw-r--r--src/metis-test.cpp57
1 files changed, 57 insertions, 0 deletions
diff --git a/src/metis-test.cpp b/src/metis-test.cpp
new file mode 100644
index 0000000..c48d8ff
--- /dev/null
+++ b/src/metis-test.cpp
@@ -0,0 +1,57 @@
+/*
+ * This file is part of MXE. See LICENSE.md for licensing information.
+ *
+ * taken from: https://gist.github.com/erikzenker/c4dc42c8d5a8c1cd3e5a
+ */
+
+
+#include <cstddef> /* NULL */
+#include <metis.h>
+#include <iostream>
+
+
+// Install metis from:
+// http://glaros.dtc.umn.edu/gkhome/fetch/sw/metis/metis-5.1.0.tar.gz
+
+// Build with
+// g++ metis.cc -lmetis
+
+int main(){
+
+ idx_t nVertices = 6;
+ idx_t nEdges = 7;
+ idx_t nWeights = 1;
+ idx_t nParts = 2;
+
+ idx_t objval;
+ idx_t part[nVertices];
+
+
+ // Indexes of starting points in adjacent array
+ idx_t xadj[nVertices+1] = {0,2,5,7,9,12,14};
+
+ // Adjacent vertices in consecutive index order
+ idx_t adjncy[2 * nEdges] = {1,3,0,4,2,1,5,0,4,3,1,5,4,2};
+
+ // Weights of vertices
+ // if all weights are equal then can be set to NULL
+ idx_t vwgt[nVertices * nWeights];
+
+
+ // int ret = METIS_PartGraphRecursive(&nVertices,& nWeights, xadj, adjncy,
+ // NULL, NULL, NULL, &nParts, NULL,
+ // NULL, NULL, &objval, part);
+
+ int ret = METIS_PartGraphKway(&nVertices,& nWeights, xadj, adjncy,
+ NULL, NULL, NULL, &nParts, NULL,
+ NULL, NULL, &objval, part);
+
+ std::cout << ret << std::endl;
+
+ for(unsigned part_i = 0; part_i < nVertices; part_i++){
+ std::cout << part_i << " " << part[part_i] << std::endl;
+ }
+
+
+ return 0;
+}