NGSolve
4.9
|
00001 #ifndef FILE_HDIVFES 00002 #define FILE_HDIVFES 00003 00004 /*********************************************************************/ 00005 /* File: hdivfes.hpp */ 00006 /* Author: Joachim Schoeberl */ 00007 /* Date: 12. Jan. 2002 */ 00008 /*********************************************************************/ 00009 00010 namespace ngcomp 00011 { 00012 00017 class RaviartThomasFESpace : public FESpace 00018 { 00020 Array<int> ndlevel; 00021 public: 00023 /* 00024 RaviartThomasFESpace (const MeshAccess & ama, 00025 int adim, bool acomplex); 00026 */ 00028 RaviartThomasFESpace (const MeshAccess & ama, const Flags& flags, bool parseflags=false); 00030 virtual ~RaviartThomasFESpace (); 00031 00033 virtual const char * GetType() 00034 { return "RaviartThomas"; } 00035 00036 static FESpace * Create (const MeshAccess & ma, const Flags & flags); 00037 00039 virtual void Update(LocalHeap & lh); 00040 00042 virtual int GetNDof () const; 00044 virtual int GetNDofLevel (int level) const; 00045 00047 virtual void GetDofNrs (int elnr, Array<int> & dnums) const; 00049 virtual void GetSDofNrs (int selnr, Array<int> & dnums) const; 00050 00052 virtual Table<int> * CreateSmoothingBlocks (int type = 0) const; 00053 00054 00055 virtual void VTransformMR (int elnr, bool boundary, 00056 FlatMatrix<double> & mat, TRANSFORM_TYPE tt) const; 00057 virtual void VTransformMC (int elnr, bool boundary, 00058 FlatMatrix<Complex> & mat, TRANSFORM_TYPE tt) const { ; } 00059 00060 virtual void VTransformVR (int elnr, bool boundary, 00061 FlatVector<double> & vec, TRANSFORM_TYPE tt) const; 00062 virtual void VTransformVC (int elnr, bool boundary, 00063 FlatVector<Complex> & vec, TRANSFORM_TYPE tt) const { ; } 00064 00065 void GetTransformationFactors (int elnr, FlatVector<> & fac) const; 00066 00067 virtual string GetClassName () const 00068 { 00069 return "RaviartThomasFESpace"; 00070 } 00071 }; 00072 00073 } 00074 00075 #endif