00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011 #if !defined(LAPLACIANOP_HPP)
00012 #define LAPLACIANOP_HPP
00013
00014 #include "linop.hpp"
00015 #include "elem2d.hpp"
00016
00017 class LaplacianOp: public LinOp
00018 {
00019 public:
00020 LaplacianOp();
00021 LaplacianOp(Elem2D *e);
00022
00023 ~LaplacianOp();
00024
00025 GVector operator*(GVector) ;
00026 void OpVec_prod(GVector &x, GVector &ret);
00027 void SetElem(Elem2D *);
00028 Elem2D *GetElem();
00029 void SetConst(GDOUBLE c);
00030 void SetConst(GDOUBLE c1, GDOUBLE c2);
00031
00032
00033
00034 private:
00035 GBOOL DefmQuadOp(GVector *x, GVector *newx);
00036 GBOOL RectQuadOp(GVector *x, GVector *newx);
00037 GBOOL TriangleOp(GVector *x, GVector *newx);
00038
00039 GDOUBLE hC1;
00040 GDOUBLE hC2;
00041 Elem2D *elem;
00042
00043 };
00044
00045 #endif