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 class InverseLibrary :
public RequestHandlerContainer {
68 InverseLibrary(
const Teuchos::RCP<Stratimikos::DefaultLinearSolverBuilder> & strat);
71 void addInverse(
const std::string & label,
const Teuchos::ParameterList & pl);
74 void addStratSolver(
const std::string & label,
const std::string & type,
const Teuchos::ParameterList & pl);
77 void addStratPrecond(
const std::string & label,
const std::string & type,
const Teuchos::ParameterList & pl);
80 void addBlockPrecond(
const std::string & label,
const std::string & type,
const Teuchos::ParameterList & pl);
89 Teuchos::RCP<const Teuchos::ParameterList> getParameterList(
const std::string & label)
const;
92 Teuchos::RCP<InverseFactory> getInverseFactory(
const std::string & label)
const;
95 void PrintAvailableInverses(std::ostream & os)
const;
98 void setRequestHandler(
const Teuchos::RCP<RequestHandler> & rh)
99 { callbackHandler_ = rh; }
102 Teuchos::RCP<RequestHandler> getRequestHandler()
const 103 {
return callbackHandler_; }
108 std::map<std::string,Teuchos::RCP<const Teuchos::ParameterList> > stratSolver_;
109 std::map<std::string,Teuchos::RCP<const Teuchos::ParameterList> > stratPrecond_;
110 std::map<std::string,Teuchos::RCP<const Teuchos::ParameterList> > blockPrecond_;
113 std::vector<std::string> stratValidSolver_;
114 std::vector<std::string> stratValidPrecond_;
115 std::vector<std::string> blockValidPrecond_;
118 Teuchos::RCP<RequestHandler> callbackHandler_;
121 Teuchos::RCP<Stratimikos::DefaultLinearSolverBuilder> defaultBuilder_;
135 static Teuchos::RCP<InverseLibrary> buildFromParameterList(
const Teuchos::ParameterList & pl,
bool useStratDefaults=
true);
147 static Teuchos::RCP<InverseLibrary> buildFromParameterList(
const Teuchos::ParameterList & pl,
148 const Teuchos::RCP<Stratimikos::DefaultLinearSolverBuilder> & strat);
159 static Teuchos::RCP<InverseLibrary> buildFromStratimikos(
160 const Stratimikos::DefaultLinearSolverBuilder & strat=Stratimikos::DefaultLinearSolverBuilder());
171 static Teuchos::RCP<InverseLibrary> buildFromStratimikos(
172 const Teuchos::RCP<Stratimikos::DefaultLinearSolverBuilder> & strat);