00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011 #if !defined(IHELMHOLTZOP_HPP)
00012 #define IHELMHOLTZOP_HPP
00013 #include "linop.hpp"
00014 #include "helmholtzop.hpp"
00015 #include "defquad2d.hpp"
00016 #include "rectquad2d.hpp"
00017 #include "diagop.hpp"
00018
00019 class iHelmholtzOp: public LinOp
00020 {
00021 public:
00022 iHelmholtzOp();
00023 iHelmholtzOp(LinOp *A);
00024 iHelmholtzOp(Elem2D *e);
00025
00026 ~iHelmholtzOp();
00027
00028 GVector operator*(GVector) ;
00029 void OpVec_prod(GVector &q, GVector &ret);
00030 void SetConst(GDOUBLE clc, GDOUBLE cmc);
00031 void SetConst(GDOUBLE clc1, GDOUBLE clc2, GDOUBLE cmc);
00032 void SetElem(Elem2D *e);
00033
00034
00035 private:
00036 GBOOL DefmQuadH();
00037 GBOOL RectQuadH();
00038 GBOOL TriangleH();
00039 GBOOL ComputeOp();
00040
00041 GINT N1;
00042 GINT N2;
00043 GINT NN;
00044 GDOUBLE lc1;
00045 GDOUBLE lc2;
00046 GDOUBLE mc;
00047 Elem2D *elem;
00048 GMatrix *H;
00049 GMatrix *iH;
00050
00051
00052 };
00053
00054 #endif