00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014 #if !defined(HELMHOLTZOP_HPP)
00015 #define HELMHOLTZOP_HPP
00016
00017 #include "linop.hpp"
00018 #include "elem2d.hpp"
00019 #include "massop.hpp"
00020 #include "laplacianop.hpp"
00021
00022 class HelmholtzOp: public LinOp
00023 {
00024 public:
00025 HelmholtzOp();
00026 HelmholtzOp(Elem2D *e);
00027
00028 ~HelmholtzOp();
00029
00030 GVector operator*(GVector) ;
00031 void OpVec_prod(GVector &x, GVector &y);
00032 void SetElem(Elem2D *);
00033 Elem2D *GetElem();
00034 void SetConst(GDOUBLE h, GDOUBLE m);
00035 void SetConst(GDOUBLE h1, GDOUBLE h2, GDOUBLE m);
00036
00037
00038
00039 private:
00040 GBOOL DefmQuadOp(GVector *x, GVector *newx);
00041 GBOOL RectQuadOp(GVector *x, GVector *newx);
00042 GBOOL TriangleOp(GVector *x, GVector *newx);
00043
00044 GDOUBLE lc1;
00045 GDOUBLE lc2;
00046 GDOUBLE mc;
00047 MassOp *Mass;
00048 LaplacianOp *Laplacian;
00049 Elem2D *elem;
00050
00051 };
00052
00053 #endif