00001 #ifndef __F_GmresStar_LS_H__
00002 #define __F_GmresStar_LS_H__
00003
00004
00038 #include <stdio.h>
00039 #include "F_IterativeLS.hpp"
00040
00041
00042 class F_GmresStar_LS : public F_IterativeLS
00043 {
00044 private:
00045
00046 int m;
00047 AbsFLinearSolver* iterativeSolver;
00048
00049
00050 int k;
00051
00052 FloatVector* r;
00053 FloatVector* ap;
00054 FloatVector* z;
00055
00056 FloatVector** u;
00057 FloatVector** c;
00058
00059 protected:
00060
00061 virtual FloatVector* singleSolve(AFloatMatrix* A, FloatVector* b, FloatVector* x=0);
00062
00063 public:
00064 F_GmresStar_LS(int maxIterations, int l, int solverModel, int innerIter, int m, double epsilon=1.0e-4);
00065 F_GmresStar_LS(int maxIterations, int l, char* solverName, int innerIter, int m, double epsilon=1.0e-4);
00066 F_GmresStar_LS(int maxIterations, int l, AbsFLinearSolver* innerSolver, double epsilon=1.0e-4);
00067 virtual ~F_GmresStar_LS(){delete[] c; delete[] u;}
00068
00069 virtual FloatVector* solve(AFloatMatrix* m, FloatVector* b, FloatVector* dest);
00070 };
00071
00072 #endif
00073