56 #include <Teuchos_Comm.hpp> 57 #include <Teuchos_CommHelpers.hpp> 58 #include <Teuchos_DefaultComm.hpp> 59 #include <Teuchos_ArrayView.hpp> 60 #include <Teuchos_OrdinalTraits.hpp> 62 #include <Tpetra_CrsMatrix.hpp> 67 using Teuchos::DefaultComm;
72 const RCP<
const Comm<int> > &comm,
73 bool nodeZeroHasAll,
bool printInfo)
75 int fail = 0, gfail = 0;
78 cout <<
"Test: " << fname << endl;
79 cout <<
"Num Weights: " << nWeights;
80 cout <<
" proc 0 has all: " << nodeZeroHasAll;
88 typedef Tpetra::MultiVector<zscalar_t, zlno_t, zgno_t, znode_t> mv_t;
90 RCP<UserInputForTests> uinput;
95 catch(std::exception &e){
104 coords = uinput->getUICoordinates();
106 catch(std::exception &e){
112 int coordDim = coords->getNumVectors();
116 const zscalar_t *x=NULL, *y=NULL, *z=NULL;
118 x = coords->getData(0).getRawPtr();
120 y = coords->getData(1).getRawPtr();
122 z = coords->getData(2).getRawPtr();
127 int nLocalIds = coords->getLocalLength();
128 ArrayView<const zgno_t>
idList = coords->getMap()->getNodeElementList();
132 if (comm->getRank() > 0){
137 nGlobalIds = nLocalIds;
139 Teuchos::broadcast<int, int>(*comm, 0, &nGlobalIds);
142 nGlobalIds = coords->getGlobalLength();
145 Array<ArrayRCP<const zscalar_t> > coordWeights(nWeights);
148 for (
int wdim=0; wdim < nWeights; wdim++){
150 for (
int i=0; i < nLocalIds; i++){
151 w[i] = ((i%2) + 1) + wdim;
153 coordWeights[wdim] = Teuchos::arcp(w, 0, nLocalIds);
169 ia = rcp(
new ia_t(nLocalIds, idList.getRawPtr(), x, y, z));
171 catch(std::exception &e){
176 std::vector<const zscalar_t *> values,
weights;
177 std::vector<int> valueStrides, weightStrides;
184 for (
int wdim=0; wdim < nWeights; wdim++){
185 weights.push_back(coordWeights[wdim].getRawPtr());
189 ia = rcp(
new ia_t(nLocalIds, idList.getRawPtr(),
190 values, valueStrides,
weights, weightStrides));
192 catch(std::exception &e){
197 RCP<const base_ia_t> base_ia = Teuchos::rcp_dynamic_cast<
const base_ia_t>(ia);
206 typedef std::bitset<Zoltan2::NUM_MODEL_FLAGS> modelFlags_t;
208 modelFlags_t modelFlags;
215 model = rcp(
new model_t(base_ia, env, comm, modelFlags));
217 catch (std::exception &e){
225 if (model->getCoordinateDim() != coordDim)
228 if (!fail && model->getLocalNumCoordinates() != size_t(nLocalIds))
231 if (!fail && model->getGlobalNumCoordinates() != size_t(nGlobalIds))
234 if (!fail && model->getNumWeightsPerCoordinate() != nWeights)
242 ArrayView<const zgno_t> gids;
243 ArrayView<input_t> xyz;
244 ArrayView<input_t> wgts;
246 model->getCoordinates(gids, xyz, wgts);
248 if (!fail && gids.size() != nLocalIds)
251 for (
int i=0; !fail && i < nLocalIds; i++){
252 if (gids[i] != idList[i])
256 if (!fail && wgts.size() != nWeights)
261 for (
int dim=0; !fail && dim < coordDim; dim++){
262 for (
int i=0; !fail && i < nLocalIds; i++){
263 if (xyz[dim][i] != vals[dim][i])
268 for (
int wdim=0; !fail && wdim < nWeights; wdim++){
269 for (
int i=0; !fail && i < nLocalIds; i++){
270 if (wgts[wdim][i] != coordWeights[wdim][i])
281 int main(
int argc,
char *argv[])
283 Teuchos::GlobalMPISession session(&argc, &argv);
284 Teuchos::RCP<const Teuchos::Comm<int> > comm =
285 Teuchos::DefaultComm<int>::getComm();
287 int rank = comm->getRank();
288 string fname(
"simple");
302 if (rank==0) cout <<
"PASS" << endl;
int globalFail(const RCP< const Comm< int > > &comm, int fail)
void testCoordinateModel(std::string &fname, int nWeights, const RCP< const Comm< int > > &comm, bool nodeZeroHasAll, bool printInfo)
#define TEST_FAIL_AND_EXIT(comm, ok, s, code)
common code used by tests
list idList
Match up parameters to validators.
This class provides geometric coordinates with optional weights to the Zoltan2 algorithm.
VectorAdapter defines the interface for vector input.
The StridedData class manages lists of weights or coordinates.
BasicVectorAdapter represents a vector (plus optional weights) supplied by the user as pointers to st...
The user parameters, debug, timing and memory profiling output objects, and error checking methods...
static const std::string fail
void printFailureCode(const RCP< const Comm< int > > &comm, int fail)
int main(int argc, char *argv[])
Defines the CoordinateModel classes.
Defines the BasicVectorAdapter class.
std::string testDataFilePath(".")