本文整理汇总了C++中ArrayRCP::getConst方法的典型用法代码示例。如果您正苦于以下问题:C++ ArrayRCP::getConst方法的具体用法?C++ ArrayRCP::getConst怎么用?C++ ArrayRCP::getConst使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ArrayRCP
的用法示例。
在下文中一共展示了ArrayRCP::getConst方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: if
//.........这里部分代码省略.........
if (diff < -newdiff)
xdim--;
}
diff = newdiff;
}
num=xdim*ydim*zdim;
diff = numGlobalCoords - num;
if (diff < 0)
diff /= -numGlobalCoords;
else
diff /= numGlobalCoords;
if (rank == 0){
if (diff > .01)
cout << "Warning: Difference " << diff*100 << " percent" << endl;
cout << "Mesh size: " << xdim << "x" << ydim << "x" <<
zdim << ", " << num << " vertices." << endl;
}
// Divide coordinates.
ssize_t numLocalCoords = num / nprocs;
ssize_t leftOver = num % nprocs;
ssize_t gid0 = 0;
if (rank <= leftOver)
gid0 = zgno_t(rank) * (numLocalCoords+1);
else
gid0 = (leftOver * (numLocalCoords+1)) +
((zgno_t(rank) - leftOver) * numLocalCoords);
if (rank < leftOver)
numLocalCoords++;
ssize_t gid1 = gid0 + numLocalCoords;
zgno_t *ids = new zgno_t [numLocalCoords];
if (!ids)
throw bad_alloc();
ArrayRCP<zgno_t> idArray(ids, 0, numLocalCoords, true);
for (ssize_t i=gid0; i < gid1; i++)
*ids++ = zgno_t(i);
RCP<const tMap_t> idMap = rcp(
new tMap_t(num, idArray.view(0, numLocalCoords), 0, comm));
// Create a Tpetra::MultiVector of coordinates.
zscalar_t *x = new zscalar_t [numLocalCoords*3];
if (!x)
throw bad_alloc();
ArrayRCP<zscalar_t> coordArray(x, 0, numLocalCoords*3, true);
zscalar_t *y = x + numLocalCoords;
zscalar_t *z = y + numLocalCoords;
zgno_t xStart = 0;
zgno_t yStart = 0;
zgno_t xyPlane = xdim*ydim;
zgno_t zStart = gid0 / xyPlane;
zgno_t rem = gid0 % xyPlane;
if (rem > 0){
yStart = rem / xdim;
xStart = rem % xdim;
}
zlno_t next = 0;
for (zscalar_t zval=zStart; next < numLocalCoords && zval < zdim; zval++){
for (zscalar_t yval=yStart; next < numLocalCoords && yval < ydim; yval++){
for (zscalar_t xval=xStart; next < numLocalCoords && xval < xdim; xval++){
x[next] = xval;
y[next] = yval;
z[next] = zval;
next++;
}
xStart = 0;
}
yStart = 0;
}
ArrayView<const zscalar_t> xArray(x, numLocalCoords);
ArrayView<const zscalar_t> yArray(y, numLocalCoords);
ArrayView<const zscalar_t> zArray(z, numLocalCoords);
ArrayRCP<ArrayView<const zscalar_t> > coordinates =
arcp(new ArrayView<const zscalar_t> [3], 0, 3);
coordinates[0] = xArray;
coordinates[1] = yArray;
coordinates[2] = zArray;
ArrayRCP<const ArrayView<const zscalar_t> > constCoords =
coordinates.getConst();
RCP<tMVector_t> meshCoords = rcp(new tMVector_t(
idMap, constCoords.view(0,3), 3));
return meshCoords;
}