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