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