00001 #ifndef __IFGeneral2DHeatFlowOp__
00002 #define __IFGeneral2DHeatFlowOp__
00003
00027 #include <stdio.h>
00028
00029 #include "IFMultiImageOp.hpp"
00030
00031 #include "Float3CImage.hpp"
00032
00033 #include "SolverTimeScheme.hpp"
00034
00035 class IFGeneral2DHeatFlowOp : public IFMultiImageOp
00036 {
00037 private:
00038
00039 SolverTimeScheme family;
00040
00041 int iter;
00042 int innerIter;
00043 double tau;
00044
00045 int typeSolver;
00046 float epsilon;
00047
00048 protected:
00049
00050
00051
00052 virtual AnImage* greyFilter(AnImage* src, AnImage* dest=0);
00053 virtual AnImage* greySelectedFilter(AnImage* mask, AnImage* src, AnImage* dest=0);
00054
00055
00056
00057 virtual Float3CImage* scolorFilter(Float3CImage* src, Float3CImage* dest=0);
00058 virtual Float3CImage* scolorSelectedFilter(AnImage* mask, Float3CImage* src, Float3CImage* dest=0);
00059
00060
00061
00062
00063 virtual Float3CImage* fcolorFilter(Float3CImage* src, Float3CImage* dest=0);
00064 virtual Float3CImage* fcolorSelectedFilter(AnImage* mask, Float3CImage* src, Float3CImage* dest=0);
00065
00066 public:
00067
00069 IFGeneral2DHeatFlowOp(int atypeSolver, int outIter=1, int iterMax=8, float t=0.5, float eps=1.0e-4, bool colorFlag= false)
00070 :IFMultiImageOp(1,colorFlag)
00071 {family= LOD; typeSolver=atypeSolver; iter= outIter; innerIter= iterMax; tau= t; epsilon=eps;}
00072 IFGeneral2DHeatFlowOp(SolverTimeScheme afamily, int atypeSolver,
00073 int outIter=1, int iterMax=8, float t=0.5, float eps=1.0e-4, bool colorFlag= false)
00074 :IFMultiImageOp(1,colorFlag)
00075 {family= afamily; typeSolver=atypeSolver; iter= outIter; innerIter= iterMax; tau= t; epsilon=eps;}
00076 virtual ~IFGeneral2DHeatFlowOp(){}
00077
00078
00079 virtual void report(FILE* file){}
00080 };
00081
00082
00083 #endif