00001 #ifndef __AbsTriDiagIterativeLS_H__ 00002 #define __AbsTriDiagIterativeLS_H__ 00003 00004 00029 #include "AbsTriDiagonalLS.hpp" 00030 #include "RealVector.hpp" 00031 00032 class AbsTriDiagIterativeLS : public AbsTriDiagonalLS 00033 { 00034 protected: 00035 00036 int currentIteration; 00037 int maxIterations; 00038 double epsilon; 00039 00040 public: 00041 00042 AbsTriDiagIterativeLS(int asize, int iterMax, double eps=1e-4):AbsTriDiagonalLS(asize) 00043 { 00044 currentIteration=0; 00045 00046 maxIterations= iterMax; 00047 epsilon= eps; 00048 } 00049 00050 virtual ~AbsTriDiagIterativeLS(){} 00051 00052 virtual bool iterate()=0; // SOLVING to define later 00053 00054 virtual bool solve() 00055 { 00056 currentIteration=0; 00057 00058 while( iterate() == true && currentIteration < maxIterations) 00059 { 00060 currentIteration++; 00061 } 00062 00063 return true; 00064 } 00065 00066 virtual void output() 00067 { 00068 printf("Iterative Linear System\n"); 00069 A->output(); 00070 printf("x: "); x->output(); 00071 printf("b: "); b->output(); 00072 } 00073 00074 virtual void output(FILE* file) 00075 { 00076 fprintf(file, "Iterative Linear System\n"); 00077 A->output(file); 00078 fprintf(file, "x: "); x->output(file); 00079 fprintf(file, "b: "); b->output(file); 00080 } 00081 }; 00082 00083 #endif 00084