00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031 #ifndef BELOS_STATUS_TEST_HPP
00032 #define BELOS_STATUS_TEST_HPP
00033
00039 #include "BelosTypes.hpp"
00040 #include "BelosIterativeSolver.hpp"
00041 #include "BelosConfigDefs.hpp"
00042
00052 namespace Belos {
00053
00054 template <class ScalarType, class MV, class OP>
00055 class StatusTest {
00056
00057 public:
00059
00060
00062 StatusTest() {};
00063
00065 virtual ~StatusTest() {};
00067
00069
00070
00071
00079 virtual StatusType CheckStatus( IterativeSolver<ScalarType,MV,OP>* iSolver ) = 0;
00080
00082 virtual StatusType GetStatus() const = 0;
00084
00086
00087
00088
00093 virtual void Reset() = 0;
00095
00097
00098
00100
00105 virtual bool ResidualVectorRequired() const = 0;
00107
00109
00110
00112 virtual ostream& Print(ostream& os, int indent = 0) const = 0;
00113
00115 virtual void PrintStatus(ostream& os, StatusType type) const {
00116 os << setiosflags(ios::left) << setw(13) << setfill('.');
00117 switch (type) {
00118 case Failed:
00119 os << "Failed";
00120 break;
00121 case NaN:
00122 os << "NaN";
00123 break;
00124 case Converged:
00125 os << "Converged";
00126 break;
00127 case Unconverged:
00128 default:
00129 os << "**";
00130 break;
00131 }
00132 os << setiosflags(ios::left) << setfill(' ');
00133 return;
00134 };
00136
00137 };
00138
00139 }
00140
00141 #endif