51 #include <Teuchos_GlobalMPISession.hpp> 52 #include <Teuchos_DefaultComm.hpp> 53 #include <Teuchos_RCP.hpp> 54 #include <Teuchos_CommHelpers.hpp> 58 using Teuchos::DefaultComm;
65 int len,
int glen,
zgno_t *ids,
68 int nCoords,
int nWeights)
81 for (
int x=0; !fail && x < nCoords; x++){
90 for (
int i=0; !fail && i < len; i++, coordVal += 3){
92 if (idList[i] != ids[i])
95 if (!fail && vals[stride*i] != *coordVal)
100 for (
int w=0; !fail && w < nWeights; w++){
107 for (
int i=0; !fail && i < len; i++, weightVal++){
108 if (wgts[stride*i] != *weightVal)
117 int main(
int argc,
char *argv[])
119 Teuchos::GlobalMPISession session(&argc, &argv);
120 RCP<const Comm<int> > comm = DefaultComm<int>::getComm();
121 int rank = comm->getRank();
126 typedef Tpetra::MultiVector<zscalar_t, zlno_t, zgno_t, znode_t> mv_t;
127 RCP<UserInputForTests> uinput;
128 std::string fname(
"simple");
133 catch(std::exception &e){
142 coords = uinput->getUICoordinates();
144 catch(std::exception &e){
150 int numLocalIds = coords->getLocalLength();
151 int numGlobalIds = coords->getGlobalLength();
152 int coordDim = coords->getNumVectors();
153 ArrayView<const zgno_t>
idList = coords->getMap()->getNodeElementList();
157 Array<zgno_t> myIds(numLocalIds);
158 zgno_t base = rank * numLocalIds;
161 Array<zscalar_t>
weights(numLocalIds*wdim);
162 for (
int i = 0; i < numLocalIds*wdim; i++) weights[i] =
zscalar_t(i);
164 zscalar_t *x_values= coords->getDataNonConst(0).getRawPtr();
169 y_values= coords->getDataNonConst(1).getRawPtr();
171 z_values= coords->getDataNonConst(2).getRawPtr();
174 Array<zscalar_t> xyz_values(3*numLocalIds);
176 for (
zlno_t i=0; i < numLocalIds; i++)
183 for (
int i=0, ii=0; i < numLocalIds; i++, ii += 3){
189 RCP<Zoltan2::BasicVectorAdapter<userTypes_t> > ia;
201 numLocalIds, myIds.getRawPtr(), x_values, y_values, z_values));
203 catch (std::exception &e){
210 myIds.getRawPtr(), xyz_values.getRawPtr(),
211 weights.getRawPtr(), ncoords, nweights);
226 numLocalIds, myIds.getRawPtr(),
227 x_values, y_values, z_values, 1, 1, 1,
228 true, weights.getRawPtr(), 1));
230 catch (std::exception &e){
237 myIds.getRawPtr(), xyz_values.getRawPtr(),
238 weights.getRawPtr(), ncoords, nweights);
250 std::vector<const zscalar_t *> values, weightValues;
251 std::vector<int> valueStrides, weightStrides;
253 values.push_back(x_values);
254 values.push_back(y_values);
255 values.push_back(z_values);
256 valueStrides.push_back(1);
257 valueStrides.push_back(1);
258 valueStrides.push_back(1);
262 numLocalIds, myIds.getRawPtr(), values, valueStrides,
263 weightValues, weightStrides));
265 catch (std::exception &e){
272 myIds.getRawPtr(), xyz_values.getRawPtr(),
273 weights.getRawPtr(), ncoords, nweights);
279 std::vector<int> emptyStrides;
283 numLocalIds, myIds.getRawPtr(), values, emptyStrides,
284 weightValues, emptyStrides));
286 catch (std::exception &e){
293 myIds.getRawPtr(), xyz_values.getRawPtr(),
294 weights.getRawPtr(), ncoords, nweights);
306 std::vector<const zscalar_t *> values, weightValues;
307 std::vector<int> valueStrides, weightStrides;
309 values.push_back(xyz_values.getRawPtr());
310 values.push_back(xyz_values.getRawPtr() + 1);
311 valueStrides.push_back(3);
312 valueStrides.push_back(3);
314 weightValues.push_back(weights.getRawPtr());
315 weightValues.push_back(weights.getRawPtr() + numLocalIds);
316 weightStrides.push_back(1);
317 weightStrides.push_back(1);
321 numLocalIds, myIds.getRawPtr(), values, valueStrides,
322 weightValues, weightStrides));
324 catch (std::exception &e){
331 myIds.getRawPtr(), xyz_values.getRawPtr(),
332 weights.getRawPtr(), ncoords, nweights);
338 std::vector<int> emptyStrides;
342 numLocalIds, myIds.getRawPtr(), values, valueStrides,
343 weightValues, emptyStrides));
345 catch (std::exception &e){
352 myIds.getRawPtr(), xyz_values.getRawPtr(),
353 weights.getRawPtr(), ncoords, nweights);
365 std::vector<const zscalar_t *> values, weightValues;
366 std::vector<int> valueStrides, weightStrides;
368 values.push_back(x_values);
369 valueStrides.push_back(1);
371 weightValues.push_back(weights.getRawPtr());
372 weightValues.push_back(weights.getRawPtr() + numLocalIds);
373 weightStrides.push_back(1);
374 weightStrides.push_back(1);
378 numLocalIds, myIds.getRawPtr(), values, valueStrides,
379 weightValues, weightStrides));
381 catch (std::exception &e){
388 myIds.getRawPtr(), xyz_values.getRawPtr(),
389 weights.getRawPtr(), ncoords, nweights);
395 std::cout <<
"PASS" << std::endl;
size_t getLocalNumIDs() const
Returns the number of objects on this process.
A simple class that can be the User template argument for an InputAdapter.
#define TEST_FAIL_AND_EXIT(comm, ok, s, code)
common code used by tests
int getNumEntriesPerID() const
Return the number of vectors (typically one).
list idList
Match up parameters to validators.
void getWeightsView(const scalar_t *&weights, int &stride, int idx) const
BasicVectorAdapter represents a vector (plus optional weights) supplied by the user as pointers to st...
static const std::string fail
#define TEST_FAIL_AND_RETURN_VALUE(comm, ok, s, rc)
void getIDsView(const gno_t *&ids) const
int getNumWeightsPerID() const
Returns the number of weights per object. Number of weights per object should be zero or greater...
void getEntriesView(const scalar_t *&entries, int &stride, int idx=0) const
Defines the BasicVectorAdapter class.
std::string testDataFilePath(".")