59compute(
const Teuchos::RCP<Epetra_Operator>& op,
bool compute_prec) {
60#ifdef HAVE_STOKHOS_IFPACK
61 Teuchos::RCP<Epetra_RowMatrix> mat =
62 Teuchos::rcp_dynamic_cast<Epetra_RowMatrix>(op,
true);
64 std::string prec = precParams->get(
"Ifpack Preconditioner",
"ILU");
65 int overlap = precParams->get(
"Overlap", 0);
66 Teuchos::RCP<Ifpack_Preconditioner> ifpackPrec =
67 Teuchos::rcp(Factory.Create(prec, mat.get(), overlap));
68 ifpackPrec->SetParameters(*precParams);
69 ifpackPrec->Initialize();
71 ifpackPrec->Compute();
74 TEUCHOS_TEST_FOR_EXCEPTION(
true, std::logic_error,
75 "Stokhos::IfpackPreconditionerFactory is available " <<
76 "only with configured with Ifpack support!");
83recompute(
const Teuchos::RCP<Epetra_Operator>& op,
84 const Teuchos::RCP<Epetra_Operator>& prec_op) {
85#ifdef HAVE_STOKHOS_IFPACK
87 Teuchos::RCP<Epetra_CrsMatrix> mat =
88 Teuchos::rcp_dynamic_cast<Epetra_CrsMatrix>(op,
true);
89 Teuchos::RCP<Ifpack_Preconditioner> ifpackPrec =
90 Teuchos::rcp_dynamic_cast<Ifpack_Preconditioner>(prec_op);
96 non_const_prec_crs_mat = *mat;
99 ifpackPrec->Compute();
101 TEUCHOS_TEST_FOR_EXCEPTION(
true, std::logic_error,
102 "Stokhos::IfpackPreconditionerFactory is available " <<
103 "only with configured with Ifpack support!");