14#ifndef IFPACK2_DETAILS_LINEARSOLVERFACTORY_DEF_HPP
15#define IFPACK2_DETAILS_LINEARSOLVERFACTORY_DEF_HPP
17#include "Trilinos_Details_LinearSolverFactory.hpp"
19#include "Ifpack2_Details_LinearSolver.hpp"
20#include "Ifpack2_Factory.hpp"
21#include "Tpetra_RowMatrix.hpp"
27template <
class SC,
class LO,
class GO,
class NT>
28Teuchos::RCP<typename LinearSolverFactory<SC, LO, GO, NT>::solver_type>
33 using Teuchos::rcp_dynamic_cast;
34 using Teuchos::TypeNameTraits;
36 typedef Tpetra::RowMatrix<SC, LO, GO, NT>
ROW;
37 const char prefix[] =
"Ifpack2::Details::LinearSolverFactory::getLinearSolver: ";
46 }
catch (std::exception&
e) {
48 "preconditioner named \""
50 "template parameters: "
54 "Ifpack2 preconditioner named \""
56 "following template parameters: "
63template <
class SC,
class LO,
class GO,
class NT>
66 typedef Tpetra::MultiVector<SC, LO, GO, NT> MV;
67 typedef Tpetra::Operator<SC, LO, GO, NT> OP;
68 typedef typename MV::mag_type mag_type;
69 typedef Trilinos::Details::LinearSolverFactory<MV, OP, mag_type>
factory_base_type;
72#ifdef HAVE_TEUCHOSCORE_CXX11
84 "Factory is null! This "
85 "should never happen! Please report this bug to the Ifpack2 developers.");
101 Trilinos::Details::registerLinearSolverFactory<MV, OP, mag_type>(
"Ifpack2",
factoryBase);
109#define IFPACK2_DETAILS_LINEARSOLVERFACTORY_INSTANT(SC, LO, GO, NT) \
110 template class Ifpack2::Details::LinearSolverFactory<SC, LO, GO, NT>;
Declaration of interface for preconditioners that can change their matrix after construction.
virtual Teuchos::RCP< solver_type > getLinearSolver(const std::string &solverName)
Get an instance of a Ifpack2 solver.
Definition Ifpack2_Details_LinearSolverFactory_def.hpp:30
static void registerLinearSolverFactory()
Register this LinearSolverFactory with the central registry.
Definition Ifpack2_Details_LinearSolverFactory_def.hpp:65
Ifpack2's implementation of Trilinos::Details::LinearSolver interface.
Definition Ifpack2_Details_LinearSolver_decl.hpp:75
Interface for all Ifpack2 preconditioners.
Definition Ifpack2_Preconditioner.hpp:74
Ifpack2 implementation details.
Preconditioners and smoothers for Tpetra sparse matrices.
Definition Ifpack2_AdditiveSchwarz_decl.hpp:40