00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011 #if !defined(DIAGOP_HPP)
00012 #define DIAGOP_HPP
00013
00014 #include "linop.hpp"
00015 #include "gtbuffer.hpp"
00016 #include "gtvector.hpp"
00017 #include "elem2d.hpp"
00018
00019 class DiagOp: public LinOp
00020 {
00021 public:
00022 DiagOp();
00023 DiagOp(GINT n);
00024 DiagOp(GDBuffer *diag);
00025 DiagOp(GVector *diag);
00026 DiagOp(GDOUBLE *diag, GINT n);
00027 DiagOp(Elem2D *e);
00028 ~DiagOp();
00029
00030 GVector operator*(GVector ) ;
00031 GVector *GetDiag();
00032 void OpVec_prod(GVector &x, GVector &ret);
00033 void SetDiag(GDOUBLE *diag_elems, GINT num );
00034 void SetMask(GVector *m);
00035 void Resize(GINT NN);
00036 void Inverse();
00037
00038 private:
00039
00040
00041 GINT n;
00042 GBOOL bInverse;
00043 GVector *diag;
00044 GVector *diag0;
00045
00046 };
00047
00048 #endif