include/deal.II/fe/fe_dgp_monomial.h

00001 //---------------------------------------------------------------------------
00002 //    @f$Id: fe_dgp_monomial.h 25345 2012-03-31 08:37:04Z bangerth @f$
00003 //
00004 //    Copyright (C) 2004, 2005, 2006, 2010, 2012 by the deal.II authors
00005 //
00006 //    This file is subject to QPL and may not be  distributed
00007 //    without copyright and license information. Please refer
00008 //    to the file deal.II/doc/license.html for the  text  and
00009 //    further information on this license.
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 
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines

deal.II documentation generated on Tue May 22 2012 12:06:07 by doxygen 1.7.3