00001
00002
00003
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 {
00017
00018
00019
00020 class IfpackOperator :
00021 public LinearOpWithSpaces<double>
00022 {
00023 public:
00024
00025 IfpackOperator(const EpetraMatrix* A,
00026 int fillLevels,
00027 int overlapFill,
00028 double relaxationValue,
00029 double relativeThreshold,
00030 double absoluteThreshold);
00031
00032
00033
00034
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