00001 #ifndef __CGS_H__ 00002 #define __CGS_H__ 00003 00004 00027 #include "AbsTriDiagIterativeLS.hpp" 00028 00029 class CGS : public AbsTriDiagIterativeLS 00030 { 00031 protected: 00032 00033 double alpha; 00034 double beta; 00035 00036 RealVector* r; 00037 RealVector* p; 00038 00039 RealVector* ap; 00040 00041 00042 RealVector* r$; 00043 00044 RealVector* s; 00045 RealVector* t; 00046 00047 RealVector* ast; 00048 00049 public: 00050 00051 CGS(int asize, int iterMax, double eps=1e-4):AbsTriDiagIterativeLS(asize, iterMax, eps) 00052 { 00053 r= new RealVector(N); 00054 p= new RealVector(N); 00055 00056 r$= new RealVector(N); 00057 00058 s= new RealVector(N); 00059 t= new RealVector(N); 00060 00061 ap= new RealVector(N); 00062 ast= new RealVector(N); 00063 } 00064 00065 virtual ~CGS(){delete r; delete p; delete r$; delete s; delete t; delete ap; delete ast;} 00066 00067 virtual bool iterate(); // SOLVING to define 00068 00069 virtual void output() 00070 { 00071 printf("CGS "); 00072 AbsTriDiagIterativeLS::output(); 00073 } 00074 00075 virtual void output(FILE* file) 00076 { 00077 fprintf(file, "CGS "); 00078 AbsTriDiagIterativeLS::output(file); 00079 } 00080 }; 00081 00082 #endif 00083 00084