00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011 #if !defined(GRADOP_HPP)
00012 #define GRADOP_HPP
00013 #if (defined(GRAD_LEVEL0_TIMING)||defined(GRAD_LEVEL1_TIMING)||defined(GRAD_LEVEL2_TIMING)||defined(GRAD_LEVEL3_TIMING))
00014 #define DO_GRAD_TIMING
00015 #endif
00016
00017 #include "gtvector.hpp"
00018 #include "elem2d.hpp"
00019 #include "timer.h"
00020
00021
00022 class GradOp
00023 {
00024 public:
00025 GradOp();
00026 GradOp(Elem2D *e, GVector *v);
00027 ~GradOp();
00028
00029 GVector Grad(const GINT idir);
00030 void Grad(const GINT idir, GVector &vret);
00031 GVector pGrad(const GINT idir);
00032 void pGrad(const GINT idir,GVector &vret);
00033 void SetVar(GVector *v, GBOOL resize);
00034 void SetElem(Elem2D *e);
00035
00036 #if defined(DO_GRAD_TIMING)
00037 GDOUBLE GetTime(){return time_result;}
00038 #endif
00039 private:
00040 GBOOL DefmQuadOp(GVector *newx, const GINT idir);
00041 GBOOL RectQuadOp(GVector *newx, const GINT idir);
00042 GBOOL TriangleOp(GVector *newx, const GINT idir);
00043
00044
00045 Elem2D *elem;
00046 GVector *var;
00047 GVector *vn ;
00048 GVector *vt ;
00049 #if defined(DO_GRAD_TIMING)
00050 GDOUBLE time_result;
00051 #endif
00052
00053
00054
00055 };
00056
00057 #endif