00001 /* @HEADER@ */ 00002 // 00003 /* @HEADER@ */ 00004 00005 #ifndef PLAYA_PRECONDITIONERFACTORYBASE_HPP 00006 #define PLAYA_PRECONDITIONERFACTORYBASE_HPP 00007 00008 #include "PlayaDefs.hpp" 00009 #include "PlayaVectorDecl.hpp" 00010 #include "PlayaLinearOperatorDecl.hpp" 00011 #include "PlayaPreconditioner.hpp" 00012 #include "Teuchos_ParameterList.hpp" 00013 00014 00015 namespace Playa 00016 { 00017 using namespace Teuchos; 00018 00019 /** 00020 * Base class for preconditioner factories. 00021 */ 00022 template <class Scalar> 00023 class PreconditionerFactoryBase 00024 : public Playa::Handleable<PreconditionerFactoryBase<Scalar> > 00025 { 00026 public: 00027 /** empty ctor */ 00028 PreconditionerFactoryBase() {;} 00029 00030 /** virtual dtor */ 00031 virtual ~PreconditionerFactoryBase(){;} 00032 00033 00034 /** */ 00035 virtual Preconditioner<Scalar> createPreconditioner(const LinearOperator<Scalar>& A) const = 0 ; 00036 00037 private: 00038 }; 00039 00040 } 00041 00042 #endif