00001 #ifndef __F2DHeatFlowSpace_H__ 00002 #define __F2DHeatFlowSpace_H__ 00003 00004 00005 00028 #include "AFSpatialDiscretisation.hpp" 00029 00030 00031 class F2DHeatFlowSpace : public AFSpatialDiscretisation 00032 { 00033 public: 00034 F2DHeatFlowSpace():AFSpatialDiscretisation(true){} 00035 virtual ~F2DHeatFlowSpace(){} 00036 00037 // A * u(k+1) = u(k) used on unsplitted schemes 00038 // -------------------------------------------- 00039 virtual AFSymMatrix* getA(float tau, FImage* uk, AFSymMatrix* Afull=0); 00040 00041 // A * u(k+1) = u(k) used on splitted schemes 00042 // ------------------------------------------ 00043 virtual AFSymMatrix* getRowA(float tau, FImage* uk, int row, AFSymMatrix* A1=0); 00044 virtual AFSymMatrix* getColA(float tau, FImage* uk, int col, AFSymMatrix* A2=0); 00045 00046 // u[k+1]= (I + tau*A)*u[k] 00047 virtual AFSymMatrix* getRowAexplicit(float tau, FImage* uk, int row, AFSymMatrix* A1=0); 00048 virtual AFSymMatrix* getColAexplicit(float tau, FImage* uk, int col, AFSymMatrix* A2=0); 00049 00050 // (I - tau*A)*u[k+1]= u[k] 00051 virtual AFSymMatrix* getRowAsemiImplicit(float tau, FImage* uk, int row, AFSymMatrix* A1=0); 00052 virtual AFSymMatrix* getColAsemiImplicit(float tau, FImage* uk, int col, AFSymMatrix* A2=0); 00053 }; 00054 00055 #endif 00056 00057