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();                                 
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