NGSolve  4.9
comp/hdivfes.hpp
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