54 #if defined(HAVE_MUELU_SERIAL) and defined(HAVE_MUELU_EPETRA)
64 if (X.Values() == Y.Values()) {
69 bool initialGuessZero =
true;
72 Hierarchy_->Iterate(eX, *tmpY, 1, initialGuessZero);
74 eY.update(1.0, *tmpY, 0.0);
80 bool initialGuessZero =
true;
82 Hierarchy_->Iterate(eX, eY, 1, initialGuessZero);
85 }
catch (std::exception& e) {
87 std::cerr <<
"Caught an exception in MueLu::EpetraOperator::ApplyInverse():" << std::endl
88 << e.what() << std::endl;
95 RCP<Matrix> A = Hierarchy_->GetLevel(0)->Get<RCP<Matrix> >(
"A");
99 if (epbA != Teuchos::null) {
100 RCP<const Xpetra::Matrix<SC, LO, GO, NO> > blockMat = epbA->
getMatrix(0,0);
102 if (blockCrsWrap == Teuchos::null)
103 throw Exceptions::BadCast(
"MueLu::EpetraOperator::Comm(): Cast from block (0,0) to CrsMatrixWrap failed. Could be a block matrix. TODO implement recursive support for block matrices.");
105 if (tmp_ECrsMtx == Teuchos::null)
106 throw Exceptions::BadCast(
"MueLu::EpetraOperator::Comm(): Cast from Xpetra::CrsMatrix to Xpetra::EpetraCrsMatrix failed");
107 RCP<Epetra_CrsMatrix> epA = tmp_ECrsMtx->getEpetra_CrsMatrixNonConst();
112 if (crsOp == Teuchos::null)
113 throw Exceptions::BadCast(
"Cast from Xpetra::Matrix to Xpetra::CrsMatrixWrap failed");
115 if (tmp_ECrsMtx == Teuchos::null)
116 throw Exceptions::BadCast(
"Cast from Xpetra::CrsMatrix to Xpetra::EpetraCrsMatrix failed");
117 return tmp_ECrsMtx->getEpetra_CrsMatrixNonConst()->Comm();
120 const Epetra_Map& EpetraOperator::OperatorDomainMap()
const {
121 RCP<Xpetra::Matrix<SC,LO,GO,NO> > A = Hierarchy_->GetLevel(0)->Get<RCP<Matrix> >(
"A");
124 if (epbA != Teuchos::null)
128 if (crsOp == Teuchos::null)
129 throw Exceptions::BadCast(
"Cast from Xpetra::Matrix to Xpetra::CrsMatrixWrap failed");
131 if (tmp_ECrsMtx == Teuchos::null)
132 throw Exceptions::BadCast(
"Cast from Xpetra::CrsMatrix to Xpetra::EpetraCrsMatrix failed");
133 return tmp_ECrsMtx->getEpetra_CrsMatrixNonConst()->DomainMap();
136 const Epetra_Map & EpetraOperator::OperatorRangeMap()
const {
137 RCP<Xpetra::Matrix<SC,LO,GO,NO> > A = Hierarchy_->GetLevel(0)->Get<RCP<Matrix> >(
"A");
140 if (epbA != Teuchos::null)
144 if (crsOp == Teuchos::null)
145 throw Exceptions::BadCast(
"Cast from Xpetra::Matrix to Xpetra::CrsMatrixWrap failed");
146 const RCP<const Xpetra::EpetraCrsMatrix> &tmp_ECrsMtx = rcp_dynamic_cast<
const Xpetra::EpetraCrsMatrix>(crsOp->getCrsMatrix());
147 if (tmp_ECrsMtx == Teuchos::null)
148 throw Exceptions::BadCast(
"Cast from Xpetra::CrsMatrix to Xpetra::EpetraCrsMatrix failed");
149 return tmp_ECrsMtx->getEpetra_CrsMatrixNonConst()->RangeMap();
154 #endif // #if defined(HAVE_MUELU_SERIAL) and defined(HAVE_MUELU_EPETRA)
const Epetra_CrsGraph & toEpetra(const RCP< const CrsGraph< int, GlobalOrdinal, Node > > &graph)
TEUCHOS_DEPRECATED RCP< T > rcp(T *p, Dealloc_T dealloc, bool owns_mem)
Teuchos::RCP< Matrix > getMatrix(size_t r, size_t c) const