00001 #ifndef __F_LULinearSolver_H__
00002 #define __F_LULinearSolver_H__
00003 
00004 
00032 #include <stdio.h>
00033 #include "AbsFLinearSolver.hpp"
00034 
00035 #include "AFSymMatrix.hpp"
00036 
00037 enum  LUtype { Doolittle=0, Crout=1 };
00038 
00039 class F_LULinearSolver : public AbsFLinearSolver
00040 {
00041 private:
00042 
00043 LUtype          type;
00044 
00045 bool                    factorisationFlag;      
00046 
00047 AFSymMatrix*    lu;
00048 
00049 FloatVector*    y;              
00050 
00051 protected:
00052 
00053 
00054 virtual void factorise(AFSymMatrix*      m);
00055 
00056 public:
00057 F_LULinearSolver(LUtype atype= Doolittle){type= atype; lu=0; y=0; factorisationFlag=true;}
00058 virtual ~F_LULinearSolver(){}   
00059 
00060 virtual void init(){factorisationFlag=true;}
00061 
00062 
00063 virtual FloatVector* solve(AFloatMatrix*        m, FloatVector* b, bool factoriseAll, FloatVector* dest);
00064 virtual FloatVector* solve(AFloatMatrix*        m, FloatVector* b, FloatVector* dest)
00065         { return solve(m, b, false, dest); }
00066 
00067 };
00068 
00069 #endif
00070