PlayaBlockTriangularSolverDecl.hpp

00001 /* @HEADER@ */
00002 //   
00003  /* @HEADER@ */
00004 
00005 #ifndef PLAYA_BLOCKTRIANGULARSOLVER_DECL_HPP
00006 #define PLAYA_BLOCKTRIANGULARSOLVER_DECL_HPP
00007 
00008 #include "PlayaDefs.hpp"
00009 #include "PlayaLinearSolverDecl.hpp" 
00010 
00011 
00012 namespace Playa
00013 {
00015 template <class Scalar>
00016 class BlockTriangularSolver : public LinearSolverBase<Scalar>,
00017                               public Playa::Handleable<LinearSolverBase<Scalar> >
00018 {
00019 public:
00021   BlockTriangularSolver(const LinearSolver<Scalar>& solver);
00022 
00024   BlockTriangularSolver(const Array<LinearSolver<Scalar> >& solvers);
00025 
00027   virtual ~BlockTriangularSolver(){}
00028 
00030   virtual SolverState<Scalar> solve(const LinearOperator<Scalar>& op,
00031     const Vector<Scalar>& rhs,
00032     Vector<Scalar>& soln) const ;
00033 
00034   /* */
00035   GET_RCP(LinearSolverBase<Scalar>);
00036 private:
00037   Array<LinearSolver<Scalar> > solvers_;
00038 };
00039 
00040 }
00041 
00042 #endif

doxygen