Go to the documentation of this file.00001
00002
00003 #ifndef inexactFabric_hh
00004 #define inexactFabric_hh
00005
00006 #include <memory>
00007 #include "inexactInv.hh"
00008 #include "solverFabric.hh"
00009
00010 namespace eigensolver {
00011
00012
00013
00020 class InexactInvFabric : public SolverFabric<Real> {
00021 public:
00024 InexactInvFabric(const concepts::Vector<Real>& EFguess,
00025 const Real innerTol = 0.5, const uint innerMax = 100,
00026 const Real outerTol = 1e-6, const uint outerMax = 100) :
00027 solver_(0), EFguess_(EFguess), innerTol_(innerTol), outerTol_(outerTol),
00028 innerMax_(innerMax), outerMax_(outerMax) {}
00029 virtual ~InexactInvFabric();
00030 virtual InexactInv<Real>& operator()(concepts::Operator<Real,Real>& stiff,
00031 concepts::Operator<Real,Real>& mass);
00032 protected:
00033 virtual std::ostream& info(std::ostream& os) const;
00034 private:
00035 std::auto_ptr<InexactInv<Real> > solver_;
00036
00037 concepts::Vector<Real> EFguess_;
00038 Real innerTol_, outerTol_;
00039 uint innerMax_, outerMax_;
00040
00041 InexactInvFabric(const InexactInvFabric&);
00042 };
00043
00044 }
00045
00046 #endif // inexactFabric_hh