00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 #if !defined(GIFILTER_HPP)
00013 #define GIFILTER_HPP
00014
00015 #include "linop.hpp"
00016 #include "elem2d.hpp"
00017 #include "gllbasis.hpp"
00018
00019
00020 class GIFilter: public LinOp
00021 {
00022 public:
00023 GIFilter();
00024 GIFilter(Elem2D *e, GDOUBLE alpha, GINT ismooth_delta_modes);
00025 ~GIFilter();
00026 GIFilter(const GIFilter &a);
00027
00028 GVector operator*(GVector) ;
00029 void OpVec_prod(GVector &x, GVector &ret);
00030 void SetElem(Elem2D *);
00031 Elem2D *GetElem();
00032 void SetStrength(GDOUBLE alpha);
00033 void SetDelta(GINT idelta);
00034
00035
00036 private:
00037
00038 GBOOL Filter(GVector &v, GVector &vn);
00039
00040
00041 GINT ismooth_delta_;
00042 GBOOL deletehere_[GDIM];
00043 GDOUBLE alpha_;
00044 GMatrix *Fn_[GDIM];
00045 GLLBasis *basisGLL_[GDIM];
00046 Elem2D *elem;
00047 };
00048 #endif
00049