00001 // abstract class for a eigensolver fabric 00002 00003 #ifndef solverFabric_hh 00004 #define solverFabric_hh 00005 00006 #include "basics/outputOperator.hh" 00007 00008 namespace concepts { 00009 00010 // forward declaration 00011 00012 template<typename F> 00013 class Operator; 00014 00015 } 00016 00017 namespace eigensolver { 00018 00019 using concepts::Real; 00020 00021 // ********************************************************** SolverFabric ** 00022 00027 template <typename F> 00028 class SolverFabric : public concepts::OutputOperator { 00029 public: 00035 virtual EigenSolver<F>& operator()(concepts::Operator<F>& stiff, 00036 concepts::Operator<Real>& mass) = 0; 00037 }; 00038 00039 } // eigensolver 00040 00041 #endif // solverFabric_hh