00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 #ifndef __deal2__fe_dgp_monomial_h
00013 #define __deal2__fe_dgp_monomial_h
00014
00015 #include <deal.II/base/config.h>
00016 #include <deal.II/base/polynomials_p.h>
00017 #include <deal.II/fe/fe_poly.h>
00018
00019 DEAL_II_NAMESPACE_OPEN
00020
00021 template <int dim, int spacedim> class MappingQ;
00022
00023
00026
00086 template <int dim>
00087 class FE_DGPMonomial : public FE_Poly<PolynomialsP<dim>,dim>
00088 {
00089 public:
00094 FE_DGPMonomial (const unsigned int p);
00095
00105 virtual std::string get_name () const;
00106
00150 virtual
00151 std::vector<std::pair<unsigned int, unsigned int> >
00152 hp_vertex_dof_identities (const FiniteElement<dim> &fe_other) const;
00153
00165 virtual
00166 std::vector<std::pair<unsigned int, unsigned int> >
00167 hp_line_dof_identities (const FiniteElement<dim> &fe_other) const;
00168
00180 virtual
00181 std::vector<std::pair<unsigned int, unsigned int> >
00182 hp_quad_dof_identities (const FiniteElement<dim> &fe_other) const;
00183
00197 virtual bool hp_constraints_are_implemented () const;
00198
00211 virtual
00212 FiniteElementDomination::Domination
00213 compare_for_face_domination (const FiniteElement<dim> &fe_other) const;
00214
00235 virtual void
00236 get_interpolation_matrix (const FiniteElement<dim> &source,
00237 FullMatrix<double> &matrix) const;
00238
00260 virtual void
00261 get_face_interpolation_matrix (const FiniteElement<dim> &source,
00262 FullMatrix<double> &matrix) const;
00263
00285 virtual void
00286 get_subface_interpolation_matrix (const FiniteElement<dim> &source,
00287 const unsigned int subface,
00288 FullMatrix<double> &matrix) const;
00289
00303 virtual bool has_support_on_face (const unsigned int shape_index,
00304 const unsigned int face_index) const;
00305
00317 virtual std::size_t memory_consumption () const;
00318
00319 protected:
00320
00328 virtual FiniteElement<dim> *clone() const;
00329
00330 private:
00331
00342 static std::vector<unsigned int> get_dpo_vector (const unsigned int degree);
00343
00349 void initialize_embedding ();
00350
00356 void initialize_restriction ();
00357 };
00358
00361 DEAL_II_NAMESPACE_CLOSE
00362
00363 #endif
00364