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