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