本文整理汇总了C++中Scalar::fastAccessCoeff方法的典型用法代码示例。如果您正苦于以下问题:C++ Scalar::fastAccessCoeff方法的具体用法?C++ Scalar::fastAccessCoeff怎么用?C++ Scalar::fastAccessCoeff使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Scalar
的用法示例。
在下文中一共展示了Scalar::fastAccessCoeff方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: val
//
// Test Belos GMRES solve for a simple banded upper-triangular matrix
//
TEUCHOS_UNIT_TEST_TEMPLATE_4_DECL(
Tpetra_CrsMatrix_MP, BelosGMRES, BaseScalar, LocalOrdinal, GlobalOrdinal, Node )
{
using Teuchos::RCP;
using Teuchos::rcp;
using Teuchos::ArrayView;
using Teuchos::Array;
using Teuchos::ArrayRCP;
using Teuchos::ParameterList;
const LocalOrdinal VectorSize = 3;
typedef typename DeviceForNode<Node>::type Device;
typedef Stokhos::StaticFixedStorage<LocalOrdinal,BaseScalar,VectorSize,Device> Storage;
typedef Sacado::MP::Vector<Storage> Scalar;
typedef Teuchos::Comm<int> Tpetra_Comm;
typedef Tpetra::Map<LocalOrdinal,GlobalOrdinal,Node> Tpetra_Map;
typedef Tpetra::Vector<Scalar,LocalOrdinal,GlobalOrdinal,Node> Tpetra_Vector;
typedef Tpetra::CrsMatrix<Scalar,LocalOrdinal,GlobalOrdinal,Node> Tpetra_CrsMatrix;
typedef Tpetra::CrsGraph<LocalOrdinal,GlobalOrdinal,Node> Tpetra_CrsGraph;
// Ensure device is initialized
if (!Device::is_initialized())
Device::initialize();
// Build banded matrix
GlobalOrdinal nrow = 10;
RCP<const Tpetra_Comm> comm =
Tpetra::DefaultPlatform::getDefaultPlatform().getComm();
RCP<Node> node = rcp(new Node);
RCP<const Tpetra_Map> map =
Tpetra::createUniformContigMapWithNode<LocalOrdinal,GlobalOrdinal>(
nrow, comm, node);
RCP<Tpetra_CrsGraph> graph = Tpetra::createCrsGraph(map, size_t(2));
Array<GlobalOrdinal> columnIndices(2);
ArrayView<const GlobalOrdinal> myGIDs = map->getNodeElementList();
const size_t num_my_row = myGIDs.size();
for (size_t i=0; i<num_my_row; ++i) {
const GlobalOrdinal row = myGIDs[i];
columnIndices[0] = row;
size_t ncol = 1;
if (row != nrow-1) {
columnIndices[1] = row+1;
ncol = 2;
}
graph->insertGlobalIndices(row, columnIndices(0,ncol));
}
graph->fillComplete();
RCP<Tpetra_CrsMatrix> matrix = rcp(new Tpetra_CrsMatrix(graph));
// Set values in matrix
Array<Scalar> vals(2);
Scalar val(VectorSize, BaseScalar(0.0));
for (size_t i=0; i<num_my_row; ++i) {
const GlobalOrdinal row = myGIDs[i];
columnIndices[0] = row;
for (LocalOrdinal j=0; j<VectorSize; ++j)
val.fastAccessCoeff(j) = j+1;
vals[0] = val;
size_t ncol = 1;
if (row != nrow-1) {
columnIndices[1] = row+1;
for (LocalOrdinal j=0; j<VectorSize; ++j)
val.fastAccessCoeff(j) = j+1;
vals[1] = val;
ncol = 2;
}
matrix->replaceGlobalValues(row, columnIndices(0,ncol), vals(0,ncol));
}
matrix->fillComplete();
// Fill RHS vector
RCP<Tpetra_Vector> b = Tpetra::createVector<Scalar>(map);
ArrayRCP<Scalar> b_view = b->get1dViewNonConst();
for (size_t i=0; i<num_my_row; ++i) {
b_view[i] = Scalar(1.0);
}
// Solve
typedef Teuchos::ScalarTraits<BaseScalar> ST;
typedef BaseScalar BelosScalar;
typedef Tpetra::MultiVector<Scalar,LocalOrdinal,GlobalOrdinal,Node> MV;
typedef Tpetra::Operator<Scalar,LocalOrdinal,GlobalOrdinal,Node> OP;
typedef Belos::OperatorTraits<BelosScalar,MV,OP> BOPT;
typedef Belos::MultiVecTraits<BelosScalar,MV> BMVT;
typedef Belos::LinearProblem<BelosScalar,MV,OP> BLinProb;
RCP<Tpetra_Vector> x = Tpetra::createVector<Scalar>(map);
RCP< BLinProb > problem = rcp(new BLinProb(matrix, x, b));
RCP<ParameterList> belosParams = rcp(new ParameterList);
typename ST::magnitudeType tol = 1e-12;
belosParams->set("Flexible Gmres", false);
belosParams->set("Num Blocks", 100);
belosParams->set("Convergence Tolerance", BelosScalar(tol));
belosParams->set("Maximum Iterations", 100);
belosParams->set("Verbosity", 33);
belosParams->set("Output Style", 1);
//.........这里部分代码省略.........