47 #ifndef __Teko_InverseLibrary_hpp__
48 #define __Teko_InverseLibrary_hpp__
50 #include "Teko_InverseFactory.hpp"
53 #include "Teuchos_ParameterList.hpp"
56 #include "Stratimikos_DefaultLinearSolverBuilder.hpp"
59 #include "Teko_RequestHandler.hpp"
60 #include "Teko_RequestHandlerContainer.hpp"
64 void addToStratimikosBuilder(
const Teuchos::RCP<Stratimikos::DefaultLinearSolverBuilder>& builder);
66 class InverseLibrary :
public RequestHandlerContainer {
70 InverseLibrary(
const Teuchos::RCP<Stratimikos::DefaultLinearSolverBuilder>& strat);
73 void addInverse(
const std::string& label,
const Teuchos::ParameterList& pl);
76 void addStratSolver(
const std::string& label,
const std::string& type,
77 const Teuchos::ParameterList& pl);
80 void addStratPrecond(
const std::string& label,
const std::string& type,
81 const Teuchos::ParameterList& pl);
84 void addBlockPrecond(
const std::string& label,
const std::string& type,
85 const Teuchos::ParameterList& pl);
94 Teuchos::RCP<const Teuchos::ParameterList> getParameterList(
const std::string& label)
const;
97 Teuchos::RCP<InverseFactory> getInverseFactory(
const std::string& label)
const;
100 void PrintAvailableInverses(std::ostream& os)
const;
103 void setRequestHandler(
const Teuchos::RCP<RequestHandler>& rh) { callbackHandler_ = rh; }
106 Teuchos::RCP<RequestHandler> getRequestHandler()
const {
return callbackHandler_; }
110 std::map<std::string, Teuchos::RCP<const Teuchos::ParameterList> > stratSolver_;
111 std::map<std::string, Teuchos::RCP<const Teuchos::ParameterList> > stratPrecond_;
112 std::map<std::string, Teuchos::RCP<const Teuchos::ParameterList> > blockPrecond_;
115 std::vector<std::string> stratValidSolver_;
116 std::vector<std::string> stratValidPrecond_;
117 std::vector<std::string> blockValidPrecond_;
120 Teuchos::RCP<RequestHandler> callbackHandler_;
123 Teuchos::RCP<Stratimikos::DefaultLinearSolverBuilder> defaultBuilder_;
136 static Teuchos::RCP<InverseLibrary> buildFromParameterList(
const Teuchos::ParameterList& pl,
137 bool useStratDefaults =
true);
149 static Teuchos::RCP<InverseLibrary> buildFromParameterList(
150 const Teuchos::ParameterList& pl,
151 const Teuchos::RCP<Stratimikos::DefaultLinearSolverBuilder>& strat);
161 static Teuchos::RCP<InverseLibrary> buildFromStratimikos();
172 static Teuchos::RCP<InverseLibrary> buildFromStratimikos(
173 const Stratimikos::DefaultLinearSolverBuilder& strat);
184 static Teuchos::RCP<InverseLibrary> buildFromStratimikos(
185 const Teuchos::RCP<Stratimikos::DefaultLinearSolverBuilder>& strat);