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;
106 #ifdef HAVE_ZOLTAN2_PAMGEN 125 const RCP<
const Comm<int> > &comm);
137 getBasicIdentiferAdapterForInput(
UserInputForTests *uinput,
const ParameterList &pList,
const RCP<
const Comm<int> > &comm);
148 getXpetraMVAdapterForInput(
UserInputForTests *uinput,
const ParameterList &pList,
const RCP<
const Comm<int> > &comm);
159 getXpetraCrsGraphAdapterForInput(
UserInputForTests *uinput,
const ParameterList &pList,
const RCP<
const Comm<int> > &comm);
170 getXpetraCrsMatrixAdapterForInput(
UserInputForTests *uinput,
const ParameterList &pList,
const RCP<
const Comm<int> > &comm);
181 getBasicVectorAdapterForInput(
UserInputForTests *uinput,
const ParameterList &pList,
const RCP<
const Comm<int> > &comm);
192 getPamgenMeshAdapterForInput(
UserInputForTests *uinput,
const ParameterList &pList,
const RCP<
const Comm<int> > &comm);
203 template <
typename T>
204 static void InitializeVectorData(
const RCP<T> &data,
205 vector<const zscalar_t *> &coords,
206 vector<int> & strides,
209 #ifdef HAVE_EPETRA_DATA_TYPES 218 template <
typename T>
219 static void InitializeEpetraVectorData(
const RCP<T> &data,
220 vector<const zscalar_t *> &coords,
221 vector<int> & strides,
229 const ParameterList &pList,
230 const RCP<
const Comm<int> > &comm)
234 if(!pList.isParameter(
"input adapter"))
236 std::cerr <<
"Input adapter unspecified" << std::endl;
242 string adapter_name = pList.get<
string>(
"input adapter");
244 if(adapter_name ==
"BasicIdentifier")
245 adapters.
mainAdapter = AdapterForTests::getBasicIdentiferAdapterForInput(uinput, pList, comm);
246 else if(adapter_name ==
"XpetraMultiVector")
247 adapters.
mainAdapter = AdapterForTests::getXpetraMVAdapterForInput(uinput, pList, comm);
248 else if(adapter_name ==
"XpetraCrsGraph")
249 adapters = getXpetraCrsGraphAdapterForInput(uinput,pList, comm);
250 else if(adapter_name ==
"XpetraCrsMatrix")
251 adapters = getXpetraCrsMatrixAdapterForInput(uinput,pList, comm);
252 else if(adapter_name ==
"BasicVector")
253 adapters.
mainAdapter = getBasicVectorAdapterForInput(uinput,pList, comm);
254 else if(adapter_name ==
"PamgenMesh")
255 adapters.
mainAdapter = getPamgenMeshAdapterForInput(uinput,pList, comm);
257 std::cerr <<
"Input adapter type: " << adapter_name
258 <<
", is unavailable, or misspelled." << std::endl;
265 const ParameterList &pList,
266 const RCP<
const Comm<int> > &comm)
269 if(!pList.isParameter(
"data type"))
271 std::cerr <<
"Input data type unspecified" << std::endl;
275 string input_type = pList.get<
string>(
"data type");
279 std::cerr <<
"Input type: " + input_type +
" unavailable or misspelled." 284 vector<const zscalar_t *>
weights;
285 std::vector<int> weightStrides;
286 const zgno_t *globalIds = NULL;
287 size_t localCount = 0;
295 size_t cols = vtx_weights->getNumVectors();
296 for (
size_t i = 0; i< cols; i++) {
297 weights.push_back(vtx_weights->getData(i).getRawPtr());
298 weightStrides.push_back((
int)vtx_weights->getStride());
302 if(input_type ==
"coordinates")
305 globalIds = (
zgno_t *)data->getMap()->getNodeElementList().getRawPtr();
306 localCount = data->getLocalLength();
308 else if(input_type ==
"tpetra_vector")
311 globalIds = (
zgno_t *)data->getMap()->getNodeElementList().getRawPtr();
312 localCount = data->getLocalLength();
314 else if(input_type ==
"tpetra_multivector")
316 int nvec = pList.get<
int>(
"vector_dimension");
318 globalIds = (
zgno_t *)data->getMap()->getNodeElementList().getRawPtr();
319 localCount = data->getLocalLength();
321 else if(input_type ==
"tpetra_crs_graph")
324 globalIds = (
zgno_t *)data->getMap()->getNodeElementList().getRawPtr();
325 localCount = data->getNodeNumCols();
327 else if(input_type ==
"tpetra_crs_matrix")
330 globalIds = (
zgno_t *)data->getMap()->getNodeElementList().getRawPtr();
331 localCount = data->getNodeNumCols();
333 else if(input_type ==
"xpetra_vector")
336 globalIds = (
zgno_t *)data->getMap()->getNodeElementList().getRawPtr();
337 localCount = data->getLocalLength();
339 else if(input_type ==
"xpetra_multivector")
341 int nvec = pList.get<
int>(
"vector_dimension");
343 globalIds = (
zgno_t *)data->getMap()->getNodeElementList().getRawPtr();
344 localCount = data->getLocalLength();
346 else if(input_type ==
"xpetra_crs_graph")
349 globalIds = (
zgno_t *)data->getMap()->getNodeElementList().getRawPtr();
350 localCount = data->getNodeNumCols();
352 else if(input_type ==
"xpetra_crs_matrix")
355 globalIds = (
zgno_t *)data->getMap()->getNodeElementList().getRawPtr();
356 localCount = data->getNodeNumCols();
358 #ifdef HAVE_EPETRA_DATA_TYPES 359 else if(input_type ==
"epetra_vector")
361 RCP<Epetra_Vector> data = uinput->getUIEpetraVector();
362 globalIds = (
zgno_t *)data->Map().MyGlobalElements();
363 localCount = data->MyLength();
365 else if(input_type ==
"epetra_multivector")
367 int nvec = pList.get<
int>(
"vector_dimension");
368 RCP<Epetra_MultiVector> data = uinput->getUIEpetraMultiVector(nvec);
369 globalIds = (
zgno_t *)data->Map().MyGlobalElements();
370 localCount = data->MyLength();
372 else if(input_type ==
"epetra_crs_graph")
374 RCP<Epetra_CrsGraph> data = uinput->getUIEpetraCrsGraph();
375 globalIds = (
zgno_t *)data->Map().MyGlobalElements();
376 localCount = data->NumMyCols();
378 else if(input_type ==
"epetra_crs_matrix")
380 RCP<Epetra_CrsMatrix> data = uinput->getUIEpetraCrsMatrix();
381 globalIds = (
zgno_t *)data->Map().MyGlobalElements();
382 localCount = data->NumMyCols();
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<Zoltan2_TestingFramework::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 adapter_t *ia =
new adapter_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 adapter_t *ia =
new adapter_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 adapter_t *ia =
new adapter_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);
610 std::cerr <<
"Input data chosen not compatible with " 611 <<
"XpetraCrsGraph adapter." << std::endl;
618 Teuchos::ParameterList pCopy(pList);
619 pCopy = pCopy.set<std::string>(
"data type",
"coordinates");
622 ca = getXpetraMVAdapterForInput(uinput,pCopy, comm);
626 std::cerr <<
"Failed to create coordinate vector adapter for " 627 <<
"XpetraCrsMatrix adapter." << std::endl;
645 const ParameterList &pList,
646 const RCP<
const Comm<int> > &comm)
650 if(!pList.isParameter(
"data type"))
652 std::cerr <<
"Input data type unspecified" << std::endl;
656 string input_type = pList.get<
string>(
"data type");
659 std::cerr <<
"Input type:" + input_type +
", unavailable or misspelled." 664 vector<const zscalar_t *>
weights;
670 if(comm->getRank() == 0) cout <<
"Have weights...." << endl;
674 int weightsPerRow = (int)vtx_weights->getNumVectors();
675 for (
int i = 0; i< weightsPerRow; i++)
677 weights.push_back(vtx_weights->getData(i).getRawPtr());
678 strides.push_back(1);
684 if(input_type ==
"tpetra_crs_matrix")
686 if(comm->getRank() == 0) cout <<
"Make tpetra crs matrix adapter...." << endl;
690 RCP<const tcrsMatrix_t> const_data = rcp_const_cast<
const tcrsMatrix_t>(data);
698 for(
int i = 0; i < (int)
weights.size(); i++)
699 ia->setWeights(
weights[i],strides[i],i);
706 else if(input_type ==
"xpetra_crs_matrix")
712 RCP<const xcrsMatrix_t> const_data = rcp_const_cast<
const xcrsMatrix_t>(data);
715 adapter_t *ia =
new adapter_t(const_data, (
int)
weights.size());
720 for(
int i = 0; i < (int)
weights.size(); i++)
721 ia->setWeights(
weights[i],strides[i],i);
727 #ifdef HAVE_EPETRA_DATA_TYPES 729 else if(input_type ==
"epetra_crs_matrix")
733 RCP<Epetra_CrsMatrix> data = uinput->getUIEpetraCrsMatrix();
734 RCP<const Epetra_CrsMatrix> const_data = rcp_const_cast<
const Epetra_CrsMatrix>(data);
737 adapter_t *ia =
new adapter_t(const_data, (
int)
weights.size());
742 for(
int i = 0; i < (int)
weights.size(); i++)
743 ia->setWeights(
weights[i],strides[i],i);
752 std::cerr <<
"Input data chosen not compatible with " 753 <<
"XpetraCrsMatrix adapter." << std::endl;
760 Teuchos::ParameterList pCopy(pList);
761 pCopy = pCopy.set<std::string>(
"data type",
"coordinates");
764 ca = getXpetraMVAdapterForInput(uinput,pCopy,comm);
767 std::cerr <<
"Failed to create coordinate vector adapter for " 768 <<
"XpetraCrsMatrix adapter." << std::endl;
787 const ParameterList &pList,
788 const RCP<
const Comm<int> > &comm)
793 if(!pList.isParameter(
"data type"))
795 std::cerr <<
"Input data type unspecified" << std::endl;
799 string input_type = pList.get<
string>(
"data type");
802 std::cerr <<
"Input type:" + input_type +
", unavailable or misspelled." 807 std::vector<const zscalar_t *>
weights;
808 std::vector<int> weightStrides;
818 size_t cols = vtx_weights->getNumVectors();
819 for (
size_t i = 0; i< cols; i++) {
820 weights.push_back(vtx_weights->getData(i).getRawPtr());
821 weightStrides.push_back(1);
827 if(pList.isParameter(
"stride"))
828 stride = pList.get<
int>(
"stride");
830 if(input_type ==
"coordinates")
833 globalIds = (
zgno_t *)data->getMap()->getNodeElementList().getRawPtr();
834 localCount =
static_cast<zlno_t>(data->getLocalLength());
837 std::vector<const zscalar_t *> coords;
838 std::vector<int> entry_strides;
839 AdapterForTests::InitializeVectorData(data,coords,entry_strides,stride);
843 size_t dim = coords.size();
844 size_t push_null = 3-dim;
845 for (
size_t i = 0; i < push_null; i ++) coords.push_back(NULL);
851 stride, stride, stride);
852 }
else if (
weights.size() == 1) {
853 size_t dim = coords.size();
854 size_t push_null = 3-dim;
855 for (
size_t i = 0; i < push_null; i ++) coords.push_back(NULL);
861 stride, stride, stride,
869 coords, entry_strides,
873 else if(input_type ==
"tpetra_vector")
876 globalIds = (
zgno_t *)data->getMap()->getNodeElementList().getRawPtr();
877 localCount =
static_cast<zlno_t>(data->getLocalLength());
880 vector<const zscalar_t *> coords;
881 vector<int> entry_strides;
882 AdapterForTests::InitializeVectorData(data,coords,entry_strides,stride);
887 coords[0], entry_strides[0]);
890 coords[0], entry_strides[0],
898 else if(input_type ==
"tpetra_multivector")
900 int nvec = pList.get<
int>(
"vector_dimension");
903 globalIds = (
zgno_t *)data->getMap()->getNodeElementList().getRawPtr();
904 localCount =
static_cast<zlno_t>(data->getLocalLength());
907 vector<const zscalar_t *> coords;
908 vector<int> entry_strides;
909 AdapterForTests::InitializeVectorData(data,coords,entry_strides,stride);
912 coords, entry_strides,
916 else if(input_type ==
"xpetra_vector")
919 globalIds = (
zgno_t *)data->getMap()->getNodeElementList().getRawPtr();
920 localCount =
static_cast<zlno_t>(data->getLocalLength());
923 vector<const zscalar_t *> coords;
924 vector<int> entry_strides;
925 AdapterForTests::InitializeVectorData(data,coords,entry_strides,stride);
930 coords[0], entry_strides[0]);
933 coords[0], entry_strides[0],
940 else if(input_type ==
"xpetra_multivector")
942 int nvec = pList.get<
int>(
"vector_dimension");
944 globalIds = (
zgno_t *)data->getMap()->getNodeElementList().getRawPtr();
945 localCount =
static_cast<zlno_t>(data->getLocalLength());
948 vector<const zscalar_t *> coords;
949 vector<int> entry_strides;
950 AdapterForTests::InitializeVectorData(data,coords,entry_strides,stride);
951 if(comm->getRank() == 0) cout <<
"size of entry strides: " << entry_strides.size() << endl;
952 if(comm->getRank() == 0) cout <<
"size of coords: " << coords.size() << endl;
956 coords, entry_strides,
960 #ifdef HAVE_EPETRA_DATA_TYPES 961 else if(input_type ==
"epetra_vector")
963 RCP<Epetra_Vector> data = uinput->getUIEpetraVector();
964 globalIds = (
zgno_t *)data->Map().MyGlobalElements();
965 localCount =
static_cast<zlno_t>(data->MyLength());
968 vector<const zscalar_t *> coords;
969 vector<int> entry_strides;
970 AdapterForTests::InitializeEpetraVectorData(data,coords,entry_strides,stride);
975 coords[0], entry_strides[0]);
978 coords[0], entry_strides[0],
987 else if(input_type ==
"epetra_multivector")
989 int nvec = pList.get<
int>(
"vector_dimension");
990 RCP<Epetra_MultiVector> data = uinput->getUIEpetraMultiVector(nvec);
991 globalIds = (
zgno_t *)data->Map().MyGlobalElements();
992 localCount = data->MyLength();
994 vector<const zscalar_t *> coords;
995 vector<int> entry_strides;
996 AdapterForTests::InitializeEpetraVectorData(data,coords,entry_strides,stride);
1000 coords, entry_strides,
1011 template <
typename T>
1012 void AdapterForTests::InitializeVectorData(
const RCP<T> &data,
1013 vector<const zscalar_t *> &coords,
1014 vector<int> & strides,
1018 size_t localCount = data->getLocalLength();
1019 size_t nvecs = data->getNumVectors();
1020 size_t vecsize = data->getNumVectors() * data->getLocalLength();
1024 ArrayRCP<zscalar_t> *petravectors =
1025 new ArrayRCP<zscalar_t>[nvecs];
1028 for (
size_t i = 0; i < nvecs; i++)
1029 petravectors[i] = data->getDataNonConst(i);
1045 if(stride == 1 || stride != (
int)nvecs)
1047 for (
size_t i = 0; i < nvecs; i++) {
1048 for (
size_t j = 0; j < localCount; j++) {
1049 coordarr[idx++] = petravectors[i][j];
1054 for (
size_t j = 0; j < localCount; j++) {
1055 for (
size_t i = 0; i < nvecs; i++) {
1056 coordarr[idx++] = petravectors[i][j];
1069 coords = std::vector<const zscalar_t *>(nvecs);
1070 strides = std::vector<int>(nvecs);
1072 for (
size_t i = 0; i < nvecs; i++) {
1074 coords[i] = &coordarr[i*localCount];
1076 coords[i] = &coordarr[i];
1078 strides[i] = stride;
1094 delete [] petravectors;
1097 #ifdef HAVE_EPETRA_DATA_TYPES 1099 template <
typename T>
1100 void AdapterForTests::InitializeEpetraVectorData(
const RCP<T> &data,
1101 vector<const zscalar_t *> &coords,
1102 vector<int> & strides,
1104 size_t localCount = data->MyLength();
1105 size_t nvecs = data->NumVectors();
1106 size_t vecsize = nvecs * localCount;
1111 vector<zscalar_t *> epetravectors(nvecs);
1114 data->ExtractView(&arr);
1116 for(
size_t k = 0; k < nvecs; k++)
1118 epetravectors[k] = arr[k];
1124 if(stride == 1 || stride != (
int)nvecs)
1126 for (
size_t i = 0; i < nvecs; i++) {
1127 for (
size_t j = 0; j < localCount; j++) {
1128 coordarr[idx++] = epetravectors[i][j];
1133 for (
size_t j = 0; j < localCount; j++) {
1134 for (
size_t i = 0; i < nvecs; i++) {
1135 coordarr[idx++] = epetravectors[i][j];
1147 coords = std::vector<const zscalar_t *>(nvecs);
1148 strides = std::vector<int>(nvecs);
1150 for (
size_t i = 0; i < nvecs; i++) {
1152 coords[i] = &coordarr[i*localCount];
1154 coords[i] = &coordarr[i];
1156 strides[i] = stride;
1177 const ParameterList &pList,
1178 const RCP<
const Comm<int> > &comm)
1180 #ifdef HAVE_ZOLTAN2_PAMGEN 1193 std::cerr <<
"Pamgen mesh is unavailable for PamgenMeshAdapter!" 1199 throw std::runtime_error(
"Pamgen input requested but Trilinos is not " 1200 "built with Pamgen");
InputTraits< User >::scalar_t scalar_t
Tpetra::CrsMatrix< zscalar_t, zlno_t, zgno_t, znode_t > tcrsMatrix_t
Defines Parameter related enumerators, declares functions.
Provides access for Zoltan2 to Xpetra::CrsMatrix data.
static AdapterWithOptionalCoordinateAdapter 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.
Provides access for Zoltan2 to Xpetra::CrsGraph data.
Defines the PamgenMeshAdapter class.
Zoltan2::BasicVectorAdapter< tMVector_t > basic_vector_adapter
Defines the XpetraMultiVectorAdapter.
Defines XpetraCrsGraphAdapter class.
Defines the XpetraCrsMatrixAdapter class.
Xpetra::MultiVector< zscalar_t, zlno_t, zgno_t, znode_t > xMVector_t
Tpetra::CrsGraph< zlno_t, zgno_t, znode_t > tcrsGraph_t
Defines the EvaluatePartition class.
Xpetra::CrsGraph< zlno_t, zgno_t, znode_t > xcrsGraph_t
Zoltan2::BasicVectorAdapter< tMVector_t > pamgen_adapter_t
Xpetra::CrsMatrix< zscalar_t, zlno_t, zgno_t, znode_t > xcrsMatrix_t
BasicVectorAdapter represents a vector (plus optional weights) supplied by the user as pointers to st...
An adapter for Xpetra::MultiVector.
Defines the BasicIdentifierAdapter class.
BaseAdapter defines methods required by all Adapters.
Zoltan2_TestingFramework::base_adapter_t * mainAdapter
Zoltan2::XpetraCrsMatrixAdapter< tcrsMatrix_t, tMVector_t > xcrsMatrix_adapter
Defines the PartitioningProblem class.
Defines the BasicVectorAdapter class.
This class represents a mesh.
Zoltan2::VectorAdapter< tMVector_t > * coordinateAdapter
Zoltan2::BasicIdentifierAdapter< userTypes_t > basic_id_t
Zoltan2::BasicVectorAdapter< tMVector_t > pamgen_adapter_t