00001 #ifndef __PentaThomasLS_H__ 00002 #define __PentaThomasLS_H__ 00003 00004 00005 00030 #include "AbsPentaDiagonalLS.hpp" 00031 00032 #define ABS(x) ( x >= 0 ? x : -x ) 00033 00034 class PentaThomasLS : public AbsPentaDiagonalLS 00035 { 00036 private: 00037 00038 RealVector** uOut; 00039 RealVector* dOut; 00040 RealVector** lOut; 00041 00042 RealVector* y; 00043 00044 protected: 00045 00047 void computeLRdecomposition(); 00048 00050 void forwardSubstitution(); 00052 void backwardSubstitution(); 00053 00054 public: 00055 00056 PentaThomasLS(int asize); 00057 virtual ~PentaThomasLS(); 00058 00059 virtual void loadA(RPentaDiagonalMatrix* m); 00060 virtual void loadMatrix(RealVector* u2, RealVector* u1, RealVector* d1, RealVector* l1, RealVector* l2); 00061 virtual void loadX(RealVector* data); 00062 virtual void loadB(RealVector* data); 00063 00064 00065 virtual bool solve(); // SOLVING to define later 00066 00067 00068 virtual void output() 00069 { 00070 printf("Thomas "); 00071 AbsPentaDiagonalLS::output(); 00072 } 00073 00074 virtual void output(FILE* file) 00075 { 00076 fprintf(file, "Thomas "); 00077 AbsPentaDiagonalLS::output(file); 00078 } 00079 }; 00080 00081 #endif 00082 00083