15 #ifndef ADAPTERFORTESTS
16 #define ADAPTERFORTESTS
30 #ifdef HAVE_ZOLTAN2_PAMGEN
34 #include <Teuchos_DefaultComm.hpp>
35 #include <Teuchos_XMLObject.hpp>
36 #include <Teuchos_FileInputSource.hpp>
38 #include <Tpetra_MultiVector.hpp>
39 #include <Tpetra_CrsMatrix.hpp>
46 using Teuchos::ArrayRCP;
47 using Teuchos::ArrayView;
52 using Teuchos::rcp_const_cast;
53 using Teuchos::ParameterList;
55 using namespace Zoltan2_TestingFramework;
84 const RCP<
const Comm<int> > &comm);
89 return adaptersSet.main.adapter;
93 return adaptersSet.main.adapterType;
97 return adaptersSet.coordinate.adapter;
101 return adaptersSet.coordinate.adapterType;
117 const ParameterList &pList,
const RCP<
const Comm<int> > &comm);
129 const ParameterList &pList,
const RCP<
const Comm<int> > &comm);
141 const ParameterList &pList,
const RCP<
const Comm<int> > &comm);
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);
187 template <
typename T>
188 void InitializeVectorData(
const RCP<T> &data,
189 std::vector<const zscalar_t *> &coords,
190 std::vector<int> & strides,
193 #ifdef HAVE_EPETRA_DATA_TYPES
202 template <
typename T>
203 void InitializeEpetraVectorData(
const RCP<T> &data,
204 std::vector<const zscalar_t *> &coords,
205 std::vector<int> & strides,
213 const ParameterList &pList,
214 const RCP<
const Comm<int> > &comm)
216 if(!pList.isParameter(
"input adapter"))
218 std::cerr <<
"Input adapter unspecified" << std::endl;
223 std::string input_adapter_name = pList.get<
string>(
"input adapter");
225 if(input_adapter_name ==
"BasicIdentifier")
226 adaptersSet.main = getBasicIdentiferAdapterForInput(uinput, pList, comm);
227 else if(input_adapter_name ==
"XpetraMultiVector")
228 adaptersSet.main = getXpetraMVAdapterForInput(uinput, pList, comm);
229 else if(input_adapter_name ==
"XpetraCrsGraph")
230 adaptersSet = getXpetraCrsGraphAdapterForInput(uinput,pList, comm);
231 else if(input_adapter_name ==
"XpetraCrsMatrix")
232 adaptersSet = getXpetraCrsMatrixAdapterForInput(uinput,pList, comm);
233 else if(input_adapter_name ==
"BasicVector")
234 adaptersSet.main = getBasicVectorAdapterForInput(uinput,pList, comm);
235 else if(input_adapter_name ==
"PamgenMesh")
236 adaptersSet.main = getPamgenMeshAdapterForInput(uinput,pList, comm);
238 if(adaptersSet.main.adapter ==
nullptr) {
239 throw std::logic_error(
"AdapterFactory failed to create adapter!");
244 if( adaptersSet.main.adapter ) {
245 delete adaptersSet.main.adapter;
248 if( adaptersSet.coordinate.adapter ) {
249 delete adaptersSet.coordinate.adapter;
256 const ParameterList &pList,
257 const RCP<
const Comm<int> > &comm)
261 if(!pList.isParameter(
"data type"))
263 std::cerr <<
"Input data type unspecified" << std::endl;
267 string input_type = pList.get<
string>(
"data type");
271 std::cerr <<
"Input type: " + input_type +
" unavailable or misspelled."
276 std::vector<const zscalar_t *>
weights;
277 std::vector<int> weightStrides;
278 const zgno_t *globalIds = NULL;
279 size_t localCount = 0;
287 size_t cols = vtx_weights->getNumVectors();
288 for (
size_t i = 0; i< cols; i++) {
289 weights.push_back(vtx_weights->getData(i).getRawPtr());
290 weightStrides.push_back((
int)vtx_weights->getStride());
294 if(input_type ==
"coordinates")
297 globalIds = (
zgno_t *)data->getMap()->getLocalElementList().getRawPtr();
298 localCount = data->getLocalLength();
300 else if(input_type ==
"tpetra_vector")
303 globalIds = (
zgno_t *)data->getMap()->getLocalElementList().getRawPtr();
304 localCount = data->getLocalLength();
306 else if(input_type ==
"tpetra_multivector")
308 int nvec = pList.get<
int>(
"vector_dimension");
310 globalIds = (
zgno_t *)data->getMap()->getLocalElementList().getRawPtr();
311 localCount = data->getLocalLength();
313 else if(input_type ==
"tpetra_crs_graph")
316 globalIds = (
zgno_t *)data->getMap()->getLocalElementList().getRawPtr();
317 localCount = data->getLocalNumCols();
319 else if(input_type ==
"tpetra_crs_matrix")
322 globalIds = (
zgno_t *)data->getMap()->getLocalElementList().getRawPtr();
323 localCount = data->getLocalNumCols();
325 else if(input_type ==
"xpetra_vector")
328 globalIds = (
zgno_t *)data->getMap()->getLocalElementList().getRawPtr();
329 localCount = data->getLocalLength();
331 else if(input_type ==
"xpetra_multivector")
333 int nvec = pList.get<
int>(
"vector_dimension");
335 globalIds = (
zgno_t *)data->getMap()->getLocalElementList().getRawPtr();
336 localCount = data->getLocalLength();
338 else if(input_type ==
"xpetra_crs_graph")
341 globalIds = (
zgno_t *)data->getMap()->getLocalElementList().getRawPtr();
342 localCount = data->getLocalNumCols();
344 else if(input_type ==
"xpetra_crs_matrix")
347 globalIds = (
zgno_t *)data->getMap()->getLocalElementList().getRawPtr();
348 localCount = data->getLocalNumCols();
350 #ifdef HAVE_EPETRA_DATA_TYPES
351 else if(input_type ==
"epetra_vector")
353 RCP<Epetra_Vector> data = uinput->getUIEpetraVector();
354 globalIds = (
zgno_t *)data->Map().MyGlobalElements();
355 localCount = data->MyLength();
357 else if(input_type ==
"epetra_multivector")
359 int nvec = pList.get<
int>(
"vector_dimension");
360 RCP<Epetra_MultiVector> data = uinput->getUIEpetraMultiVector(nvec);
361 globalIds = (
zgno_t *)data->Map().MyGlobalElements();
362 localCount = data->MyLength();
364 else if(input_type ==
"epetra_crs_graph")
366 RCP<Epetra_CrsGraph> data = uinput->getUIEpetraCrsGraph();
367 globalIds = (
zgno_t *)data->Map().MyGlobalElements();
368 localCount = data->NumMyCols();
370 else if(input_type ==
"epetra_crs_matrix")
372 RCP<Epetra_CrsMatrix> data = uinput->getUIEpetraCrsMatrix();
373 globalIds = (
zgno_t *)data->Map().MyGlobalElements();
374 localCount = data->NumMyCols();
381 weights,weightStrides);
388 const ParameterList &pList,
389 const RCP<
const Comm<int> > &comm)
393 if(!pList.isParameter(
"data type"))
395 std::cerr <<
"Input data type unspecified" << std::endl;
399 string input_type = pList.get<
string>(
"data type");
402 std::cerr <<
"Input type:" + input_type +
", unavailable or misspelled."
407 std::vector<const zscalar_t *>
weights;
408 std::vector<int> weightStrides;
415 size_t weightsPerRow = vtx_weights->getNumVectors();
416 for (
size_t i = 0; i< weightsPerRow; i++) {
417 weights.push_back(vtx_weights->getData(i).getRawPtr());
418 weightStrides.push_back(1);
423 if(input_type ==
"coordinates")
426 RCP<const tMVector_t> const_data = rcp_const_cast<
const tMVector_t>(data);
434 else if(input_type ==
"tpetra_multivector")
436 int nvec = pList.get<
int>(
"vector_dimension");
438 RCP<const tMVector_t> const_data = rcp_const_cast<
const tMVector_t>(data);
445 else if(input_type ==
"xpetra_multivector")
447 int nvec = pList.get<
int>(
"vector_dimension");
449 RCP<const xMVector_t> const_data = rcp_const_cast<
const xMVector_t>(data);
457 #ifdef HAVE_EPETRA_DATA_TYPES
458 else if(input_type ==
"epetra_multivector")
460 int nvec = pList.get<
int>(
"vector_dimension");
461 RCP<Epetra_MultiVector> data = uinput->getUIEpetraMultiVector(nvec);
462 RCP<const Epetra_MultiVector> const_data = rcp_const_cast<
const Epetra_MultiVector>(data);
473 std::cerr <<
"Input data chosen not compatible with xpetra multi-vector adapter." << std::endl;
481 const ParameterList &pList,
482 const RCP<
const Comm<int> > &comm)
487 if(!pList.isParameter(
"data type"))
489 std::cerr <<
"Input data type unspecified" << std::endl;
493 string input_type = pList.get<
string>(
"data type");
496 std::cerr <<
"Input type: " + input_type +
", unavailable or misspelled."
501 std::vector<const zscalar_t *> vtx_weights;
502 std::vector<const zscalar_t *> edge_weights;
503 std::vector<int> vtx_weightStride;
504 std::vector<int> edge_weightStride;
509 RCP<tMVector_t> vtx_weights_tmp = uinput->
getUIWeights();
511 size_t weightsPerRow = vtx_weights_tmp->getNumVectors();
512 for (
size_t i = 0; i< weightsPerRow; i++) {
513 vtx_weights.push_back(vtx_weights_tmp->getData(i).getRawPtr());
514 vtx_weightStride.push_back(1);
523 size_t weightsPerRow = edge_weights_tmp->getNumVectors();
524 for (
size_t i = 0; i< weightsPerRow; i++) {
525 edge_weights.push_back(edge_weights_tmp->getData(i).getRawPtr());
526 edge_weightStride.push_back(1);
533 Teuchos::ParameterList pCopy(pList);
534 pCopy = pCopy.set<std::string>(
"data type",
"coordinates");
537 #define SET_COORDS_INPUT_1(adapterClass) \
538 auto * ca = dynamic_cast<adapterClass*>(adapters.coordinate.adapter); \
539 if(!ca) {throw std::logic_error( "Coordinate adapter case failed!" );} \
540 ia->setCoordinateInput(ca);
542 if(input_type ==
"tpetra_crs_graph")
545 RCP<const tcrsGraph_t> const_data = rcp_const_cast<
const tcrsGraph_t>(data);
547 xCG_tCG_t * ia =
new xCG_tCG_t(const_data,(
int)vtx_weights.size(),(int)edge_weights.size());
551 if(!vtx_weights.empty()) {
552 for(
int i = 0; i < (int)vtx_weights.size(); i++)
553 ia->setVertexWeights(vtx_weights[i],vtx_weightStride[i],i);
556 if(!edge_weights.empty()) {
557 for(
int i = 0; i < (int)edge_weights.size(); i++)
558 ia->setEdgeWeights(edge_weights[i],edge_weightStride[i],i);
562 adapters.
coordinate = getXpetraMVAdapterForInput(uinput, pCopy, comm);
566 else if(input_type ==
"xpetra_crs_graph")
569 RCP<const xcrsGraph_t> const_data = rcp_const_cast<
const xcrsGraph_t>(data);
571 xCG_xCG_t * ia =
new xCG_xCG_t(const_data, (
int)vtx_weights.size(), (int)edge_weights.size());
574 if(!vtx_weights.empty())
576 for(
int i = 0; i < (int)vtx_weights.size(); i++)
577 ia->setVertexWeights(vtx_weights[i],vtx_weightStride[i],i);
580 if(!edge_weights.empty())
582 for(
int i = 0; i < (int)edge_weights.size(); i++)
583 ia->setEdgeWeights(edge_weights[i],edge_weightStride[i],i);
587 adapters.
coordinate = getXpetraMVAdapterForInput(uinput, pCopy, comm);
591 #ifdef HAVE_EPETRA_DATA_TYPES
593 else if(input_type ==
"epetra_crs_graph")
595 RCP<Epetra_CrsGraph> data = uinput->getUIEpetraCrsGraph();
596 RCP<const Epetra_CrsGraph> const_data = rcp_const_cast<
const Epetra_CrsGraph>(data);
597 xCG_eCG_t * ia =
new xCG_eCG_t(const_data,(
int)vtx_weights.size(),(int)edge_weights.size());
600 if(!vtx_weights.empty())
602 for(
int i = 0; i < (int)vtx_weights.size(); i++)
603 ia->setVertexWeights(vtx_weights[i],vtx_weightStride[i],i);
606 if(!edge_weights.empty())
608 for(
int i = 0; i < (int)edge_weights.size(); i++)
609 ia->setEdgeWeights(edge_weights[i],edge_weightStride[i],i);
613 adapters.
coordinate = getXpetraMVAdapterForInput(uinput, pCopy, comm);
620 std::cerr <<
"Input data chosen not compatible with "
621 <<
"XpetraCrsGraph adapter." << std::endl;
631 const ParameterList &pList,
632 const RCP<
const Comm<int> > &comm)
636 if(!pList.isParameter(
"data type"))
638 std::cerr <<
"Input data type unspecified" << std::endl;
642 string input_type = pList.get<
string>(
"data type");
645 std::cerr <<
"Input type:" + input_type +
", unavailable or misspelled."
650 std::vector<const zscalar_t *>
weights;
651 std::vector<int> strides;
656 if(comm->getRank() == 0) std::cout <<
"Have weights...." << std::endl;
660 int weightsPerRow = (int)vtx_weights->getNumVectors();
661 for (
int i = 0; i< weightsPerRow; i++)
663 weights.push_back(vtx_weights->getData(i).getRawPtr());
664 strides.push_back(1);
672 Teuchos::ParameterList pCopy(pList);
673 pCopy = pCopy.set<std::string>(
"data type",
"coordinates");
676 #define SET_COORDS_INPUT_2(adapterClass) \
677 auto * ca = dynamic_cast<adapterClass*>(adapters.coordinate.adapter); \
678 if(!ca) {throw std::logic_error( "Coordinate adapter case failed!" );} \
679 ia->setCoordinateInput(ca);
682 if(input_type ==
"tpetra_crs_matrix")
684 if(comm->getRank() == 0) std::cout <<
"Make tpetra crs matrix adapter...." << std::endl;
688 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);
703 adapters.
coordinate = getXpetraMVAdapterForInput(uinput, pCopy, comm);
707 else if(input_type ==
"xpetra_crs_matrix")
710 RCP<const xcrsMatrix_t> const_data = rcp_const_cast<
const xcrsMatrix_t>(data);
720 for(
int i = 0; i < (int)weights.size(); i++)
721 ia->setWeights(weights[i],strides[i],i);
725 adapters.
coordinate = getXpetraMVAdapterForInput(uinput, pCopy, comm);
729 #ifdef HAVE_EPETRA_DATA_TYPES
730 else if(input_type ==
"epetra_crs_matrix")
732 RCP<Epetra_CrsMatrix> data = uinput->getUIEpetraCrsMatrix();
733 RCP<const Epetra_CrsMatrix> const_data = rcp_const_cast<
const Epetra_CrsMatrix>(data);
743 for(
int i = 0; i < (int)weights.size(); i++)
744 ia->setWeights(weights[i],strides[i],i);
748 adapters.
coordinate = getXpetraMVAdapterForInput(uinput, pCopy, comm);
756 std::cerr <<
"Input data chosen not compatible with "
757 <<
"XpetraCrsMatrix adapter." << std::endl;
766 const ParameterList &pList,
767 const RCP<
const Comm<int> > &comm)
772 if(!pList.isParameter(
"data type"))
774 std::cerr <<
"Input data type unspecified" << std::endl;
778 string input_type = pList.get<
string>(
"data type");
781 std::cerr <<
"Input type:" + input_type +
", unavailable or misspelled."
786 std::vector<const zscalar_t *>
weights;
787 std::vector<int> weightStrides;
797 size_t cols = vtx_weights->getNumVectors();
798 for (
size_t i = 0; i< cols; i++) {
799 weights.push_back(vtx_weights->getData(i).getRawPtr());
800 weightStrides.push_back(1);
806 if(pList.isParameter(
"stride"))
807 stride = pList.get<
int>(
"stride");
811 if(input_type ==
"coordinates")
814 globalIds = (
zgno_t *)data->getMap()->getLocalElementList().getRawPtr();
815 localCount =
static_cast<zlno_t>(data->getLocalLength());
818 std::vector<const zscalar_t *> coords;
819 std::vector<int> entry_strides;
820 InitializeVectorData(data,coords,entry_strides,stride);
824 if (weights.empty()) {
825 size_t dim = coords.size();
826 size_t push_null = 3-dim;
827 for (
size_t i = 0; i < push_null; i ++) coords.push_back(NULL);
833 stride, stride, stride);
834 }
else if (weights.size() == 1) {
835 size_t dim = coords.size();
836 size_t push_null = 3-dim;
837 for (
size_t i = 0; i < push_null; i ++) coords.push_back(NULL);
843 stride, stride, stride,
851 coords, entry_strides,
852 weights, weightStrides);
855 else if(input_type ==
"tpetra_vector")
858 globalIds = (
zgno_t *)data->getMap()->getLocalElementList().getRawPtr();
859 localCount =
static_cast<zlno_t>(data->getLocalLength());
862 std::vector<const zscalar_t *> coords;
863 std::vector<int> entry_strides;
864 InitializeVectorData(data,coords,entry_strides,stride);
869 coords[0], entry_strides[0]);
872 coords[0], entry_strides[0],
880 else if(input_type ==
"tpetra_multivector")
882 int nvec = pList.get<
int>(
"vector_dimension");
885 globalIds = (
zgno_t *)data->getMap()->getLocalElementList().getRawPtr();
886 localCount =
static_cast<zlno_t>(data->getLocalLength());
889 std::vector<const zscalar_t *> coords;
890 std::vector<int> entry_strides;
891 InitializeVectorData(data,coords,entry_strides,stride);
894 coords, entry_strides,
895 weights,weightStrides);
898 else if(input_type ==
"xpetra_vector")
901 globalIds = (
zgno_t *)data->getMap()->getLocalElementList().getRawPtr();
902 localCount =
static_cast<zlno_t>(data->getLocalLength());
905 std::vector<const zscalar_t *> coords;
906 std::vector<int> entry_strides;
907 InitializeVectorData(data,coords,entry_strides,stride);
912 coords[0], entry_strides[0]);
915 coords[0], entry_strides[0],
922 else if(input_type ==
"xpetra_multivector")
924 int nvec = pList.get<
int>(
"vector_dimension");
926 globalIds = (
zgno_t *)data->getMap()->getLocalElementList().getRawPtr();
927 localCount =
static_cast<zlno_t>(data->getLocalLength());
930 std::vector<const zscalar_t *> coords;
931 std::vector<int> entry_strides;
932 InitializeVectorData(data,coords,entry_strides,stride);
933 if(comm->getRank() == 0) std::cout <<
"size of entry strides: " << entry_strides.size() << std::endl;
934 if(comm->getRank() == 0) std::cout <<
"size of coords: " << coords.size() << std::endl;
938 coords, entry_strides,
939 weights,weightStrides);
942 #ifdef HAVE_EPETRA_DATA_TYPES
943 else if(input_type ==
"epetra_vector")
945 RCP<Epetra_Vector> data = uinput->getUIEpetraVector();
946 globalIds = (
zgno_t *)data->Map().MyGlobalElements();
947 localCount =
static_cast<zlno_t>(data->MyLength());
950 std::vector<const zscalar_t *> coords;
951 std::vector<int> entry_strides;
952 InitializeEpetraVectorData(data,coords,entry_strides,stride);
956 coords[0], entry_strides[0]);
959 coords[0], entry_strides[0],
968 else if(input_type ==
"epetra_multivector")
970 int nvec = pList.get<
int>(
"vector_dimension");
971 RCP<Epetra_MultiVector> data = uinput->getUIEpetraMultiVector(nvec);
972 globalIds = (
zgno_t *)data->Map().MyGlobalElements();
973 localCount = data->MyLength();
975 std::vector<const zscalar_t *> coords;
976 std::vector<int> entry_strides;
977 InitializeEpetraVectorData(data,coords,entry_strides,stride);
981 coords, entry_strides,
982 weights,weightStrides);
990 template <
typename T>
991 void AdapterFactory::InitializeVectorData(
const RCP<T> &data,
992 std::vector<const zscalar_t *> &coords,
993 std::vector<int> & strides,
997 size_t localCount = data->getLocalLength();
998 size_t nvecs = data->getNumVectors();
999 size_t vecsize = data->getNumVectors() * data->getLocalLength();
1003 ArrayRCP<zscalar_t> *petravectors =
new ArrayRCP<zscalar_t>[nvecs];
1006 for (
size_t i = 0; i < nvecs; i++)
1007 petravectors[i] = data->getDataNonConst(i);
1023 if(stride == 1 || stride != (
int)nvecs)
1025 for (
size_t i = 0; i < nvecs; i++) {
1026 for (
size_t j = 0; j < localCount; j++) {
1027 coordarr[idx++] = petravectors[i][j];
1032 for (
size_t j = 0; j < localCount; j++) {
1033 for (
size_t i = 0; i < nvecs; i++) {
1034 coordarr[idx++] = petravectors[i][j];
1047 coords = std::vector<const zscalar_t *>(nvecs);
1048 strides = std::vector<int>(nvecs);
1050 for (
size_t i = 0; i < nvecs; i++) {
1052 coords[i] = &coordarr[i*localCount];
1054 coords[i] = &coordarr[i];
1056 strides[i] = stride;
1072 delete [] petravectors;
1075 #ifdef HAVE_EPETRA_DATA_TYPES
1077 template <
typename T>
1078 void AdapterFactory::InitializeEpetraVectorData(
const RCP<T> &data,
1079 std::vector<const zscalar_t *> &coords,
1080 std::vector<int> & strides,
1082 size_t localCount = data->MyLength();
1083 size_t nvecs = data->NumVectors();
1084 size_t vecsize = nvecs * localCount;
1089 std::vector<zscalar_t *> epetravectors(nvecs);
1092 data->ExtractView(&arr);
1094 for(
size_t k = 0; k < nvecs; k++)
1096 epetravectors[k] = arr[k];
1103 if(stride == 1 || stride != (
int)nvecs)
1105 for (
size_t i = 0; i < nvecs; i++) {
1106 for (
size_t j = 0; j < localCount; j++) {
1107 coordarr[idx++] = epetravectors[i][j];
1112 for (
size_t j = 0; j < localCount; j++) {
1113 for (
size_t i = 0; i < nvecs; i++) {
1114 coordarr[idx++] = epetravectors[i][j];
1126 coords = std::vector<const zscalar_t *>(nvecs);
1127 strides = std::vector<int>(nvecs);
1129 for (
size_t i = 0; i < nvecs; i++) {
1131 coords[i] = &coordarr[i*localCount];
1133 coords[i] = &coordarr[i];
1135 strides[i] = stride;
1156 const ParameterList &pList,
1157 const RCP<
const Comm<int> > &comm)
1161 #ifdef HAVE_ZOLTAN2_PAMGEN
1174 std::cerr <<
"Pamgen mesh is unavailable for PamgenMeshAdapter!"
1180 throw std::runtime_error(
"Pamgen input requested but Trilinos is not "
1181 "built with Pamgen");
EAdapterType getMainAdapterType() const
typename InputTraits< User >::scalar_t scalar_t
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
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
Tpetra::Map::local_ordinal_type zlno_t
Tpetra::CrsMatrix< zscalar_t, zlno_t, zgno_t, znode_t > tcrsMatrix_t
Defines the BasicIdentifierAdapter class.
Tpetra::CrsGraph< zlno_t, zgno_t, znode_t > tcrsGraph_t
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.
Tpetra::MultiVector< zscalar_t, zlno_t, zgno_t, znode_t > tMVector_t
Tpetra::Map::global_ordinal_type zgno_t
Zoltan2::BasicIdentifierAdapter< userTypes_t > basic_id_t
Zoltan2::BaseAdapterRoot * getCoordinateAdapter() const