LAMA
/home/brandes/workspace/LAMA/src/lama/solver/criteria/ResidualThreshold.hpp
Go to the documentation of this file.
00001 
00034 #ifndef LAMA_RESIDUALTHRESHOLD_HPP_
00035 #define LAMA_RESIDUALTHRESHOLD_HPP_
00036 
00037 // for dll_import
00038 #include <lama/config.hpp>
00039 
00040 // base classes
00041 #include <lama/solver/criteria/Criterion.hpp>
00042 
00043 // others
00044 #include <lama/Scalar.hpp>
00045 
00046 #include <lama/norm/Norm.hpp>
00047 
00048 namespace lama
00049 {
00050 
00060 class LAMA_DLL_IMPORTEXPORT ResidualThreshold : public Criterion
00061 {
00062 public:
00066     enum ResidualThresholdCheckMode
00067     {
00068         Absolute,   
00069         Relative    
00070     };
00071 
00072     /*
00073      * @brief Empty constructor first. Configured by setter methods.
00074      */
00075     ResidualThreshold();
00076 
00082     ResidualThreshold(const NormPtr norm);
00083 
00092     ResidualThreshold(const NormPtr norm, Scalar precision, ResidualThresholdCheckMode checkMode);
00093 
00099     ResidualThreshold(const ResidualThreshold& other);
00100 
00104     virtual ~ResidualThreshold();
00105 
00106     virtual Criterion* copy() const;
00107 
00108     bool isSatisfied(const IterativeSolver& solver);
00109 
00110     ResidualThresholdCheckMode getCheckMode() const;
00111     IndexType getIterationExtrema() const;
00112     Scalar getFirstNormResult() const;
00113     const NormPtr getNorm() const;
00114     Scalar getPrecision() const;
00115 
00116     void setCheckMode(ResidualThresholdCheckMode mCheckMode);
00117     void setFirstNormResult(Scalar firstNormResult);
00118     void setPrecision( Scalar precision );
00119 
00120     virtual void writeAt(std::ostream& stream) const;
00121 
00122 protected:
00123     LAMA_LOG_USING( Criterion::logger );
00124 private:
00125     const NormPtr mNorm;
00126     ResidualThresholdCheckMode mCheckMode;
00127     Scalar mPrecision;
00128     Scalar mFirstNormResult;
00129 };
00130 
00131 } //namespace lama
00132 
00133 #endif // LAMA_RESIDUALTHRESHOLD_HPP_