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>
82 using Teuchos::ArrayRCP;
83 using Teuchos::ArrayView;
88 using Teuchos::rcp_const_cast;
89 using Teuchos::ParameterList;
91 using namespace Zoltan2_TestingFramework;
120 const RCP<
const Comm<int> > &comm);
125 return adaptersSet.main.adapter;
129 return adaptersSet.main.adapterType;
133 return adaptersSet.coordinate.adapter;
137 return adaptersSet.coordinate.adapterType;
153 const ParameterList &pList,
const RCP<
const Comm<int> > &comm);
165 const ParameterList &pList,
const RCP<
const Comm<int> > &comm);
177 const ParameterList &pList,
const RCP<
const Comm<int> > &comm);
189 const ParameterList &pList,
const RCP<
const Comm<int> > &comm);
201 const ParameterList &pList,
const RCP<
const Comm<int> > &comm);
213 const ParameterList &pList,
const RCP<
const Comm<int> > &comm);
223 template <
typename T>
224 void InitializeVectorData(
const RCP<T> &data,
225 std::vector<const zscalar_t *> &coords,
226 std::vector<int> & strides,
229 #ifdef HAVE_EPETRA_DATA_TYPES
238 template <
typename T>
239 void InitializeEpetraVectorData(
const RCP<T> &data,
240 std::vector<const zscalar_t *> &coords,
241 std::vector<int> & strides,
249 const ParameterList &pList,
250 const RCP<
const Comm<int> > &comm)
252 if(!pList.isParameter(
"input adapter"))
254 std::cerr <<
"Input adapter unspecified" << std::endl;
259 std::string input_adapter_name = pList.get<
string>(
"input adapter");
261 if(input_adapter_name ==
"BasicIdentifier")
262 adaptersSet.main = getBasicIdentiferAdapterForInput(uinput, pList, comm);
263 else if(input_adapter_name ==
"XpetraMultiVector")
264 adaptersSet.main = getXpetraMVAdapterForInput(uinput, pList, comm);
265 else if(input_adapter_name ==
"XpetraCrsGraph")
266 adaptersSet = getXpetraCrsGraphAdapterForInput(uinput,pList, comm);
267 else if(input_adapter_name ==
"XpetraCrsMatrix")
268 adaptersSet = getXpetraCrsMatrixAdapterForInput(uinput,pList, comm);
269 else if(input_adapter_name ==
"BasicVector")
270 adaptersSet.main = getBasicVectorAdapterForInput(uinput,pList, comm);
271 else if(input_adapter_name ==
"PamgenMesh")
272 adaptersSet.main = getPamgenMeshAdapterForInput(uinput,pList, comm);
274 if(adaptersSet.main.adapter ==
nullptr) {
275 throw std::logic_error(
"AdapterFactory failed to create adapter!");
280 if( adaptersSet.main.adapter ) {
281 delete adaptersSet.main.adapter;
284 if( adaptersSet.coordinate.adapter ) {
285 delete adaptersSet.coordinate.adapter;
292 const ParameterList &pList,
293 const RCP<
const Comm<int> > &comm)
297 if(!pList.isParameter(
"data type"))
299 std::cerr <<
"Input data type unspecified" << std::endl;
303 string input_type = pList.get<
string>(
"data type");
307 std::cerr <<
"Input type: " + input_type +
" unavailable or misspelled."
312 std::vector<const zscalar_t *>
weights;
313 std::vector<int> weightStrides;
314 const zgno_t *globalIds = NULL;
315 size_t localCount = 0;
323 size_t cols = vtx_weights->getNumVectors();
324 for (
size_t i = 0; i< cols; i++) {
325 weights.push_back(vtx_weights->getData(i).getRawPtr());
326 weightStrides.push_back((
int)vtx_weights->getStride());
330 if(input_type ==
"coordinates")
333 globalIds = (
zgno_t *)data->getMap()->getNodeElementList().getRawPtr();
334 localCount = data->getLocalLength();
336 else if(input_type ==
"tpetra_vector")
339 globalIds = (
zgno_t *)data->getMap()->getNodeElementList().getRawPtr();
340 localCount = data->getLocalLength();
342 else if(input_type ==
"tpetra_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 ==
"tpetra_crs_graph")
352 globalIds = (
zgno_t *)data->getMap()->getNodeElementList().getRawPtr();
353 localCount = data->getNodeNumCols();
355 else if(input_type ==
"tpetra_crs_matrix")
358 globalIds = (
zgno_t *)data->getMap()->getNodeElementList().getRawPtr();
359 localCount = data->getNodeNumCols();
361 else if(input_type ==
"xpetra_vector")
364 globalIds = (
zgno_t *)data->getMap()->getNodeElementList().getRawPtr();
365 localCount = data->getLocalLength();
367 else if(input_type ==
"xpetra_multivector")
369 int nvec = pList.get<
int>(
"vector_dimension");
371 globalIds = (
zgno_t *)data->getMap()->getNodeElementList().getRawPtr();
372 localCount = data->getLocalLength();
374 else if(input_type ==
"xpetra_crs_graph")
377 globalIds = (
zgno_t *)data->getMap()->getNodeElementList().getRawPtr();
378 localCount = data->getNodeNumCols();
380 else if(input_type ==
"xpetra_crs_matrix")
383 globalIds = (
zgno_t *)data->getMap()->getNodeElementList().getRawPtr();
384 localCount = data->getNodeNumCols();
386 #ifdef HAVE_EPETRA_DATA_TYPES
387 else if(input_type ==
"epetra_vector")
389 RCP<Epetra_Vector> data = uinput->getUIEpetraVector();
390 globalIds = (
zgno_t *)data->Map().MyGlobalElements();
391 localCount = data->MyLength();
393 else if(input_type ==
"epetra_multivector")
395 int nvec = pList.get<
int>(
"vector_dimension");
396 RCP<Epetra_MultiVector> data = uinput->getUIEpetraMultiVector(nvec);
397 globalIds = (
zgno_t *)data->Map().MyGlobalElements();
398 localCount = data->MyLength();
400 else if(input_type ==
"epetra_crs_graph")
402 RCP<Epetra_CrsGraph> data = uinput->getUIEpetraCrsGraph();
403 globalIds = (
zgno_t *)data->Map().MyGlobalElements();
404 localCount = data->NumMyCols();
406 else if(input_type ==
"epetra_crs_matrix")
408 RCP<Epetra_CrsMatrix> data = uinput->getUIEpetraCrsMatrix();
409 globalIds = (
zgno_t *)data->Map().MyGlobalElements();
410 localCount = data->NumMyCols();
417 weights,weightStrides);
424 const ParameterList &pList,
425 const RCP<
const Comm<int> > &comm)
429 if(!pList.isParameter(
"data type"))
431 std::cerr <<
"Input data type unspecified" << std::endl;
435 string input_type = pList.get<
string>(
"data type");
438 std::cerr <<
"Input type:" + input_type +
", unavailable or misspelled."
443 std::vector<const zscalar_t *>
weights;
444 std::vector<int> weightStrides;
451 size_t weightsPerRow = vtx_weights->getNumVectors();
452 for (
size_t i = 0; i< weightsPerRow; i++) {
453 weights.push_back(vtx_weights->getData(i).getRawPtr());
454 weightStrides.push_back(1);
459 if(input_type ==
"coordinates")
462 RCP<const tMVector_t> const_data = rcp_const_cast<
const tMVector_t>(data);
470 else if(input_type ==
"tpetra_multivector")
472 int nvec = pList.get<
int>(
"vector_dimension");
474 RCP<const tMVector_t> const_data = rcp_const_cast<
const tMVector_t>(data);
481 else if(input_type ==
"xpetra_multivector")
483 int nvec = pList.get<
int>(
"vector_dimension");
485 RCP<const xMVector_t> const_data = rcp_const_cast<
const xMVector_t>(data);
493 #ifdef HAVE_EPETRA_DATA_TYPES
494 else if(input_type ==
"epetra_multivector")
496 int nvec = pList.get<
int>(
"vector_dimension");
497 RCP<Epetra_MultiVector> data = uinput->getUIEpetraMultiVector(nvec);
498 RCP<const Epetra_MultiVector> const_data = rcp_const_cast<
const Epetra_MultiVector>(data);
509 std::cerr <<
"Input data chosen not compatible with xpetra multi-vector adapter." << std::endl;
517 const ParameterList &pList,
518 const RCP<
const Comm<int> > &comm)
523 if(!pList.isParameter(
"data type"))
525 std::cerr <<
"Input data type unspecified" << std::endl;
529 string input_type = pList.get<
string>(
"data type");
532 std::cerr <<
"Input type: " + input_type +
", unavailable or misspelled."
537 std::vector<const zscalar_t *> vtx_weights;
538 std::vector<const zscalar_t *> edge_weights;
539 std::vector<int> vtx_weightStride;
540 std::vector<int> edge_weightStride;
545 RCP<tMVector_t> vtx_weights_tmp = uinput->
getUIWeights();
547 size_t weightsPerRow = vtx_weights_tmp->getNumVectors();
548 for (
size_t i = 0; i< weightsPerRow; i++) {
549 vtx_weights.push_back(vtx_weights_tmp->getData(i).getRawPtr());
550 vtx_weightStride.push_back(1);
559 size_t weightsPerRow = edge_weights_tmp->getNumVectors();
560 for (
size_t i = 0; i< weightsPerRow; i++) {
561 edge_weights.push_back(edge_weights_tmp->getData(i).getRawPtr());
562 edge_weightStride.push_back(1);
569 Teuchos::ParameterList pCopy(pList);
570 pCopy = pCopy.set<std::string>(
"data type",
"coordinates");
573 #define SET_COORDS_INPUT_1(adapterClass) \
574 auto * ca = dynamic_cast<adapterClass*>(adapters.coordinate.adapter); \
575 if(!ca) {throw std::logic_error( "Coordinate adapter case failed!" );} \
576 ia->setCoordinateInput(ca);
578 if(input_type ==
"tpetra_crs_graph")
581 RCP<const tcrsGraph_t> const_data = rcp_const_cast<
const tcrsGraph_t>(data);
583 xCG_tCG_t * ia =
new xCG_tCG_t(const_data,(
int)vtx_weights.size(),(int)edge_weights.size());
587 if(!vtx_weights.empty()) {
588 for(
int i = 0; i < (int)vtx_weights.size(); i++)
589 ia->setVertexWeights(vtx_weights[i],vtx_weightStride[i],i);
592 if(!edge_weights.empty()) {
593 for(
int i = 0; i < (int)edge_weights.size(); i++)
594 ia->setEdgeWeights(edge_weights[i],edge_weightStride[i],i);
598 adapters.
coordinate = getXpetraMVAdapterForInput(uinput, pCopy, comm);
602 else if(input_type ==
"xpetra_crs_graph")
605 RCP<const xcrsGraph_t> const_data = rcp_const_cast<
const xcrsGraph_t>(data);
607 xCG_xCG_t * ia =
new xCG_xCG_t(const_data, (
int)vtx_weights.size(), (int)edge_weights.size());
610 if(!vtx_weights.empty())
612 for(
int i = 0; i < (int)vtx_weights.size(); i++)
613 ia->setVertexWeights(vtx_weights[i],vtx_weightStride[i],i);
616 if(!edge_weights.empty())
618 for(
int i = 0; i < (int)edge_weights.size(); i++)
619 ia->setEdgeWeights(edge_weights[i],edge_weightStride[i],i);
623 adapters.
coordinate = getXpetraMVAdapterForInput(uinput, pCopy, comm);
627 #ifdef HAVE_EPETRA_DATA_TYPES
629 else if(input_type ==
"epetra_crs_graph")
631 RCP<Epetra_CrsGraph> data = uinput->getUIEpetraCrsGraph();
632 RCP<const Epetra_CrsGraph> const_data = rcp_const_cast<
const Epetra_CrsGraph>(data);
633 xCG_eCG_t * ia =
new xCG_eCG_t(const_data,(
int)vtx_weights.size(),(int)edge_weights.size());
636 if(!vtx_weights.empty())
638 for(
int i = 0; i < (int)vtx_weights.size(); i++)
639 ia->setVertexWeights(vtx_weights[i],vtx_weightStride[i],i);
642 if(!edge_weights.empty())
644 for(
int i = 0; i < (int)edge_weights.size(); i++)
645 ia->setEdgeWeights(edge_weights[i],edge_weightStride[i],i);
649 adapters.
coordinate = getXpetraMVAdapterForInput(uinput, pCopy, comm);
656 std::cerr <<
"Input data chosen not compatible with "
657 <<
"XpetraCrsGraph adapter." << std::endl;
667 const ParameterList &pList,
668 const RCP<
const Comm<int> > &comm)
672 if(!pList.isParameter(
"data type"))
674 std::cerr <<
"Input data type unspecified" << std::endl;
678 string input_type = pList.get<
string>(
"data type");
681 std::cerr <<
"Input type:" + input_type +
", unavailable or misspelled."
686 std::vector<const zscalar_t *>
weights;
687 std::vector<int> strides;
692 if(comm->getRank() == 0) std::cout <<
"Have weights...." << std::endl;
696 int weightsPerRow = (int)vtx_weights->getNumVectors();
697 for (
int i = 0; i< weightsPerRow; i++)
699 weights.push_back(vtx_weights->getData(i).getRawPtr());
700 strides.push_back(1);
708 Teuchos::ParameterList pCopy(pList);
709 pCopy = pCopy.set<std::string>(
"data type",
"coordinates");
712 #define SET_COORDS_INPUT_2(adapterClass) \
713 auto * ca = dynamic_cast<adapterClass*>(adapters.coordinate.adapter); \
714 if(!ca) {throw std::logic_error( "Coordinate adapter case failed!" );} \
715 ia->setCoordinateInput(ca);
718 if(input_type ==
"tpetra_crs_matrix")
720 if(comm->getRank() == 0) std::cout <<
"Make tpetra crs matrix adapter...." << std::endl;
724 RCP<const tcrsMatrix_t> const_data = rcp_const_cast<
const tcrsMatrix_t>(data);
734 for(
int i = 0; i < (int)weights.size(); i++)
735 ia->setWeights(weights[i],strides[i],i);
739 adapters.
coordinate = getXpetraMVAdapterForInput(uinput, pCopy, comm);
743 else if(input_type ==
"xpetra_crs_matrix")
746 RCP<const xcrsMatrix_t> const_data = rcp_const_cast<
const xcrsMatrix_t>(data);
756 for(
int i = 0; i < (int)weights.size(); i++)
757 ia->setWeights(weights[i],strides[i],i);
761 adapters.
coordinate = getXpetraMVAdapterForInput(uinput, pCopy, comm);
765 #ifdef HAVE_EPETRA_DATA_TYPES
766 else if(input_type ==
"epetra_crs_matrix")
768 RCP<Epetra_CrsMatrix> data = uinput->getUIEpetraCrsMatrix();
769 RCP<const Epetra_CrsMatrix> const_data = rcp_const_cast<
const Epetra_CrsMatrix>(data);
779 for(
int i = 0; i < (int)weights.size(); i++)
780 ia->setWeights(weights[i],strides[i],i);
784 adapters.
coordinate = getXpetraMVAdapterForInput(uinput, pCopy, comm);
792 std::cerr <<
"Input data chosen not compatible with "
793 <<
"XpetraCrsMatrix adapter." << std::endl;
802 const ParameterList &pList,
803 const RCP<
const Comm<int> > &comm)
808 if(!pList.isParameter(
"data type"))
810 std::cerr <<
"Input data type unspecified" << std::endl;
814 string input_type = pList.get<
string>(
"data type");
817 std::cerr <<
"Input type:" + input_type +
", unavailable or misspelled."
822 std::vector<const zscalar_t *>
weights;
823 std::vector<int> weightStrides;
833 size_t cols = vtx_weights->getNumVectors();
834 for (
size_t i = 0; i< cols; i++) {
835 weights.push_back(vtx_weights->getData(i).getRawPtr());
836 weightStrides.push_back(1);
842 if(pList.isParameter(
"stride"))
843 stride = pList.get<
int>(
"stride");
847 if(input_type ==
"coordinates")
850 globalIds = (
zgno_t *)data->getMap()->getNodeElementList().getRawPtr();
851 localCount =
static_cast<zlno_t>(data->getLocalLength());
854 std::vector<const zscalar_t *> coords;
855 std::vector<int> entry_strides;
856 InitializeVectorData(data,coords,entry_strides,stride);
860 if (weights.empty()) {
861 size_t dim = coords.size();
862 size_t push_null = 3-dim;
863 for (
size_t i = 0; i < push_null; i ++) coords.push_back(NULL);
869 stride, stride, stride);
870 }
else if (weights.size() == 1) {
871 size_t dim = coords.size();
872 size_t push_null = 3-dim;
873 for (
size_t i = 0; i < push_null; i ++) coords.push_back(NULL);
879 stride, stride, stride,
887 coords, entry_strides,
888 weights, weightStrides);
891 else if(input_type ==
"tpetra_vector")
894 globalIds = (
zgno_t *)data->getMap()->getNodeElementList().getRawPtr();
895 localCount =
static_cast<zlno_t>(data->getLocalLength());
898 std::vector<const zscalar_t *> coords;
899 std::vector<int> entry_strides;
900 InitializeVectorData(data,coords,entry_strides,stride);
905 coords[0], entry_strides[0]);
908 coords[0], entry_strides[0],
916 else if(input_type ==
"tpetra_multivector")
918 int nvec = pList.get<
int>(
"vector_dimension");
921 globalIds = (
zgno_t *)data->getMap()->getNodeElementList().getRawPtr();
922 localCount =
static_cast<zlno_t>(data->getLocalLength());
925 std::vector<const zscalar_t *> coords;
926 std::vector<int> entry_strides;
927 InitializeVectorData(data,coords,entry_strides,stride);
930 coords, entry_strides,
931 weights,weightStrides);
934 else if(input_type ==
"xpetra_vector")
937 globalIds = (
zgno_t *)data->getMap()->getNodeElementList().getRawPtr();
938 localCount =
static_cast<zlno_t>(data->getLocalLength());
941 std::vector<const zscalar_t *> coords;
942 std::vector<int> entry_strides;
943 InitializeVectorData(data,coords,entry_strides,stride);
948 coords[0], entry_strides[0]);
951 coords[0], entry_strides[0],
958 else if(input_type ==
"xpetra_multivector")
960 int nvec = pList.get<
int>(
"vector_dimension");
962 globalIds = (
zgno_t *)data->getMap()->getNodeElementList().getRawPtr();
963 localCount =
static_cast<zlno_t>(data->getLocalLength());
966 std::vector<const zscalar_t *> coords;
967 std::vector<int> entry_strides;
968 InitializeVectorData(data,coords,entry_strides,stride);
969 if(comm->getRank() == 0) std::cout <<
"size of entry strides: " << entry_strides.size() << std::endl;
970 if(comm->getRank() == 0) std::cout <<
"size of coords: " << coords.size() << std::endl;
974 coords, entry_strides,
975 weights,weightStrides);
978 #ifdef HAVE_EPETRA_DATA_TYPES
979 else if(input_type ==
"epetra_vector")
981 RCP<Epetra_Vector> data = uinput->getUIEpetraVector();
982 globalIds = (
zgno_t *)data->Map().MyGlobalElements();
983 localCount =
static_cast<zlno_t>(data->MyLength());
986 std::vector<const zscalar_t *> coords;
987 std::vector<int> entry_strides;
988 InitializeEpetraVectorData(data,coords,entry_strides,stride);
992 coords[0], entry_strides[0]);
995 coords[0], entry_strides[0],
1004 else if(input_type ==
"epetra_multivector")
1006 int nvec = pList.get<
int>(
"vector_dimension");
1007 RCP<Epetra_MultiVector> data = uinput->getUIEpetraMultiVector(nvec);
1008 globalIds = (
zgno_t *)data->Map().MyGlobalElements();
1009 localCount = data->MyLength();
1011 std::vector<const zscalar_t *> coords;
1012 std::vector<int> entry_strides;
1013 InitializeEpetraVectorData(data,coords,entry_strides,stride);
1017 coords, entry_strides,
1018 weights,weightStrides);
1026 template <
typename T>
1027 void AdapterFactory::InitializeVectorData(
const RCP<T> &data,
1028 std::vector<const zscalar_t *> &coords,
1029 std::vector<int> & strides,
1033 size_t localCount = data->getLocalLength();
1034 size_t nvecs = data->getNumVectors();
1035 size_t vecsize = data->getNumVectors() * data->getLocalLength();
1039 ArrayRCP<zscalar_t> *petravectors =
new ArrayRCP<zscalar_t>[nvecs];
1042 for (
size_t i = 0; i < nvecs; i++)
1043 petravectors[i] = data->getDataNonConst(i);
1059 if(stride == 1 || stride != (
int)nvecs)
1061 for (
size_t i = 0; i < nvecs; i++) {
1062 for (
size_t j = 0; j < localCount; j++) {
1063 coordarr[idx++] = petravectors[i][j];
1068 for (
size_t j = 0; j < localCount; j++) {
1069 for (
size_t i = 0; i < nvecs; i++) {
1070 coordarr[idx++] = petravectors[i][j];
1083 coords = std::vector<const zscalar_t *>(nvecs);
1084 strides = std::vector<int>(nvecs);
1086 for (
size_t i = 0; i < nvecs; i++) {
1088 coords[i] = &coordarr[i*localCount];
1090 coords[i] = &coordarr[i];
1092 strides[i] = stride;
1108 delete [] petravectors;
1111 #ifdef HAVE_EPETRA_DATA_TYPES
1113 template <
typename T>
1114 void AdapterFactory::InitializeEpetraVectorData(
const RCP<T> &data,
1115 std::vector<const zscalar_t *> &coords,
1116 std::vector<int> & strides,
1118 size_t localCount = data->MyLength();
1119 size_t nvecs = data->NumVectors();
1120 size_t vecsize = nvecs * localCount;
1125 std::vector<zscalar_t *> epetravectors(nvecs);
1128 data->ExtractView(&arr);
1130 for(
size_t k = 0; k < nvecs; k++)
1132 epetravectors[k] = arr[k];
1139 if(stride == 1 || stride != (
int)nvecs)
1141 for (
size_t i = 0; i < nvecs; i++) {
1142 for (
size_t j = 0; j < localCount; j++) {
1143 coordarr[idx++] = epetravectors[i][j];
1148 for (
size_t j = 0; j < localCount; j++) {
1149 for (
size_t i = 0; i < nvecs; i++) {
1150 coordarr[idx++] = epetravectors[i][j];
1162 coords = std::vector<const zscalar_t *>(nvecs);
1163 strides = std::vector<int>(nvecs);
1165 for (
size_t i = 0; i < nvecs; i++) {
1167 coords[i] = &coordarr[i*localCount];
1169 coords[i] = &coordarr[i];
1171 strides[i] = stride;
1192 const ParameterList &pList,
1193 const RCP<
const Comm<int> > &comm)
1197 #ifdef HAVE_ZOLTAN2_PAMGEN
1210 std::cerr <<
"Pamgen mesh is unavailable for PamgenMeshAdapter!"
1216 throw std::runtime_error(
"Pamgen input requested but Trilinos is not "
1217 "built with Pamgen");
InputTraits< User >::scalar_t scalar_t
Tpetra::CrsMatrix< zscalar_t, zlno_t, zgno_t, znode_t > tcrsMatrix_t
EAdapterType getMainAdapterType() const
Zoltan2::XpetraCrsGraphAdapter< tcrsGraph_t, tMVector_t > xCG_tCG_t
Defines Parameter related enumerators, declares functions.
Provides access for Zoltan2 to Xpetra::CrsMatrix data.
Zoltan2::BaseAdapterRoot * getMainAdapter() const
AdapterWithTemplateName main
Zoltan2::BaseAdapterRoot * adapter
Zoltan2::XpetraCrsGraphAdapter< xcrsGraph_t, tMVector_t > xCG_xCG_t
Provides access for Zoltan2 to Xpetra::CrsGraph data.
Defines the PamgenMeshAdapter class.
#define SET_COORDS_INPUT_2(adapterClass)
Zoltan2::BasicVectorAdapter< tMVector_t > xMV_eMV_t
#define Z2_TEST_UPCAST_COORDS(adptr, TEMPLATE_ACTION)
#define SET_COORDS_INPUT_1(adapterClass)
Zoltan2::BasicVectorAdapter< tMVector_t > basic_vector_adapter
Defines the XpetraMultiVectorAdapter.
Zoltan2::BasicVectorAdapter< tMVector_t > xCG_eCG_t
Defines XpetraCrsGraphAdapter class.
AdapterFactory(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 XpetraCrsMatrixAdapter class.
EAdapterType getCoordinateAdapterType() const
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
AdapterWithTemplateName coordinate
Xpetra::CrsMatrix< zscalar_t, zlno_t, zgno_t, znode_t > xcrsMatrix_t
BaseAdapter defines methods required by all Adapters.
BasicVectorAdapter represents a vector (plus optional weights) supplied by the user as pointers to st...
Zoltan2::XpetraMultiVectorAdapter< tMVector_t > xMV_tMV_t
An adapter for Xpetra::MultiVector.
Zoltan2::XpetraCrsMatrixAdapter< tcrsMatrix_t, tMVector_t > xCM_tCM_t
Defines the BasicIdentifierAdapter class.
Zoltan2::XpetraMultiVectorAdapter< xMVector_t > xMV_xMV_t
Zoltan2::BasicVectorAdapter< tMVector_t > xCM_eCM_t
Defines the PartitioningProblem class.
Zoltan2::BasicVectorAdapter< userTypes_t > pamgen_adapter_t
Zoltan2::XpetraCrsMatrixAdapter< xcrsMatrix_t, tMVector_t > xCM_xCM_t
Defines the BasicVectorAdapter class.
Zoltan2::BasicIdentifierAdapter< userTypes_t > basic_id_t
Zoltan2::BaseAdapterRoot * getCoordinateAdapter() const