LAMA
|
00001 00033 #ifndef LAMA_AMGSETUP_HPP_ 00034 #define LAMA_AMGSETUP_HPP_ 00035 00036 // for dll_import 00037 #include <lama/config.hpp> 00038 00039 // others 00040 #include <lama/matrix/Matrix.hpp> 00041 00042 #include <lama/solver/Solver.hpp> 00043 00044 namespace lama 00045 { 00046 00053 class LAMA_DLL_IMPORTEXPORT AMGSetup 00054 { 00055 public: 00056 AMGSetup(); 00057 virtual ~AMGSetup(); 00058 00059 virtual void initialize(const Matrix& coefficients) =0; 00060 00061 virtual Solver& getCoarseLevelSolver() =0; 00062 00063 virtual unsigned int getNumLevels() =0; 00064 00065 virtual Solver& getSmoother( const unsigned int level ) =0; 00066 00067 virtual const Matrix& getGalerkin( const unsigned int level ) =0; 00068 00069 virtual const Matrix& getRestriction( const unsigned int level ) =0; 00070 00071 virtual const Matrix& getInterpolation( const unsigned int level ) =0; 00072 00073 virtual Vector& getSolutionVector( const unsigned int level ) =0; 00074 00075 virtual Vector& getRhsVector( const unsigned int level ) =0; 00076 00077 virtual Vector& getTmpResVector( const unsigned int level ) =0; 00078 00079 virtual std::string getCouplingPredicateInfo() const =0; 00080 00081 virtual std::string getColoringInfo() const =0; 00082 00083 virtual std::string getInterpolationInfo() const =0; 00084 00085 virtual std::string getSmootherInfo() const =0; 00086 00087 virtual std::string getCoarseLevelSolverInfo() const =0; 00088 00089 virtual void setMaxLevels( const unsigned int level ) =0; 00090 00091 virtual void setMinVarsCoarseLevel( const unsigned int vars ) =0; 00092 00093 virtual void setHostOnlyLevel( IndexType hostOnlyLevel ); 00094 00095 virtual void setReplicatedLevel( IndexType replicatedLevel ); 00096 00097 virtual void setCoarseLevelSolver( SolverPtr solver ) =0; 00098 00102 virtual void setSmoother( SolverPtr solver ) =0; 00103 00104 protected: 00105 00106 IndexType mHostOnlyLevel; 00107 00108 IndexType mReplicatedLevel; 00109 }; 00110 00111 } 00112 00113 #endif /* LAMA_AMGSETUP_HPP_ */