00001
00002
00003 #ifndef _baerbel_fe_adini_h
00004 #define _baerbel_fe_adini_h
00005
00006 #include <base/config.h>
00007 #include <base/point.h>
00008 #include <base/table.h>
00009 #include <base/tensor.h>
00010 #include <base/quadrature_lib.h>
00011 #include <fe/fe_poly.h>
00012 #include "adinipoly.h"
00013
00039 class FE_Adini : public FE_Poly<AdiniPoly,2>
00040 {
00041 public:
00045 FE_Adini ();
00052 virtual std::string get_name () const;
00053
00054 protected:
00062 virtual FiniteElement<2> * clone() const;
00063
00064 virtual void
00065 fill_fe_values (const Mapping<2> &mapping,
00066 const Triangulation<2>::cell_iterator &cell,
00067 const Quadrature<2> &quadrature,
00068 Mapping<2>::InternalDataBase &mapping_internal,
00069 Mapping<2>::InternalDataBase &fe_internal,
00070 FEValuesData<2>& data) const;
00071
00072 virtual void
00073 fill_fe_face_values (const Mapping<2> &mapping,
00074 const Triangulation<2>::cell_iterator &cell,
00075 const unsigned int face_no,
00076 const Quadrature<1> &quadrature,
00077 Mapping<2>::InternalDataBase &mapping_internal,
00078 Mapping<2>::InternalDataBase &fe_internal,
00079 FEValuesData<2>& data) const ;
00080
00081 virtual void
00082 fill_fe_subface_values (const Mapping<2> &mapping,
00083 const Triangulation<2>::cell_iterator &cell,
00084 const unsigned int face_no,
00085 const unsigned int sub_no,
00086 const Quadrature<1> &quadrature,
00087 Mapping<2>::InternalDataBase &mapping_internal,
00088 Mapping<2>::InternalDataBase &fe_internal,
00089 FEValuesData<2>& data) const ;
00090
00103 virtual UpdateFlags update_each (const UpdateFlags flags) const;
00104
00105
00106 private:
00117 std::vector<unsigned int> get_dpo_vector();
00125 void initialize_support_points ();
00126 };
00127 #endif // _baerbel_fe_adini_h