include/deal.II/fe/fe_dgq.h

00001 //---------------------------------------------------------------------------
00002 //    @f$Id: fe_dgq.h 25345 2012-03-31 08:37:04Z bangerth @f$
00003 //
00004 //    Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2009, 2010, 2011, 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_dgq_h
00013 #define __deal2__fe_dgq_h
00014 
00015 #include <deal.II/base/config.h>
00016 #include <deal.II/base/tensor_product_polynomials.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 template <int dim> class Quadrature;
00023 
00026 
00078 template <int dim, int spacedim=dim>
00079 class FE_DGQ : public FE_Poly<TensorProductPolynomials<dim>, dim, spacedim>
00080 {
00081   public:
00093     FE_DGQ (const unsigned int p);
00094 
00104     virtual std::string get_name () const;
00105 
00122     virtual void
00123     get_interpolation_matrix (const FiniteElement<dim, spacedim> &source,
00124                               FullMatrix<double>           &matrix) const;
00125 
00147     virtual void
00148     get_face_interpolation_matrix (const FiniteElement<dim, spacedim> &source,
00149                                    FullMatrix<double>       &matrix) const;
00150 
00172     virtual void
00173     get_subface_interpolation_matrix (const FiniteElement<dim, spacedim> &source,
00174                                       const unsigned int        subface,
00175                                       FullMatrix<double>       &matrix) const;
00176 
00220     virtual
00221     std::vector<std::pair<unsigned int, unsigned int> >
00222     hp_vertex_dof_identities (const FiniteElement<dim, spacedim> &fe_other) const;
00223 
00235     virtual
00236     std::vector<std::pair<unsigned int, unsigned int> >
00237     hp_line_dof_identities (const FiniteElement<dim, spacedim> &fe_other) const;
00238 
00250     virtual
00251     std::vector<std::pair<unsigned int, unsigned int> >
00252     hp_quad_dof_identities (const FiniteElement<dim, spacedim> &fe_other) const;
00253 
00266     virtual bool hp_constraints_are_implemented () const;
00267 
00280     virtual
00281     FiniteElementDomination::Domination
00282     compare_for_face_domination (const FiniteElement<dim, spacedim> &fe_other) const;
00283 
00301     virtual bool has_support_on_face (const unsigned int shape_index,
00302                                       const unsigned int face_index) const;
00303 
00315     virtual std::size_t memory_consumption () const;
00316 
00317 
00318   protected:
00333     FE_DGQ (const Quadrature<1>& points);
00334 
00342     virtual FiniteElement<dim, spacedim> *clone() const;
00343 
00344   private:
00355     static std::vector<unsigned int> get_dpo_vector (const unsigned int degree);
00356 
00383     void rotate_indices (std::vector<unsigned int> &indices,
00384                          const char                 direction) const;
00385 
00389     template <int dim1, int spacedim1> friend class FE_DGQ;
00390 
00396     template <int dim1, int spacedim1> friend class MappingQ;
00397 };
00398 
00399 
00400 
00416 template <int dim>
00417 class FE_DGQArbitraryNodes : public FE_DGQ<dim>
00418 {
00419   public:
00430     FE_DGQArbitraryNodes (const Quadrature<1>& points);
00431 
00441     virtual std::string get_name () const;
00442 
00443   protected:
00451     virtual FiniteElement<dim> *clone() const;
00452 };
00453 
00454 
00457 DEAL_II_NAMESPACE_CLOSE
00458 
00459 #endif
00460 
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines

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