Home | Doxygen Documentation | Tutorials | Developer Tools (restricted)

vectorial/cgUzawaFabric.hh
Go to the documentation of this file.
00001 // fabric class for CGUzawa
00002 
00003 #ifndef CGUzawafabric_hh
00004 #define CGUzawafabric_hh
00005 
00006 #if __GNUC__ == 2
00007 #  include <float.h>
00008 #  define EPS DBL_EPSILON
00009 #else
00010 #  include <limits>
00011 #  define EPS std::numeric_limits<double>::epsilon()
00012 #endif
00013 #include "cgUzawa.hh"
00014 #include "operator/solverFabric.hh"
00015 
00016 using concepts::Real;
00017 
00018 namespace vectorial {
00019 
00020   // ********************************************************* CGUzawaFabric **
00021 
00029   class CGUzawaFabric : public concepts::SolverFabric<Real> {
00030   public:
00037     CGUzawaFabric(concepts::Operator<Real>& A, concepts::Operator<Real>& B,
00038                   concepts::Operator<Real>& Bt, concepts::Operator<Real>& C,
00039                   concepts::Operator<Real>& Ai, 
00040                   Real maxeps = EPS,
00041                   int maxit = 0, uint relres = 0)
00042       : A_(A), B_(B), Bt_(Bt), C_(C), Ai_(Ai), 
00043         maxeps_(maxeps), maxit_(maxit), relres_(relres) { }
00044     virtual concepts::Operator<Real>* operator()
00045       (concepts::Operator<Real>& matrix) {
00046       return new CGUzawa(A_, B_, Bt_, C_, Ai_, maxeps_, maxit_, relres_);
00047     }
00048   protected:
00049     virtual std::ostream& info(std::ostream& os) const {
00050       return os << "CGUzawaFabric(maxeps = " << maxeps_ << ", maxit = "
00051                 << maxit_ << ", relres = " << relres_ << ")";
00052     }
00053   private:
00055     concepts::Operator<Real>& A_;
00057     concepts::Operator<Real>& B_;
00059     concepts::Operator<Real>& Bt_;
00061     concepts::Operator<Real>& C_;
00063     concepts::Operator<Real>& Ai_;
00065     Real maxeps_;
00067     int maxit_;
00069     uint relres_;
00070   };
00071 
00072 } // namespace vectorial
00073 
00074 #endif // CGUzawafabric_hh

Home | Doxygen Documentation | Tutorials | Developer Tools (restricted)