00001 #ifndef __BI_CG_H__ 00002 #define __BI_CG_H__ 00003 00004 00027 #include "AbsTriDiagIterativeLS.hpp" 00028 00029 class BI_CG : 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 RealVector* p$; 00044 00045 RealVector* aTp$; 00046 00047 RTriDiagonalMatrix* At; 00048 00049 00050 public: 00051 00052 BI_CG(int asize, int iterMax, double eps=1e-4):AbsTriDiagIterativeLS(asize, iterMax, eps) 00053 { 00054 r= new RealVector(N); 00055 p= new RealVector(N); 00056 00057 r$= new RealVector(N); 00058 p$= new RealVector(N); 00059 00060 ap= new RealVector(N); 00061 aTp$= new RealVector(N); 00062 00063 At= new RTriDiagonalMatrix(N); 00064 } 00065 00066 virtual ~BI_CG(){delete r; delete p; delete ap;} 00067 00068 virtual bool iterate(); // SOLVING to define 00069 00070 virtual void output() 00071 { 00072 printf("BI CG "); 00073 AbsTriDiagIterativeLS::output(); 00074 } 00075 00076 virtual void output(FILE* file) 00077 { 00078 fprintf(file, "BI CG "); 00079 AbsTriDiagIterativeLS::output(file); 00080 } 00081 }; 00082 00083 #endif 00084