00001 #ifndef SUNDANCE_PCD_PRECONDITIONER_HPP 00002 #define SUNDANCE_PCD_PRECONDITIONER_HPP 00003 00004 #include "SundanceLinearProblem.hpp" 00005 #include "PlayaLinearSolverDecl.hpp" 00006 #include "PlayaPreconditionerFactory.hpp" 00007 00008 00009 namespace Playa 00010 { 00011 using namespace Sundance; 00012 00013 class PCDPreconditionerFactory 00014 : public PreconditionerFactoryBase<double> 00015 { 00016 public: 00017 /** */ 00018 PCDPreconditionerFactory( 00019 const ParameterList& params, 00020 const LinearProblem& MpProb, 00021 const LinearProblem& ApProb, 00022 const LinearProblem& FpProb 00023 ); 00024 00025 00026 /** */ 00027 Preconditioner<double> 00028 createPreconditioner(const LinearOperator<double>& A) const ; 00029 /* */ 00030 GET_RCP( PreconditionerFactoryBase<double>); 00031 00032 private: 00033 LinearProblem MpProb_; 00034 LinearProblem ApProb_; 00035 LinearProblem FpProb_; 00036 LinearSolver<double> MpSolver_; 00037 LinearSolver<double> ApSolver_; 00038 LinearSolver<double> FSolver_; 00039 }; 00040 00041 } 00042 00043 00044 #endif