00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011 #if !defined(MASSOP_HPP)
00012 #define MASSOP_HPP
00013
00014 #include "linop.hpp"
00015 #include "diagop.hpp"
00016 #include "elem2d.hpp"
00017
00018
00019 class MassOp: public LinOp
00020 {
00021 public:
00022 MassOp();
00023 MassOp(Elem2D *e);
00024
00025 ~MassOp();
00026
00027 GVector operator*(GVector) ;
00028 void OpVec_prod(GVector &x, GVector &ret);
00029 void SetElem(Elem2D *);
00030 void SetMask(GVector *);
00031 void SetConst(GDOUBLE c);
00032 GVector *GetDiag();
00033 void Inverse();
00034
00035
00036
00037
00038 private:
00039 GBOOL QuadOp (GVector *x, GVector *newx);
00040 GBOOL TriangleOp(GVector *x, GVector *newx);
00041 GDOUBLE cmc_;
00042 GVector *mask;
00043 Elem2D *elem;
00044 DiagOp *MM;
00045
00046 };
00047
00048 #endif