51 #ifndef ADAPTERFORTESTS 52 #define ADAPTERFORTESTS 66 #ifdef HAVE_ZOLTAN2_PAMGEN 70 #include <Teuchos_DefaultComm.hpp> 71 #include <Teuchos_XMLObject.hpp> 72 #include <Teuchos_FileInputSource.hpp> 74 #include <Tpetra_MultiVector.hpp> 75 #include <Tpetra_CrsMatrix.hpp> 83 using Teuchos::ArrayRCP;
84 using Teuchos::ArrayView;
89 using Teuchos::rcp_const_cast;
90 using Teuchos::ParameterList;
115 #ifdef HAVE_ZOLTAN2_PAMGEN 132 static base_adapter_t* getAdapterForInput(
UserInputForTests *uinput,
const ParameterList &pList,
const RCP<
const Comm<int> > &comm);
143 static base_adapter_t*
144 getBasicIdentiferAdapterForInput(
UserInputForTests *uinput,
const ParameterList &pList,
const RCP<
const Comm<int> > &comm);
154 static base_adapter_t*
155 getXpetraMVAdapterForInput(
UserInputForTests *uinput,
const ParameterList &pList,
const RCP<
const Comm<int> > &comm);
165 static base_adapter_t*
166 getXpetraCrsGraphAdapterForInput(
UserInputForTests *uinput,
const ParameterList &pList,
const RCP<
const Comm<int> > &comm);
176 static base_adapter_t*
177 getXpetraCrsMatrixAdapterForInput(
UserInputForTests *uinput,
const ParameterList &pList,
const RCP<
const Comm<int> > &comm);
187 static base_adapter_t*
188 getBasicVectorAdapterForInput(
UserInputForTests *uinput,
const ParameterList &pList,
const RCP<
const Comm<int> > &comm);
198 static base_adapter_t*
199 getPamgenMeshAdapterForInput(
UserInputForTests *uinput,
const ParameterList &pList,
const RCP<
const Comm<int> > &comm);
210 template <
typename T>
211 static void InitializeVectorData(
const RCP<T> &data,
212 vector<const zscalar_t *> &coords,
213 vector<int> & strides,
216 #ifdef HAVE_EPETRA_DATA_TYPES 225 template <
typename T>
226 static void InitializeEpetraVectorData(
const RCP<T> &data,
227 vector<const zscalar_t *> &coords,
228 vector<int> & strides,
235 const ParameterList &pList,
236 const RCP<
const Comm<int> > &comm)
240 if(!pList.isParameter(
"input adapter"))
242 std::cerr <<
"Input adapter unspecified" << std::endl;
247 string adapter_name = pList.get<
string>(
"input adapter");
248 if(adapter_name ==
"BasicIdentifier")
249 ia = AdapterForTests::getBasicIdentiferAdapterForInput(uinput, pList, comm);
250 else if(adapter_name ==
"XpetraMultiVector")
251 ia = AdapterForTests::getXpetraMVAdapterForInput(uinput, pList, comm);
252 else if(adapter_name ==
"XpetraCrsGraph")
253 ia = getXpetraCrsGraphAdapterForInput(uinput,pList, comm);
254 else if(adapter_name ==
"XpetraCrsMatrix")
255 ia = getXpetraCrsMatrixAdapterForInput(uinput,pList, comm);
256 else if(adapter_name ==
"BasicVector")
257 ia = getBasicVectorAdapterForInput(uinput,pList, comm);
258 else if(adapter_name ==
"PamgenMesh")
259 ia = getPamgenMeshAdapterForInput(uinput,pList, comm);
261 std::cerr <<
"Input adapter type: " + adapter_name +
", is unavailable, or misspelled." << std::endl;
268 const ParameterList &pList,
269 const RCP<
const Comm<int> > &comm)
272 if(!pList.isParameter(
"data type"))
274 std::cerr <<
"Input data type unspecified" << std::endl;
278 string input_type = pList.get<
string>(
"data type");
282 std::cerr <<
"Input type: " + input_type +
" unavailable or misspelled." 287 vector<const zscalar_t *>
weights;
288 std::vector<int> weightStrides;
290 size_t localCount = 0;
298 size_t cols = vtx_weights->getNumVectors();
299 for (
size_t i = 0; i< cols; i++) {
300 weights.push_back(vtx_weights->getData(i).getRawPtr());
301 weightStrides.push_back((
int)vtx_weights->getStride());
305 if(input_type ==
"coordinates")
308 globalIds = (
zgno_t *)data->getMap()->getNodeElementList().getRawPtr();
309 localCount = data->getLocalLength();
311 else if(input_type ==
"tpetra_vector")
314 globalIds = (
zgno_t *)data->getMap()->getNodeElementList().getRawPtr();
315 localCount = data->getLocalLength();
317 else if(input_type ==
"tpetra_multivector")
319 int nvec = pList.get<
int>(
"vector_dimension");
321 globalIds = (
zgno_t *)data->getMap()->getNodeElementList().getRawPtr();
322 localCount = data->getLocalLength();
324 else if(input_type ==
"tpetra_crs_graph")
327 globalIds = (
zgno_t *)data->getMap()->getNodeElementList().getRawPtr();
328 localCount = data->getNodeNumCols();
330 else if(input_type ==
"tpetra_crs_matrix")
333 globalIds = (
zgno_t *)data->getMap()->getNodeElementList().getRawPtr();
334 localCount = data->getNodeNumCols();
336 else if(input_type ==
"xpetra_vector")
339 globalIds = (
zgno_t *)data->getMap()->getNodeElementList().getRawPtr();
340 localCount = data->getLocalLength();
342 else if(input_type ==
"xpetra_multivector")
344 int nvec = pList.get<
int>(
"vector_dimension");
346 globalIds = (
zgno_t *)data->getMap()->getNodeElementList().getRawPtr();
347 localCount = data->getLocalLength();
349 else if(input_type ==
"xpetra_crs_graph")
352 globalIds = (
zgno_t *)data->getMap()->getNodeElementList().getRawPtr();
353 localCount = data->getNodeNumCols();
355 else if(input_type ==
"xpetra_crs_matrix")
358 globalIds = (
zgno_t *)data->getMap()->getNodeElementList().getRawPtr();
359 localCount = data->getNodeNumCols();
361 #ifdef HAVE_EPETRA_DATA_TYPES 362 else if(input_type ==
"epetra_vector")
364 RCP<Epetra_Vector> data = uinput->getUIEpetraVector();
365 globalIds = (
zgno_t *)data->Map().MyGlobalElements();
366 localCount = data->MyLength();
368 else if(input_type ==
"epetra_multivector")
370 int nvec = pList.get<
int>(
"vector_dimension");
371 RCP<Epetra_MultiVector> data = uinput->getUIEpetraMultiVector(nvec);
372 globalIds = (
zgno_t *)data->Map().MyGlobalElements();
373 localCount = data->MyLength();
375 else if(input_type ==
"epetra_crs_graph")
377 RCP<Epetra_CrsGraph> data = uinput->getUIEpetraCrsGraph();
378 globalIds = (
zgno_t *)data->Map().MyGlobalElements();
379 localCount = data->NumMyCols();
381 else if(input_type ==
"epetra_crs_matrix")
383 RCP<Epetra_CrsMatrix> data = uinput->getUIEpetraCrsMatrix();
384 globalIds = (
zgno_t *)data->Map().MyGlobalElements();
385 localCount = data->NumMyCols();
389 if(localCount == 0)
return nullptr;
396 const ParameterList &pList,
397 const RCP<
const Comm<int> > &comm)
401 if(!pList.isParameter(
"data type"))
403 std::cerr <<
"Input data type unspecified" << std::endl;
407 string input_type = pList.get<
string>(
"data type");
410 std::cerr <<
"Input type:" + input_type +
", unavailable or misspelled." 415 vector<const zscalar_t *>
weights;
416 std::vector<int> weightStrides;
423 size_t weightsPerRow = vtx_weights->getNumVectors();
424 for (
size_t i = 0; i< weightsPerRow; i++) {
425 weights.push_back(vtx_weights->getData(i).getRawPtr());
426 weightStrides.push_back(1);
431 if(input_type ==
"coordinates")
434 RCP<const tMVector_t> const_data = rcp_const_cast<
const tMVector_t>(data);
440 else if(input_type ==
"tpetra_multivector")
442 int nvec = pList.get<
int>(
"vector_dimension");
444 RCP<const tMVector_t> const_data = rcp_const_cast<
const tMVector_t>(data);
450 else if(input_type ==
"xpetra_multivector")
452 int nvec = pList.get<
int>(
"vector_dimension");
454 RCP<const xMVector_t> const_data = rcp_const_cast<
const xMVector_t>(data);
461 #ifdef HAVE_EPETRA_DATA_TYPES 463 else if(input_type ==
"epetra_multivector")
465 int nvec = pList.get<
int>(
"vector_dimension");
466 RCP<Epetra_MultiVector> data = uinput->getUIEpetraMultiVector(nvec);
467 RCP<const Epetra_MultiVector> const_data = rcp_const_cast<
const Epetra_MultiVector>(data);
470 adapter = reinterpret_cast<AdapterForTests::base_adapter_t *>(
478 if(adapter ==
nullptr)
479 std::cerr <<
"Input data chosen not compatible with xpetra multi-vector adapter." << std::endl;
487 const ParameterList &pList,
488 const RCP<
const Comm<int> > &comm)
493 if(!pList.isParameter(
"data type"))
495 std::cerr <<
"Input data type unspecified" << std::endl;
499 string input_type = pList.get<
string>(
"data type");
502 std::cerr <<
"Input type: " + input_type +
", unavailable or misspelled." 507 vector<const zscalar_t *> vtx_weights;
508 vector<const zscalar_t *> edge_weights;
509 vector<int> vtx_weightStride;
510 vector<int> edge_weightStride;
515 RCP<tMVector_t> vtx_weights_tmp = uinput->
getUIWeights();
517 size_t weightsPerRow = vtx_weights_tmp->getNumVectors();
518 for (
size_t i = 0; i< weightsPerRow; i++) {
519 vtx_weights.push_back(vtx_weights_tmp->getData(i).getRawPtr());
520 vtx_weightStride.push_back(1);
529 size_t weightsPerRow = edge_weights_tmp->getNumVectors();
530 for (
size_t i = 0; i< weightsPerRow; i++) {
531 edge_weights.push_back(edge_weights_tmp->getData(i).getRawPtr());
532 edge_weightStride.push_back(1);
538 if(input_type ==
"tpetra_crs_graph")
543 RCP<const tcrsGraph_t> const_data = rcp_const_cast<
const tcrsGraph_t>(data);
544 problem_t *ia =
new problem_t(const_data,(
int)vtx_weights.size(),(int)edge_weights.size());
546 if(!vtx_weights.empty())
548 for(
int i = 0; i < (int)vtx_weights.size(); i++)
549 ia->setVertexWeights(vtx_weights[i],vtx_weightStride[i],i);
552 if(!edge_weights.empty())
554 for(
int i = 0; i < (int)edge_weights.size(); i++)
555 ia->setEdgeWeights(edge_weights[i],edge_weightStride[i],i);
560 else if(input_type ==
"xpetra_crs_graph")
565 RCP<const xcrsGraph_t> const_data = rcp_const_cast<
const xcrsGraph_t>(data);
566 problem_t *ia =
new problem_t(const_data, (
int)vtx_weights.size(), (int)edge_weights.size());
568 if(!vtx_weights.empty())
570 for(
int i = 0; i < (int)vtx_weights.size(); i++)
571 ia->setVertexWeights(vtx_weights[i],vtx_weightStride[i],i);
574 if(!edge_weights.empty())
576 for(
int i = 0; i < (int)edge_weights.size(); i++)
577 ia->setEdgeWeights(edge_weights[i],edge_weightStride[i],i);
582 #ifdef HAVE_EPETRA_DATA_TYPES 584 else if(input_type ==
"epetra_crs_graph")
588 RCP<Epetra_CrsGraph> data = uinput->getUIEpetraCrsGraph();
589 RCP<const Epetra_CrsGraph> const_data = rcp_const_cast<
const Epetra_CrsGraph>(data);
590 problem_t *ia =
new problem_t(const_data,(
int)vtx_weights.size(),(int)edge_weights.size());
592 if(!vtx_weights.empty())
594 for(
int i = 0; i < (int)vtx_weights.size(); i++)
595 ia->setVertexWeights(vtx_weights[i],vtx_weightStride[i],i);
598 if(!edge_weights.empty())
600 for(
int i = 0; i < (int)edge_weights.size(); i++)
601 ia->setEdgeWeights(edge_weights[i],edge_weightStride[i],i);
609 if(adapter ==
nullptr)
611 std::cerr <<
"Input data chosen not compatible with " 612 <<
"XpetraCrsGraph adapter." << std::endl;
619 Teuchos::ParameterList pCopy(pList);
620 pCopy = pCopy.set<std::string>(
"data type",
"coordinates");
623 ca = getXpetraMVAdapterForInput(uinput,pCopy, comm);
627 std::cerr <<
"Failed to create coordinate vector adapter for " 628 <<
"XpetraCrsMatrix adapter." << std::endl;
641 const ParameterList &pList,
642 const RCP<
const Comm<int> > &comm)
646 if(!pList.isParameter(
"data type"))
648 std::cerr <<
"Input data type unspecified" << std::endl;
652 string input_type = pList.get<
string>(
"data type");
655 std::cerr <<
"Input type:" + input_type +
", unavailable or misspelled." 660 vector<const zscalar_t *>
weights;
666 if(comm->getRank() == 0) cout <<
"Have weights...." << endl;
670 int weightsPerRow = (int)vtx_weights->getNumVectors();
671 for (
int i = 0; i< weightsPerRow; i++)
673 weights.push_back(vtx_weights->getData(i).getRawPtr());
674 strides.push_back(1);
680 if(input_type ==
"tpetra_crs_matrix")
682 if(comm->getRank() == 0) cout <<
"Make tpetra crs matrix adapter...." << endl;
686 RCP<const tcrsMatrix_t> const_data = rcp_const_cast<
const tcrsMatrix_t>(data);
694 for(
int i = 0; i < (int)weights.size(); i++)
702 else if(input_type ==
"xpetra_crs_matrix")
708 RCP<const xcrsMatrix_t> const_data = rcp_const_cast<
const xcrsMatrix_t>(data);
711 problem_t *ia =
new problem_t(const_data, (
int)weights.size());
716 for(
int i = 0; i < (int)weights.size(); i++)
717 ia->setWeights(weights[i],strides[i],i);
723 #ifdef HAVE_EPETRA_DATA_TYPES 725 else if(input_type ==
"epetra_crs_matrix")
729 RCP<Epetra_CrsMatrix> data = uinput->getUIEpetraCrsMatrix();
730 RCP<const Epetra_CrsMatrix> const_data = rcp_const_cast<
const Epetra_CrsMatrix>(data);
733 problem_t *ia =
new problem_t(const_data, (
int)weights.size());
738 for(
int i = 0; i < (int)weights.size(); i++)
739 ia->setWeights(weights[i],strides[i],i);
746 if(adapter ==
nullptr)
748 std::cerr <<
"Input data chosen not compatible with " 749 <<
"XpetraCrsMatrix adapter." << std::endl;
756 Teuchos::ParameterList pCopy(pList);
757 pCopy = pCopy.set<std::string>(
"data type",
"coordinates");
760 ca = getXpetraMVAdapterForInput(uinput,pCopy,comm);
763 std::cerr <<
"Failed to create coordinate vector adapter for " 764 <<
"XpetraCrsMatrix adapter." << std::endl;
777 const ParameterList &pList,
778 const RCP<
const Comm<int> > &comm)
783 if(!pList.isParameter(
"data type"))
785 std::cerr <<
"Input data type unspecified" << std::endl;
789 string input_type = pList.get<
string>(
"data type");
792 std::cerr <<
"Input type:" + input_type +
", unavailable or misspelled." 797 vector<const zscalar_t *>
weights;
798 std::vector<int> weightStrides;
808 size_t cols = vtx_weights->getNumVectors();
809 for (
size_t i = 0; i< cols; i++) {
810 weights.push_back(vtx_weights->getData(i).getRawPtr());
811 weightStrides.push_back(1);
817 if(pList.isParameter(
"stride"))
818 stride = pList.get<
int>(
"stride");
820 if(input_type ==
"coordinates")
823 globalIds = (
zgno_t *)data->getMap()->getNodeElementList().getRawPtr();
824 localCount =
static_cast<zlno_t>(data->getLocalLength());
827 vector<const zscalar_t *> coords;
828 vector<int> entry_strides;
829 AdapterForTests::InitializeVectorData(data,coords,entry_strides,stride);
831 size_t dim = coords.size();
832 size_t push_null = 3-dim;
833 for (
size_t i = 0; i < push_null; i ++)
834 coords.push_back(NULL);
840 coords[0],coords[1],coords[2],
841 stride, stride, stride);
845 coords[0],coords[1],coords[2],
846 stride, stride, stride,
853 else if(input_type ==
"tpetra_vector")
856 globalIds = (
zgno_t *)data->getMap()->getNodeElementList().getRawPtr();
857 localCount =
static_cast<zlno_t>(data->getLocalLength());
860 vector<const zscalar_t *> coords;
861 vector<int> entry_strides;
862 AdapterForTests::InitializeVectorData(data,coords,entry_strides,stride);
867 coords[0], entry_strides[0]);
870 coords[0], entry_strides[0],
878 else if(input_type ==
"tpetra_multivector")
880 int nvec = pList.get<
int>(
"vector_dimension");
883 globalIds = (
zgno_t *)data->getMap()->getNodeElementList().getRawPtr();
884 localCount =
static_cast<zlno_t>(data->getLocalLength());
887 vector<const zscalar_t *> coords;
888 vector<int> entry_strides;
889 AdapterForTests::InitializeVectorData(data,coords,entry_strides,stride);
892 coords, entry_strides,
893 weights,weightStrides);
896 else if(input_type ==
"xpetra_vector")
899 globalIds = (
zgno_t *)data->getMap()->getNodeElementList().getRawPtr();
900 localCount =
static_cast<zlno_t>(data->getLocalLength());
903 vector<const zscalar_t *> coords;
904 vector<int> entry_strides;
905 AdapterForTests::InitializeVectorData(data,coords,entry_strides,stride);
910 coords[0], entry_strides[0]);
913 coords[0], entry_strides[0],
920 else if(input_type ==
"xpetra_multivector")
922 int nvec = pList.get<
int>(
"vector_dimension");
924 globalIds = (
zgno_t *)data->getMap()->getNodeElementList().getRawPtr();
925 localCount =
static_cast<zlno_t>(data->getLocalLength());
928 vector<const zscalar_t *> coords;
929 vector<int> entry_strides;
930 AdapterForTests::InitializeVectorData(data,coords,entry_strides,stride);
931 if(comm->getRank() == 0) cout <<
"size of entry strides: " << entry_strides.size() << endl;
932 if(comm->getRank() == 0) cout <<
"size of coords: " << coords.size() << endl;
936 coords, entry_strides,
937 weights,weightStrides);
940 #ifdef HAVE_EPETRA_DATA_TYPES 941 else if(input_type ==
"epetra_vector")
943 RCP<Epetra_Vector> data = uinput->getUIEpetraVector();
944 globalIds = (
zgno_t *)data->Map().MyGlobalElements();
945 localCount =
static_cast<zlno_t>(data->MyLength());
948 vector<const zscalar_t *> coords;
949 vector<int> entry_strides;
950 AdapterForTests::InitializeEpetraVectorData(data,coords,entry_strides,stride);
955 coords[0], entry_strides[0]);
958 coords[0], entry_strides[0],
967 else if(input_type ==
"epetra_multivector")
969 int nvec = pList.get<
int>(
"vector_dimension");
970 RCP<Epetra_MultiVector> data = uinput->getUIEpetraMultiVector(nvec);
971 globalIds = (
zgno_t *)data->Map().MyGlobalElements();
972 localCount = data->MyLength();
974 vector<const zscalar_t *> coords;
975 vector<int> entry_strides;
976 AdapterForTests::InitializeEpetraVectorData(data,coords,entry_strides,stride);
980 coords, entry_strides,
981 weights,weightStrides);
988 if(ia !=
nullptr)
delete ia;
995 template <
typename T>
996 void AdapterForTests::InitializeVectorData(
const RCP<T> &data,
997 vector<const zscalar_t *> &coords,
998 vector<int> & strides,
1002 size_t localCount = data->getLocalLength();
1003 size_t nvecs = data->getNumVectors();
1004 size_t vecsize = data->getNumVectors() * data->getLocalLength();
1008 ArrayRCP<zscalar_t> *petravectors =
1009 new ArrayRCP<zscalar_t>[nvecs];
1012 for (
size_t i = 0; i < nvecs; i++)
1013 petravectors[i] = data->getDataNonConst(i);
1029 if(stride == 1 || stride != (
int)nvecs)
1031 for (
size_t i = 0; i < nvecs; i++) {
1032 for (
size_t j = 0; j < localCount; j++) {
1033 coordarr[idx++] = petravectors[i][j];
1038 for (
size_t j = 0; j < localCount; j++) {
1039 for (
size_t i = 0; i < nvecs; i++) {
1040 coordarr[idx++] = petravectors[i][j];
1053 coords = std::vector<const zscalar_t *>(nvecs);
1054 strides = std::vector<int>(nvecs);
1056 for (
size_t i = 0; i < nvecs; i++) {
1058 coords[i] = &coordarr[i*localCount];
1060 coords[i] = &coordarr[i];
1062 strides[i] = stride;
1078 delete [] petravectors;
1081 #ifdef HAVE_EPETRA_DATA_TYPES 1083 template <
typename T>
1084 void AdapterForTests::InitializeEpetraVectorData(
const RCP<T> &data,
1085 vector<const zscalar_t *> &coords,
1086 vector<int> & strides,
1088 size_t localCount = data->MyLength();
1089 size_t nvecs = data->NumVectors();
1090 size_t vecsize = nvecs * localCount;
1095 vector<zscalar_t *> epetravectors(nvecs);
1098 data->ExtractView(&arr);
1100 for(
size_t k = 0; k < nvecs; k++)
1102 epetravectors[k] = arr[k];
1108 if(stride == 1 || stride != (
int)nvecs)
1110 for (
size_t i = 0; i < nvecs; i++) {
1111 for (
size_t j = 0; j < localCount; j++) {
1112 coordarr[idx++] = epetravectors[i][j];
1117 for (
size_t j = 0; j < localCount; j++) {
1118 for (
size_t i = 0; i < nvecs; i++) {
1119 coordarr[idx++] = epetravectors[i][j];
1131 coords = std::vector<const zscalar_t *>(nvecs);
1132 strides = std::vector<int>(nvecs);
1134 for (
size_t i = 0; i < nvecs; i++) {
1136 coords[i] = &coordarr[i*localCount];
1138 coords[i] = &coordarr[i];
1140 strides[i] = stride;
1161 const ParameterList &pList,
1162 const RCP<
const Comm<int> > &comm)
1164 #ifdef HAVE_ZOLTAN2_PAMGEN 1177 std::cerr <<
"Pamgen mesh is unavailable for PamgenMeshAdapter!" 1183 throw std::runtime_error(
"Pamgen input requested but Trilinos is not " 1184 "built with Pamgen");
InputTraits< User >::scalar_t scalar_t
UserInputForTests::tMVector_t tMVector_t
Zoltan2::XpetraMultiVectorAdapter< tMVector_t > xpetra_mv_adapter
Zoltan2::XpetraCrsGraphAdapter< tcrsGraph_t, tMVector_t > xcrsGraph_adapter
Zoltan2::BaseAdapter< userTypes_t > base_adapter_t
Defines Parameter related enumerators, declares functions.
Provides access for Zoltan2 to Xpetra::CrsMatrix data.
UserInputForTests::xMVector_t xMVector_t
A simple class that can be the User template argument for an InputAdapter.
UserInputForTests::tcrsGraph_t tcrsGraph_t
Provides access for Zoltan2 to Xpetra::CrsGraph data.
Defines the PamgenMeshAdapter class.
UserInputForTests::tcrsMatrix_t tcrsMatrix_t
Zoltan2::XpetraCrsMatrixAdapter< tcrsMatrix_t, tMVector_t > xcrsMatrix_adapter
UserInputForTests::xcrsGraph_t xcrsGraph_t
Zoltan2::BasicIdentifierAdapter< userTypes_t > basic_id_t
Defines the XpetraMultiVectorAdapter.
Zoltan2::BasicVectorAdapter< tMVector_t > basic_vector_adapter
Defines XpetraCrsGraphAdapter class.
This class represents a collection of global Identifiers and their associated weights, if any.
Defines the XpetraCrsMatrixAdapter class.
Defines the EvaluatePartition class.
Zoltan2::BasicVectorAdapter< tMVector_t > pamgen_adapter_t
UserInputForTests::xVector_t xVector_t
BasicVectorAdapter represents a vector (plus optional weights) supplied by the user as pointers to st...
An adapter for Xpetra::MultiVector.
UserInputForTests::xcrsMatrix_t xcrsMatrix_t
Defines the BasicIdentifierAdapter class.
BaseAdapter defines methods required by all Adapters.
void setWeights(const scalar_t *weightVal, int stride, int idx=0)
Specify a weight for each entity of the primaryEntityType.
static base_adapter_t * getAdapterForInput(UserInputForTests *uinput, const ParameterList &pList, const RCP< const Comm< int > > &comm)
A class method for constructing an input adapter defind in a parameter list.
Defines the PartitioningProblem class.
Zoltan2::BasicUserTypes< zscalar_t, zlno_t, zgno_t > userTypes_t
Defines the BasicVectorAdapter class.
This class represents a mesh.
UserInputForTests::tVector_t tVector_t