PlayaIfpackOperator.hpp

00001 /* @HEADER@ */
00002 //   
00003  /* @HEADER@ */
00004 
00005 #ifndef PLAYA_IFPACKOPERATOR_HPP
00006 #define PLAYA_IFPACKOPERATOR_HPP
00007 
00008 
00009 #include "PlayaEpetraMatrix.hpp"
00010 #include "PlayaLinearOpWithSpacesDecl.hpp"
00011 #include "Ifpack_IlukGraph.h"
00012 #include "Ifpack_CrsRiluk.h"
00013 
00014 
00015 namespace Playa
00016 {
00020 class IfpackOperator : 
00021   public LinearOpWithSpaces<double>
00022 {
00023 public:
00025   IfpackOperator(const EpetraMatrix* A,
00026     int fillLevels,
00027     int overlapFill,
00028     double relaxationValue,
00029     double relativeThreshold,
00030     double absoluteThreshold);
00031 
00035   virtual void apply(
00036     Teuchos::ETransp applyType,
00037     const Vector<double>& in,
00038     Vector<double> out) const ;
00039 
00040 
00041 private:
00042   RCP<Ifpack_IlukGraph> precondGraph_;
00043 
00044   RCP<Ifpack_CrsRiluk> precond_;
00045 
00046 };
00047 
00048 
00049 }
00050 
00051 #endif 

doxygen