Reference documentation for deal.II version 8.1.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Modules Pages
fe_poly.h
1 // ---------------------------------------------------------------------
2 // @f$Id: fe_poly.h 30036 2013-07-18 16:55:32Z maier @f$
3 //
4 // Copyright (C) 2004 - 2013 by the deal.II authors
5 //
6 // This file is part of the deal.II library.
7 //
8 // The deal.II library is free software; you can use it, redistribute
9 // it, and/or modify it under the terms of the GNU Lesser General
10 // Public License as published by the Free Software Foundation; either
11 // version 2.1 of the License, or (at your option) any later version.
12 // The full text of the license can be found in the file LICENSE at
13 // the top level of the deal.II distribution.
14 //
15 // ---------------------------------------------------------------------
16 
17 #ifndef __deal2__fe_poly_h
18 #define __deal2__fe_poly_h
19 
20 
21 #include <deal.II/fe/fe.h>
22 
24 
27 
69 template <class POLY, int dim=POLY::dimension, int spacedim=dim>
70 class FE_Poly : public FiniteElement<dim,spacedim>
71 {
72 public:
76  FE_Poly (const POLY &poly_space,
77  const FiniteElementData<dim> &fe_data,
78  const std::vector<bool> &restriction_is_additive_flags,
79  const std::vector<ComponentMask> &nonzero_components);
80 
85  unsigned int get_degree () const;
86 
92  std::vector<unsigned int> get_poly_space_numbering() const;
93 
98  std::vector<unsigned int> get_poly_space_numbering_inverse() const;
99 
105  virtual double shape_value (const unsigned int i,
106  const Point<dim> &p) const;
107 
118  virtual double shape_value_component (const unsigned int i,
119  const Point<dim> &p,
120  const unsigned int component) const;
121 
127  virtual Tensor<1,dim> shape_grad (const unsigned int i,
128  const Point<dim> &p) const;
129 
140  virtual Tensor<1,dim> shape_grad_component (const unsigned int i,
141  const Point<dim> &p,
142  const unsigned int component) const;
143 
149  virtual Tensor<2,dim> shape_grad_grad (const unsigned int i,
150  const Point<dim> &p) const;
151 
162  virtual Tensor<2,dim> shape_grad_grad_component (const unsigned int i,
163  const Point<dim> &p,
164  const unsigned int component) const;
165 protected:
166 
167  virtual
169  get_data (const UpdateFlags,
170  const Mapping<dim,spacedim> &mapping,
171  const Quadrature<dim> &quadrature) const ;
172 
173  virtual void
174  fill_fe_values (const Mapping<dim,spacedim> &mapping,
175  const typename Triangulation<dim,spacedim>::cell_iterator &cell,
176  const Quadrature<dim> &quadrature,
177  typename Mapping<dim,spacedim>::InternalDataBase &mapping_internal,
178  typename Mapping<dim,spacedim>::InternalDataBase &fe_internal,
180  CellSimilarity::Similarity &cell_similarity) const;
181 
182  virtual void
184  const typename Triangulation<dim,spacedim>::cell_iterator &cell,
185  const unsigned int face_no,
186  const Quadrature<dim-1> &quadrature,
187  typename Mapping<dim,spacedim>::InternalDataBase &mapping_internal,
188  typename Mapping<dim,spacedim>::InternalDataBase &fe_internal,
189  FEValuesData<dim,spacedim> &data) const ;
190 
191  virtual void
193  const typename Triangulation<dim,spacedim>::cell_iterator &cell,
194  const unsigned int face_no,
195  const unsigned int sub_no,
196  const Quadrature<dim-1> &quadrature,
197  typename Mapping<dim,spacedim>::InternalDataBase &mapping_internal,
198  typename Mapping<dim,spacedim>::InternalDataBase &fe_internal,
199  FEValuesData<dim,spacedim> &data) const ;
200 
201 
216  virtual UpdateFlags update_once (const UpdateFlags flags) const;
217 
246  virtual UpdateFlags update_each (const UpdateFlags flags) const;
247 
248 
255  class InternalData : public FiniteElement<dim,spacedim>::InternalDataBase
256  {
257  public:
267  std::vector<std::vector<double> > shape_values;
268 
278  std::vector<std::vector<Tensor<1,dim> > > shape_gradients;
279  };
280 
285 };
286 
289 DEAL_II_NAMESPACE_CLOSE
290 
291 #endif
const std::vector< bool > restriction_is_additive_flags
Definition: fe.h:1909
virtual void fill_fe_values(const Mapping< dim, spacedim > &mapping, const typename Triangulation< dim, spacedim >::cell_iterator &cell, const Quadrature< dim > &quadrature, typename Mapping< dim, spacedim >::InternalDataBase &mapping_internal, typename Mapping< dim, spacedim >::InternalDataBase &fe_internal, FEValuesData< dim, spacedim > &data, CellSimilarity::Similarity &cell_similarity) const
virtual double shape_value_component(const unsigned int i, const Point< dim > &p, const unsigned int component) const
virtual Mapping< dim, spacedim >::InternalDataBase * get_data(const UpdateFlags, const Mapping< dim, spacedim > &mapping, const Quadrature< dim > &quadrature) const
virtual void fill_fe_subface_values(const Mapping< dim, spacedim > &mapping, const typename Triangulation< dim, spacedim >::cell_iterator &cell, const unsigned int face_no, const unsigned int sub_no, const Quadrature< dim-1 > &quadrature, typename Mapping< dim, spacedim >::InternalDataBase &mapping_internal, typename Mapping< dim, spacedim >::InternalDataBase &fe_internal, FEValuesData< dim, spacedim > &data) const
virtual double shape_value(const unsigned int i, const Point< dim > &p) const
std::vector< unsigned int > get_poly_space_numbering() const
std::vector< std::vector< Tensor< 1, dim > > > shape_gradients
Definition: fe_poly.h:278
unsigned int get_degree() const
UpdateFlags
virtual UpdateFlags update_once(const UpdateFlags flags) const
const std::vector< ComponentMask > nonzero_components
Definition: fe.h:1918
virtual Tensor< 1, dim > shape_grad(const unsigned int i, const Point< dim > &p) const
std::vector< std::vector< double > > shape_values
Definition: fe_poly.h:267
virtual Tensor< 2, dim > shape_grad_grad(const unsigned int i, const Point< dim > &p) const
virtual Tensor< 1, dim > shape_grad_component(const unsigned int i, const Point< dim > &p, const unsigned int component) const
virtual Tensor< 2, dim > shape_grad_grad_component(const unsigned int i, const Point< dim > &p, const unsigned int component) const
virtual void fill_fe_face_values(const Mapping< dim, spacedim > &mapping, const typename Triangulation< dim, spacedim >::cell_iterator &cell, const unsigned int face_no, const Quadrature< dim-1 > &quadrature, typename Mapping< dim, spacedim >::InternalDataBase &mapping_internal, typename Mapping< dim, spacedim >::InternalDataBase &fe_internal, FEValuesData< dim, spacedim > &data) const
std::vector< unsigned int > get_poly_space_numbering_inverse() const
FE_Poly(const POLY &poly_space, const FiniteElementData< dim > &fe_data, const std::vector< bool > &restriction_is_additive_flags, const std::vector< ComponentMask > &nonzero_components)
virtual UpdateFlags update_each(const UpdateFlags flags) const
POLY poly_space
Definition: fe_poly.h:284