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