00001 #ifndef __F_SSOR_BB_LS_H__
00002 #define __F_SSOR_BB_LS_H__
00003
00004
00042 #include <stdio.h>
00043 #include "F_IterativeLS.hpp"
00044
00045 class AFProductSeqSMatrix;
00046
00047 class F_SSOR_BB_LS : public F_IterativeLS
00048 {
00049 private:
00050
00051 double alpha;
00052 int variant;
00053
00054 bool fixedOmega;
00055 double omega;
00056 AFProductSeqSMatrix* C;
00057
00058 FloatVector* g;
00059 FloatVector* p;
00060
00061 FloatVector* h;
00062
00063 protected:
00064
00065 virtual AFProductSeqSMatrix* factorize(AFSymMatrix* A);
00066
00067 virtual FloatVector* singleSolve(AFloatMatrix* A, FloatVector* b, FloatVector* x=0);
00068
00069 public:
00070 F_SSOR_BB_LS(int maxIterations, double epsilon, int type=0):F_IterativeLS(maxIterations, epsilon)
00071 { g=p=h= 0; C=0; variant= type; fixedOmega= false; omega=1.0;}
00072 F_SSOR_BB_LS(int maxIterations, double anOmega, double epsilon, int type=0):F_IterativeLS(maxIterations, epsilon)
00073 { g=p=h= 0; C=0; variant= type; fixedOmega= true; omega=anOmega;}
00074 virtual ~F_SSOR_BB_LS(){}
00075
00076 virtual FloatVector* solve(AFloatMatrix* m, FloatVector* b, FloatVector* dest);
00077 };
00078
00079 #endif
00080
00081
00082