89 TEUCHOS_TEST_FOR_EXCEPTION(A->GetFixedBlockSize() != 1,
Exceptions::RuntimeError,
"Block size > 1 has not been implemented");
93 std::string mapFile = pL.get<std::string>(
"mapFileName");
94 RCP<const Map> rowMap = A->getRowMap();
95 RCP<const Map> coarseMap = Xpetra::IO<Scalar, LocalOrdinal, GlobalOrdinal, Node>::ReadMap(mapFile, rowMap->lib(), rowMap->getComm());
96 Set(coarseLevel,
"CoarseMap", coarseMap);
98 std::string matrixFile = pL.get<std::string>(
"matrixFileName");
99 RCP<Matrix> P = Xpetra::IO<Scalar, LocalOrdinal, GlobalOrdinal, Node>::Read(matrixFile, rowMap, coarseMap, coarseMap, rowMap);
101 Set(coarseLevel,
"P", P);
104 RCP<Matrix> P1 = Xpetra::MatrixMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node>::Multiply(*A,
false, *P,
false);
105 P = Xpetra::IO<Scalar, LocalOrdinal, GlobalOrdinal, Node>::Read(matrixFile, rowMap, P1->getColMap(), coarseMap, rowMap);
106 Set(coarseLevel,
"P", P);
109 RCP<MultiVector> coarseNullspace = MultiVectorFactory::Build(coarseMap, fineNullspace->getNumVectors());
110 P->apply(*fineNullspace, *coarseNullspace, Teuchos::TRANS, Teuchos::ScalarTraits<SC>::one(), Teuchos::ScalarTraits<SC>::zero());
111 Set(coarseLevel,
"Nullspace", coarseNullspace);
114 size_t n = Teuchos::as<size_t>(sqrt(coarseMap->getGlobalNumElements()));
115 TEUCHOS_TEST_FOR_EXCEPTION(n*n != coarseMap->getGlobalNumElements(),
Exceptions::RuntimeError,
"Unfortunately, this is not the case, don't know what to do");
117 RCP<MultiVector> coarseCoords = MultiVectorFactory::Build(coarseMap, 2);
118 ArrayRCP<Scalar> x = coarseCoords->getDataNonConst(0), y = coarseCoords->getDataNonConst(1);
119 for (
size_t LID = 0; LID < coarseMap->getLocalNumElements(); ++LID) {
120 GlobalOrdinal GID = coarseMap->getGlobalElement(LID) - coarseMap->getIndexBase();
125 Set(coarseLevel,
"Coordinates", coarseCoords);
128 RCP<ParameterList> params = rcp(
new ParameterList());
129 params->set(
"printLoadBalancingInfo",
true);