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;
121 const RCP<
const Comm<int> > &comm);
126 return adaptersSet.main.adapter;
130 return adaptersSet.main.adapterType;
134 return adaptersSet.coordinate.adapter;
138 return adaptersSet.coordinate.adapterType;
154 const ParameterList &pList,
const RCP<
const Comm<int> > &comm);
166 const ParameterList &pList,
const RCP<
const Comm<int> > &comm);
178 const ParameterList &pList,
const RCP<
const Comm<int> > &comm);
190 const ParameterList &pList,
const RCP<
const Comm<int> > &comm);
202 const ParameterList &pList,
const RCP<
const Comm<int> > &comm);
214 const ParameterList &pList,
const RCP<
const Comm<int> > &comm);
224 template <
typename T>
225 void InitializeVectorData(
const RCP<T> &data,
226 vector<const zscalar_t *> &coords,
227 vector<int> & strides,
230 #ifdef HAVE_EPETRA_DATA_TYPES 239 template <
typename T>
240 void InitializeEpetraVectorData(
const RCP<T> &data,
241 vector<const zscalar_t *> &coords,
242 vector<int> & strides,
250 const ParameterList &pList,
251 const RCP<
const Comm<int> > &comm)
253 if(!pList.isParameter(
"input adapter"))
255 std::cerr <<
"Input adapter unspecified" << std::endl;
260 std::string input_adapter_name = pList.get<
string>(
"input adapter");
262 if(input_adapter_name ==
"BasicIdentifier")
263 adaptersSet.main = getBasicIdentiferAdapterForInput(uinput, pList, comm);
264 else if(input_adapter_name ==
"XpetraMultiVector")
265 adaptersSet.main = getXpetraMVAdapterForInput(uinput, pList, comm);
266 else if(input_adapter_name ==
"XpetraCrsGraph")
267 adaptersSet = getXpetraCrsGraphAdapterForInput(uinput,pList, comm);
268 else if(input_adapter_name ==
"XpetraCrsMatrix")
269 adaptersSet = getXpetraCrsMatrixAdapterForInput(uinput,pList, comm);
270 else if(input_adapter_name ==
"BasicVector")
271 adaptersSet.main = getBasicVectorAdapterForInput(uinput,pList, comm);
272 else if(input_adapter_name ==
"PamgenMesh")
273 adaptersSet.main = getPamgenMeshAdapterForInput(uinput,pList, comm);
275 if(adaptersSet.main.adapter ==
nullptr) {
276 throw std::logic_error(
"AdapterFactory failed to create adapter!");
281 if( adaptersSet.main.adapter ) {
282 delete adaptersSet.main.adapter;
285 if( adaptersSet.coordinate.adapter ) {
286 delete adaptersSet.coordinate.adapter;
293 const ParameterList &pList,
294 const RCP<
const Comm<int> > &comm)
298 if(!pList.isParameter(
"data type"))
300 std::cerr <<
"Input data type unspecified" << std::endl;
304 string input_type = pList.get<
string>(
"data type");
308 std::cerr <<
"Input type: " + input_type +
" unavailable or misspelled." 313 vector<const zscalar_t *>
weights;
314 std::vector<int> weightStrides;
315 const zgno_t *globalIds = NULL;
316 size_t localCount = 0;
324 size_t cols = vtx_weights->getNumVectors();
325 for (
size_t i = 0; i< cols; i++) {
326 weights.push_back(vtx_weights->getData(i).getRawPtr());
327 weightStrides.push_back((
int)vtx_weights->getStride());
331 if(input_type ==
"coordinates")
334 globalIds = (
zgno_t *)data->getMap()->getNodeElementList().getRawPtr();
335 localCount = data->getLocalLength();
337 else if(input_type ==
"tpetra_vector")
340 globalIds = (
zgno_t *)data->getMap()->getNodeElementList().getRawPtr();
341 localCount = data->getLocalLength();
343 else if(input_type ==
"tpetra_multivector")
345 int nvec = pList.get<
int>(
"vector_dimension");
347 globalIds = (
zgno_t *)data->getMap()->getNodeElementList().getRawPtr();
348 localCount = data->getLocalLength();
350 else if(input_type ==
"tpetra_crs_graph")
353 globalIds = (
zgno_t *)data->getMap()->getNodeElementList().getRawPtr();
354 localCount = data->getNodeNumCols();
356 else if(input_type ==
"tpetra_crs_matrix")
359 globalIds = (
zgno_t *)data->getMap()->getNodeElementList().getRawPtr();
360 localCount = data->getNodeNumCols();
362 else if(input_type ==
"xpetra_vector")
365 globalIds = (
zgno_t *)data->getMap()->getNodeElementList().getRawPtr();
366 localCount = data->getLocalLength();
368 else if(input_type ==
"xpetra_multivector")
370 int nvec = pList.get<
int>(
"vector_dimension");
372 globalIds = (
zgno_t *)data->getMap()->getNodeElementList().getRawPtr();
373 localCount = data->getLocalLength();
375 else if(input_type ==
"xpetra_crs_graph")
378 globalIds = (
zgno_t *)data->getMap()->getNodeElementList().getRawPtr();
379 localCount = data->getNodeNumCols();
381 else if(input_type ==
"xpetra_crs_matrix")
384 globalIds = (
zgno_t *)data->getMap()->getNodeElementList().getRawPtr();
385 localCount = data->getNodeNumCols();
387 #ifdef HAVE_EPETRA_DATA_TYPES 388 else if(input_type ==
"epetra_vector")
390 RCP<Epetra_Vector> data = uinput->getUIEpetraVector();
391 globalIds = (
zgno_t *)data->Map().MyGlobalElements();
392 localCount = data->MyLength();
394 else if(input_type ==
"epetra_multivector")
396 int nvec = pList.get<
int>(
"vector_dimension");
397 RCP<Epetra_MultiVector> data = uinput->getUIEpetraMultiVector(nvec);
398 globalIds = (
zgno_t *)data->Map().MyGlobalElements();
399 localCount = data->MyLength();
401 else if(input_type ==
"epetra_crs_graph")
403 RCP<Epetra_CrsGraph> data = uinput->getUIEpetraCrsGraph();
404 globalIds = (
zgno_t *)data->Map().MyGlobalElements();
405 localCount = data->NumMyCols();
407 else if(input_type ==
"epetra_crs_matrix")
409 RCP<Epetra_CrsMatrix> data = uinput->getUIEpetraCrsMatrix();
410 globalIds = (
zgno_t *)data->Map().MyGlobalElements();
411 localCount = data->NumMyCols();
418 weights,weightStrides);
425 const ParameterList &pList,
426 const RCP<
const Comm<int> > &comm)
430 if(!pList.isParameter(
"data type"))
432 std::cerr <<
"Input data type unspecified" << std::endl;
436 string input_type = pList.get<
string>(
"data type");
439 std::cerr <<
"Input type:" + input_type +
", unavailable or misspelled." 444 vector<const zscalar_t *>
weights;
445 std::vector<int> weightStrides;
452 size_t weightsPerRow = vtx_weights->getNumVectors();
453 for (
size_t i = 0; i< weightsPerRow; i++) {
454 weights.push_back(vtx_weights->getData(i).getRawPtr());
455 weightStrides.push_back(1);
460 if(input_type ==
"coordinates")
463 RCP<const tMVector_t> const_data = rcp_const_cast<
const tMVector_t>(data);
471 else if(input_type ==
"tpetra_multivector")
473 int nvec = pList.get<
int>(
"vector_dimension");
475 RCP<const tMVector_t> const_data = rcp_const_cast<
const tMVector_t>(data);
482 else if(input_type ==
"xpetra_multivector")
484 int nvec = pList.get<
int>(
"vector_dimension");
486 RCP<const xMVector_t> const_data = rcp_const_cast<
const xMVector_t>(data);
494 #ifdef HAVE_EPETRA_DATA_TYPES 495 else if(input_type ==
"epetra_multivector")
497 int nvec = pList.get<
int>(
"vector_dimension");
498 RCP<Epetra_MultiVector> data = uinput->getUIEpetraMultiVector(nvec);
499 RCP<const Epetra_MultiVector> const_data = rcp_const_cast<
const Epetra_MultiVector>(data);
510 std::cerr <<
"Input data chosen not compatible with xpetra multi-vector adapter." << std::endl;
518 const ParameterList &pList,
519 const RCP<
const Comm<int> > &comm)
524 if(!pList.isParameter(
"data type"))
526 std::cerr <<
"Input data type unspecified" << std::endl;
530 string input_type = pList.get<
string>(
"data type");
533 std::cerr <<
"Input type: " + input_type +
", unavailable or misspelled." 538 vector<const zscalar_t *> vtx_weights;
539 vector<const zscalar_t *> edge_weights;
540 vector<int> vtx_weightStride;
541 vector<int> edge_weightStride;
546 RCP<tMVector_t> vtx_weights_tmp = uinput->
getUIWeights();
548 size_t weightsPerRow = vtx_weights_tmp->getNumVectors();
549 for (
size_t i = 0; i< weightsPerRow; i++) {
550 vtx_weights.push_back(vtx_weights_tmp->getData(i).getRawPtr());
551 vtx_weightStride.push_back(1);
560 size_t weightsPerRow = edge_weights_tmp->getNumVectors();
561 for (
size_t i = 0; i< weightsPerRow; i++) {
562 edge_weights.push_back(edge_weights_tmp->getData(i).getRawPtr());
563 edge_weightStride.push_back(1);
570 Teuchos::ParameterList pCopy(pList);
571 pCopy = pCopy.set<std::string>(
"data type",
"coordinates");
574 #define SET_COORDS_INPUT_1(adapterClass) \ 575 auto * ca = dynamic_cast<adapterClass*>(adapters.coordinate.adapter); \ 576 if(!ca) {throw std::logic_error( "Coordinate adapter case failed!" );} \ 577 ia->setCoordinateInput(ca); 579 if(input_type ==
"tpetra_crs_graph")
582 RCP<const tcrsGraph_t> const_data = rcp_const_cast<
const tcrsGraph_t>(data);
584 xCG_tCG_t * ia =
new xCG_tCG_t(const_data,(
int)vtx_weights.size(),(int)edge_weights.size());
588 if(!vtx_weights.empty()) {
589 for(
int i = 0; i < (int)vtx_weights.size(); i++)
590 ia->setVertexWeights(vtx_weights[i],vtx_weightStride[i],i);
593 if(!edge_weights.empty()) {
594 for(
int i = 0; i < (int)edge_weights.size(); i++)
595 ia->setEdgeWeights(edge_weights[i],edge_weightStride[i],i);
599 adapters.
coordinate = getXpetraMVAdapterForInput(uinput, pCopy, comm);
603 else if(input_type ==
"xpetra_crs_graph")
606 RCP<const xcrsGraph_t> const_data = rcp_const_cast<
const xcrsGraph_t>(data);
608 xCG_xCG_t * ia =
new xCG_xCG_t(const_data, (
int)vtx_weights.size(), (int)edge_weights.size());
611 if(!vtx_weights.empty())
613 for(
int i = 0; i < (int)vtx_weights.size(); i++)
614 ia->setVertexWeights(vtx_weights[i],vtx_weightStride[i],i);
617 if(!edge_weights.empty())
619 for(
int i = 0; i < (int)edge_weights.size(); i++)
620 ia->setEdgeWeights(edge_weights[i],edge_weightStride[i],i);
624 adapters.
coordinate = getXpetraMVAdapterForInput(uinput, pCopy, comm);
628 #ifdef HAVE_EPETRA_DATA_TYPES 630 else if(input_type ==
"epetra_crs_graph")
632 RCP<Epetra_CrsGraph> data = uinput->getUIEpetraCrsGraph();
633 RCP<const Epetra_CrsGraph> const_data = rcp_const_cast<
const Epetra_CrsGraph>(data);
634 xCG_eCG_t * ia =
new xCG_eCG_t(const_data,(
int)vtx_weights.size(),(int)edge_weights.size());
637 if(!vtx_weights.empty())
639 for(
int i = 0; i < (int)vtx_weights.size(); i++)
640 ia->setVertexWeights(vtx_weights[i],vtx_weightStride[i],i);
643 if(!edge_weights.empty())
645 for(
int i = 0; i < (int)edge_weights.size(); i++)
646 ia->setEdgeWeights(edge_weights[i],edge_weightStride[i],i);
650 adapters.
coordinate = getXpetraMVAdapterForInput(uinput, pCopy, comm);
657 std::cerr <<
"Input data chosen not compatible with " 658 <<
"XpetraCrsGraph adapter." << std::endl;
668 const ParameterList &pList,
669 const RCP<
const Comm<int> > &comm)
673 if(!pList.isParameter(
"data type"))
675 std::cerr <<
"Input data type unspecified" << std::endl;
679 string input_type = pList.get<
string>(
"data type");
682 std::cerr <<
"Input type:" + input_type +
", unavailable or misspelled." 687 vector<const zscalar_t *>
weights;
693 if(comm->getRank() == 0) cout <<
"Have weights...." << endl;
697 int weightsPerRow = (int)vtx_weights->getNumVectors();
698 for (
int i = 0; i< weightsPerRow; i++)
700 weights.push_back(vtx_weights->getData(i).getRawPtr());
701 strides.push_back(1);
709 Teuchos::ParameterList pCopy(pList);
710 pCopy = pCopy.set<std::string>(
"data type",
"coordinates");
713 #define SET_COORDS_INPUT_2(adapterClass) \ 714 auto * ca = dynamic_cast<adapterClass*>(adapters.coordinate.adapter); \ 715 if(!ca) {throw std::logic_error( "Coordinate adapter case failed!" );} \ 716 ia->setCoordinateInput(ca); 719 if(input_type ==
"tpetra_crs_matrix")
721 if(comm->getRank() == 0) cout <<
"Make tpetra crs matrix adapter...." << endl;
725 RCP<const tcrsMatrix_t> const_data = rcp_const_cast<
const tcrsMatrix_t>(data);
735 for(
int i = 0; i < (int)weights.size(); i++)
736 ia->setWeights(weights[i],strides[i],i);
740 adapters.
coordinate = getXpetraMVAdapterForInput(uinput, pCopy, comm);
744 else if(input_type ==
"xpetra_crs_matrix")
747 RCP<const xcrsMatrix_t> const_data = rcp_const_cast<
const xcrsMatrix_t>(data);
757 for(
int i = 0; i < (int)weights.size(); i++)
758 ia->setWeights(weights[i],strides[i],i);
762 adapters.
coordinate = getXpetraMVAdapterForInput(uinput, pCopy, comm);
766 #ifdef HAVE_EPETRA_DATA_TYPES 767 else if(input_type ==
"epetra_crs_matrix")
769 RCP<Epetra_CrsMatrix> data = uinput->getUIEpetraCrsMatrix();
770 RCP<const Epetra_CrsMatrix> const_data = rcp_const_cast<
const Epetra_CrsMatrix>(data);
780 for(
int i = 0; i < (int)weights.size(); i++)
781 ia->setWeights(weights[i],strides[i],i);
785 adapters.
coordinate = getXpetraMVAdapterForInput(uinput, pCopy, comm);
793 std::cerr <<
"Input data chosen not compatible with " 794 <<
"XpetraCrsMatrix adapter." << std::endl;
803 const ParameterList &pList,
804 const RCP<
const Comm<int> > &comm)
809 if(!pList.isParameter(
"data type"))
811 std::cerr <<
"Input data type unspecified" << std::endl;
815 string input_type = pList.get<
string>(
"data type");
818 std::cerr <<
"Input type:" + input_type +
", unavailable or misspelled." 823 std::vector<const zscalar_t *>
weights;
824 std::vector<int> weightStrides;
834 size_t cols = vtx_weights->getNumVectors();
835 for (
size_t i = 0; i< cols; i++) {
836 weights.push_back(vtx_weights->getData(i).getRawPtr());
837 weightStrides.push_back(1);
843 if(pList.isParameter(
"stride"))
844 stride = pList.get<
int>(
"stride");
848 if(input_type ==
"coordinates")
851 globalIds = (
zgno_t *)data->getMap()->getNodeElementList().getRawPtr();
852 localCount =
static_cast<zlno_t>(data->getLocalLength());
855 std::vector<const zscalar_t *> coords;
856 std::vector<int> entry_strides;
857 InitializeVectorData(data,coords,entry_strides,stride);
861 if (weights.empty()) {
862 size_t dim = coords.size();
863 size_t push_null = 3-dim;
864 for (
size_t i = 0; i < push_null; i ++) coords.push_back(NULL);
870 stride, stride, stride);
871 }
else if (weights.size() == 1) {
872 size_t dim = coords.size();
873 size_t push_null = 3-dim;
874 for (
size_t i = 0; i < push_null; i ++) coords.push_back(NULL);
880 stride, stride, stride,
888 coords, entry_strides,
889 weights, weightStrides);
892 else if(input_type ==
"tpetra_vector")
895 globalIds = (
zgno_t *)data->getMap()->getNodeElementList().getRawPtr();
896 localCount =
static_cast<zlno_t>(data->getLocalLength());
899 vector<const zscalar_t *> coords;
900 vector<int> entry_strides;
901 InitializeVectorData(data,coords,entry_strides,stride);
906 coords[0], entry_strides[0]);
909 coords[0], entry_strides[0],
917 else if(input_type ==
"tpetra_multivector")
919 int nvec = pList.get<
int>(
"vector_dimension");
922 globalIds = (
zgno_t *)data->getMap()->getNodeElementList().getRawPtr();
923 localCount =
static_cast<zlno_t>(data->getLocalLength());
926 vector<const zscalar_t *> coords;
927 vector<int> entry_strides;
928 InitializeVectorData(data,coords,entry_strides,stride);
931 coords, entry_strides,
932 weights,weightStrides);
935 else if(input_type ==
"xpetra_vector")
938 globalIds = (
zgno_t *)data->getMap()->getNodeElementList().getRawPtr();
939 localCount =
static_cast<zlno_t>(data->getLocalLength());
942 vector<const zscalar_t *> coords;
943 vector<int> entry_strides;
944 InitializeVectorData(data,coords,entry_strides,stride);
949 coords[0], entry_strides[0]);
952 coords[0], entry_strides[0],
959 else if(input_type ==
"xpetra_multivector")
961 int nvec = pList.get<
int>(
"vector_dimension");
963 globalIds = (
zgno_t *)data->getMap()->getNodeElementList().getRawPtr();
964 localCount =
static_cast<zlno_t>(data->getLocalLength());
967 vector<const zscalar_t *> coords;
968 vector<int> entry_strides;
969 InitializeVectorData(data,coords,entry_strides,stride);
970 if(comm->getRank() == 0) cout <<
"size of entry strides: " << entry_strides.size() << endl;
971 if(comm->getRank() == 0) cout <<
"size of coords: " << coords.size() << endl;
975 coords, entry_strides,
976 weights,weightStrides);
979 #ifdef HAVE_EPETRA_DATA_TYPES 980 else if(input_type ==
"epetra_vector")
982 RCP<Epetra_Vector> data = uinput->getUIEpetraVector();
983 globalIds = (
zgno_t *)data->Map().MyGlobalElements();
984 localCount =
static_cast<zlno_t>(data->MyLength());
987 vector<const zscalar_t *> coords;
988 vector<int> entry_strides;
989 InitializeEpetraVectorData(data,coords,entry_strides,stride);
993 coords[0], entry_strides[0]);
996 coords[0], entry_strides[0],
1005 else if(input_type ==
"epetra_multivector")
1007 int nvec = pList.get<
int>(
"vector_dimension");
1008 RCP<Epetra_MultiVector> data = uinput->getUIEpetraMultiVector(nvec);
1009 globalIds = (
zgno_t *)data->Map().MyGlobalElements();
1010 localCount = data->MyLength();
1012 vector<const zscalar_t *> coords;
1013 vector<int> entry_strides;
1014 InitializeEpetraVectorData(data,coords,entry_strides,stride);
1018 coords, entry_strides,
1019 weights,weightStrides);
1027 template <
typename T>
1028 void AdapterFactory::InitializeVectorData(
const RCP<T> &data,
1029 vector<const zscalar_t *> &coords,
1030 vector<int> & strides,
1034 size_t localCount = data->getLocalLength();
1035 size_t nvecs = data->getNumVectors();
1036 size_t vecsize = data->getNumVectors() * data->getLocalLength();
1040 ArrayRCP<zscalar_t> *petravectors =
new ArrayRCP<zscalar_t>[nvecs];
1043 for (
size_t i = 0; i < nvecs; i++)
1044 petravectors[i] = data->getDataNonConst(i);
1060 if(stride == 1 || stride != (
int)nvecs)
1062 for (
size_t i = 0; i < nvecs; i++) {
1063 for (
size_t j = 0; j < localCount; j++) {
1064 coordarr[idx++] = petravectors[i][j];
1069 for (
size_t j = 0; j < localCount; j++) {
1070 for (
size_t i = 0; i < nvecs; i++) {
1071 coordarr[idx++] = petravectors[i][j];
1084 coords = std::vector<const zscalar_t *>(nvecs);
1085 strides = std::vector<int>(nvecs);
1087 for (
size_t i = 0; i < nvecs; i++) {
1089 coords[i] = &coordarr[i*localCount];
1091 coords[i] = &coordarr[i];
1093 strides[i] = stride;
1109 delete [] petravectors;
1112 #ifdef HAVE_EPETRA_DATA_TYPES 1114 template <
typename T>
1115 void AdapterFactory::InitializeEpetraVectorData(
const RCP<T> &data,
1116 vector<const zscalar_t *> &coords,
1117 vector<int> & strides,
1119 size_t localCount = data->MyLength();
1120 size_t nvecs = data->NumVectors();
1121 size_t vecsize = nvecs * localCount;
1126 vector<zscalar_t *> epetravectors(nvecs);
1129 data->ExtractView(&arr);
1131 for(
size_t k = 0; k < nvecs; k++)
1133 epetravectors[k] = arr[k];
1140 if(stride == 1 || stride != (
int)nvecs)
1142 for (
size_t i = 0; i < nvecs; i++) {
1143 for (
size_t j = 0; j < localCount; j++) {
1144 coordarr[idx++] = epetravectors[i][j];
1149 for (
size_t j = 0; j < localCount; j++) {
1150 for (
size_t i = 0; i < nvecs; i++) {
1151 coordarr[idx++] = epetravectors[i][j];
1163 coords = std::vector<const zscalar_t *>(nvecs);
1164 strides = std::vector<int>(nvecs);
1166 for (
size_t i = 0; i < nvecs; i++) {
1168 coords[i] = &coordarr[i*localCount];
1170 coords[i] = &coordarr[i];
1172 strides[i] = stride;
1193 const ParameterList &pList,
1194 const RCP<
const Comm<int> > &comm)
1198 #ifdef HAVE_ZOLTAN2_PAMGEN 1211 std::cerr <<
"Pamgen mesh is unavailable for PamgenMeshAdapter!" 1217 throw std::runtime_error(
"Pamgen input requested but Trilinos is not " 1218 "built with Pamgen");
InputTraits< User >::scalar_t scalar_t
Tpetra::CrsMatrix< zscalar_t, zlno_t, zgno_t, znode_t > tcrsMatrix_t
Zoltan2::XpetraCrsGraphAdapter< tcrsGraph_t, tMVector_t > xCG_tCG_t
Defines Parameter related enumerators, declares functions.
Provides access for Zoltan2 to Xpetra::CrsMatrix data.
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
EAdapterType getCoordinateAdapterType() const
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.
Xpetra::MultiVector< zscalar_t, zlno_t, zgno_t, znode_t > xMVector_t
EAdapterType getMainAdapterType() const
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::BaseAdapterRoot * getMainAdapter() const
Zoltan2::XpetraMultiVectorAdapter< xMVector_t > xMV_xMV_t
Zoltan2::BasicVectorAdapter< tMVector_t > xCM_eCM_t
Zoltan2::BaseAdapterRoot * getCoordinateAdapter() const
Defines the PartitioningProblem class.
Zoltan2::XpetraCrsMatrixAdapter< xcrsMatrix_t, tMVector_t > xCM_xCM_t
Defines the BasicVectorAdapter class.
Zoltan2::BasicIdentifierAdapter< userTypes_t > basic_id_t
Zoltan2::BasicVectorAdapter< tMVector_t > pamgen_adapter_t