00001 #ifndef bramblePasciak_hh 00002 #define bramblePasciak_hh 00003 00004 #include <string> 00005 00006 #include "basics/typedefs.hh" 00007 #include "operator.hh" 00008 #include "vectorial.hh" 00009 00010 namespace vectorial { 00011 00012 using concepts::Real; 00013 00014 // ******************************************************** BramblePasciak ** 00015 00048 class BramblePasciak : public concepts::Operator<Real> { 00049 public: 00061 BramblePasciak(concepts::Operator<Real>& A, concepts::Operator<Real>& B, 00062 concepts::Operator<Real>& Bt, concepts::Operator<Real>& C, 00063 concepts::Operator<Real>& W, 00064 Real maxeps, int maxit = 0, uint relres = false); 00065 00066 virtual void operator()(const concepts::Function<Real>& fncY, 00067 concepts::Function<Real>& fncX); 00068 void operator()(const concepts::Vector<Real>& fncY, 00069 concepts::Vector<Real>& fncX); 00070 00074 uint iterations() const { return it_; } 00075 00079 Real epsilon() const { return eps_; } 00080 protected: 00081 std::ostream& info(std::ostream& os) const; 00082 private: 00084 uint bdim_[2]; 00086 concepts::Operator<Real>& A_; 00088 concepts::Operator<Real>& B_; 00090 concepts::Operator<Real>& Bt_; 00092 concepts::Operator<Real>& C_; 00094 concepts::Operator<Real>& W_; 00096 Real maxeps_; 00098 uint maxit_; 00100 Real eps_; 00102 uint it_; 00104 bool relres_; 00105 }; 00106 00107 } // namespace vectorial 00108 00109 #endif // bramblePasciak_hh