51 #include <Teuchos_GlobalMPISession.hpp> 52 #include <Teuchos_DefaultComm.hpp> 53 #include <Teuchos_RCP.hpp> 54 #include <Teuchos_CommHelpers.hpp> 55 #include <Teuchos_SerialDenseVector.hpp> 59 using Teuchos::DefaultComm;
62 typedef Teuchos::SerialDenseVector<zlno_t, zscalar_t>
tvec_t;
68 int len,
int glen,
zgno_t *ids,
71 int nCoords,
int nWeights)
84 for (
int x=0; !fail && x < nCoords; x++){
93 for (
int i=0; !fail && i < len; i++, coordVal += 3){
95 if (idList[i] != ids[i])
98 if (!fail && vals[stride*i] != *coordVal)
103 for (
int w=0; !fail && w < nWeights; w++){
110 for (
int i=0; !fail && i < len; i++, weightVal++){
111 if (wgts[stride*i] != *weightVal)
120 int main(
int argc,
char *argv[])
122 Teuchos::GlobalMPISession session(&argc, &argv);
123 RCP<const Comm<int> > comm = DefaultComm<int>::getComm();
124 int rank = comm->getRank();
129 typedef Tpetra::MultiVector<zscalar_t, zlno_t, zgno_t, znode_t> mv_t;
130 RCP<UserInputForTests> uinput;
131 std::string fname(
"simple");
136 catch(std::exception &e){
145 coords = uinput->getUICoordinates();
147 catch(std::exception &e){
153 int numLocalIds = coords->getLocalLength();
154 int numGlobalIds = coords->getGlobalLength();
155 int coordDim = coords->getNumVectors();
156 ArrayView<const zgno_t>
idList = coords->getMap()->getNodeElementList();
160 Array<zgno_t> myIds(numLocalIds);
161 zgno_t base = rank * numLocalIds;
164 Array<zscalar_t> weights(numLocalIds*wdim);
165 for (
int i = 0; i < numLocalIds*wdim; i++) weights[i] =
zscalar_t(i);
167 zscalar_t *x_values= coords->getDataNonConst(0).getRawPtr();
172 y_values= coords->getDataNonConst(1).getRawPtr();
174 z_values= coords->getDataNonConst(2).getRawPtr();
177 Array<zscalar_t> xyz_values(3*numLocalIds);
179 for (
zlno_t i=0; i < numLocalIds; i++)
186 for (
int i=0, ii=0; i < numLocalIds; i++, ii += 3){
192 RCP<Zoltan2::BasicVectorAdapter<userTypes_t> > ia;
204 numLocalIds, myIds.getRawPtr(), x_values, y_values, z_values));
206 catch (std::exception &e){
213 myIds.getRawPtr(), xyz_values.getRawPtr(),
214 weights.getRawPtr(), ncoords, nweights);
229 numLocalIds, myIds.getRawPtr(),
230 x_values, y_values, z_values, 1, 1, 1,
231 true, weights.getRawPtr(), 1));
233 catch (std::exception &e){
240 myIds.getRawPtr(), xyz_values.getRawPtr(),
241 weights.getRawPtr(), ncoords, nweights);
253 std::vector<const zscalar_t *> values, weightValues;
254 std::vector<int> valueStrides, weightStrides;
256 values.push_back(x_values);
257 values.push_back(y_values);
258 values.push_back(z_values);
259 valueStrides.push_back(1);
260 valueStrides.push_back(1);
261 valueStrides.push_back(1);
265 numLocalIds, myIds.getRawPtr(), values, valueStrides,
266 weightValues, weightStrides));
268 catch (std::exception &e){
275 myIds.getRawPtr(), xyz_values.getRawPtr(),
276 weights.getRawPtr(), ncoords, nweights);
282 std::vector<int> emptyStrides;
286 numLocalIds, myIds.getRawPtr(), values, emptyStrides,
287 weightValues, emptyStrides));
289 catch (std::exception &e){
296 myIds.getRawPtr(), xyz_values.getRawPtr(),
297 weights.getRawPtr(), ncoords, nweights);
309 std::vector<const zscalar_t *> values, weightValues;
310 std::vector<int> valueStrides, weightStrides;
312 values.push_back(xyz_values.getRawPtr());
313 values.push_back(xyz_values.getRawPtr() + 1);
314 valueStrides.push_back(3);
315 valueStrides.push_back(3);
317 weightValues.push_back(weights.getRawPtr());
318 weightValues.push_back(weights.getRawPtr() + numLocalIds);
319 weightStrides.push_back(1);
320 weightStrides.push_back(1);
324 numLocalIds, myIds.getRawPtr(), values, valueStrides,
325 weightValues, weightStrides));
327 catch (std::exception &e){
334 myIds.getRawPtr(), xyz_values.getRawPtr(),
335 weights.getRawPtr(), ncoords, nweights);
341 std::vector<int> emptyStrides;
345 numLocalIds, myIds.getRawPtr(), values, valueStrides,
346 weightValues, emptyStrides));
348 catch (std::exception &e){
355 myIds.getRawPtr(), xyz_values.getRawPtr(),
356 weights.getRawPtr(), ncoords, nweights);
368 std::vector<const zscalar_t *> values, weightValues;
369 std::vector<int> valueStrides, weightStrides;
371 values.push_back(x_values);
372 valueStrides.push_back(1);
374 weightValues.push_back(weights.getRawPtr());
375 weightValues.push_back(weights.getRawPtr() + numLocalIds);
376 weightStrides.push_back(1);
377 weightStrides.push_back(1);
381 numLocalIds, myIds.getRawPtr(), values, valueStrides,
382 weightValues, weightStrides));
384 catch (std::exception &e){
391 myIds.getRawPtr(), xyz_values.getRawPtr(),
392 weights.getRawPtr(), ncoords, nweights);
398 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...
#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(".")