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