53 #include "Epetra_ConfigDefs.h"
55 #include <Epetra_MpiComm.h>
57 #include <Epetra_SerialComm.h>
59 #include <Epetra_MultiVector.h>
65 int main(
int narg,
char *arg[])
67 Tpetra::ScopeGuard scope(&narg, &arg);
68 const Teuchos::RCP<const Teuchos::Comm<int> > comm = Tpetra::getDefaultComm();
73 const int num_parts = 5;
76 int rank = comm->getRank();
79 Teuchos::ParameterList params(
"test params");
80 params.set(
"algorithm",
"multijagged");
81 params.set(
"num_global_parts", num_parts);
84 std::vector<gid_t> global_ids(N);
85 std::iota(global_ids.begin(), global_ids.end(), rank * N);
88 Epetra_MpiComm epetra_comm(MPI_COMM_WORLD);
90 Epetra_SerialComm epetra_comm;
93 Epetra_BlockMap map(-1, N, 1, 0, epetra_comm);
95 typedef Epetra_MultiVector mv_t;
96 Teuchos::RCP<mv_t> mv = Teuchos::rcp(
new mv_t(map, dim));
98 std::vector<int> stride;
99 std::vector<const double *>
weights;
100 Teuchos::RCP<const mv_t> cmv = Teuchos::rcp_const_cast<
const mv_t>(mv);
104 Teuchos::RCP<inputAdapter_t> ia =
105 Teuchos::rcp(
new inputAdapter_t(cmv, weights, stride));
107 Teuchos::RCP<Zoltan2::PartitioningProblem<inputAdapter_t>> problem =
113 Teuchos::RCP<quality_t> metricObject = Teuchos::rcp(
new quality_t(
114 ia.get(), ¶ms, comm, &problem->getSolution()));
117 if (comm->getRank() == 0) {
118 metricObject->printMetrics(std::cout);
119 double imb = metricObject->getObjectCountImbalance();
121 std::cout <<
"balance satisfied " << imb << std::endl;
123 std::cout <<
"balance failed " << imb << std::endl;
128 if(rank == 0 && err == 0) {
129 std::cout <<
"PASS" << std::endl;
Zoltan2::EvaluatePartition< matrixAdapter_t > quality_t
int main(int narg, char **arg)
Defines the PartitioningSolution class.
Defines the XpetraMultiVectorAdapter.
An adapter for Xpetra::MultiVector.
PartitioningProblem sets up partitioning problems for the user.
Defines the PartitioningProblem class.
A class that computes and returns quality metrics.