PlayaParameterListPreconditionerFactory.hpp
00001
00002
00003
00004
00005
00006
00007 #ifndef PLAYA_PARAMETERLIST_PRECONDITIONERFACTORY_HPP
00008 #define PLAYA_PARAMETERLIST_PRECONDITIONERFACTORY_HPP
00009
00010 #include "PlayaDefs.hpp"
00011 #include "PlayaPreconditionerFactoryBase.hpp"
00012 #include "PlayaILUKPreconditionerFactory.hpp"
00013 #include "PlayaLinearOperatorDecl.hpp"
00014 #include "Teuchos_ParameterList.hpp"
00015 #include "PlayaILUFactorizableOp.hpp"
00016 #include "PlayaLinearSolverBaseDecl.hpp"
00017 #include "PlayaMLOperator.hpp"
00018
00019 namespace Playa
00020 {
00021 using namespace Teuchos;
00022
00026 class ParameterListPreconditionerFactory
00027 : public PreconditionerFactoryBase<double>
00028 {
00029 public:
00030
00032 ParameterListPreconditionerFactory(const ParameterList& params)
00033 : PreconditionerFactoryBase<double>(), params_(params)
00034 {
00035 const std::string& pName = params_.name();
00036 TEUCHOS_TEST_FOR_EXCEPTION(pName != "Preconditioner", std::runtime_error,
00037 "expected tag=Preconditioner in parameter list " << std::endl
00038 << params_);
00039 }
00040
00042 virtual ~ParameterListPreconditionerFactory(){;}
00043
00045 Preconditioner<double>
00046 createPreconditioner(const LinearOperator<double>& A) const ;
00047
00048
00049 GET_RCP(PreconditionerFactoryBase<double>);
00050 private:
00051
00052 ParameterList params_;
00053 };
00054
00055
00056 }
00057
00058 #endif
00059
00060
00061
00062