FE_DGPNonparametric< dim, spacedim > Class Template Reference
[Finite element space descriptions]

Inheritance diagram for FE_DGPNonparametric< dim, spacedim >:

Inheritance graph
[legend]

List of all members.

Classes

class  InternalData
struct  Matrices

Public Member Functions

 FE_DGPNonparametric (const unsigned int k)
virtual std::string get_name () const
virtual double shape_value (const unsigned int i, const Point< dim > &p) const
virtual double shape_value_component (const unsigned int i, const Point< dim > &p, const unsigned int component) const
virtual Tensor< 1, dim > shape_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 (const unsigned int i, const Point< dim > &p) const
virtual Tensor< 2, dim > shape_grad_grad_component (const unsigned int i, const Point< dim > &p, const unsigned int component) const
unsigned int get_degree () const
virtual unsigned int n_base_elements () const
virtual const FiniteElement
< dim, spacedim > & 
base_element (const unsigned int index) const
virtual unsigned int element_multiplicity (const unsigned int index) const
virtual void get_face_interpolation_matrix (const FiniteElement< dim, spacedim > &source, FullMatrix< double > &matrix) const
virtual void get_subface_interpolation_matrix (const FiniteElement< dim, spacedim > &source, const unsigned int subface, FullMatrix< double > &matrix) const
virtual bool has_support_on_face (const unsigned int shape_index, const unsigned int face_index) const
virtual unsigned int memory_consumption () const
Functions to support hp
virtual std::vector< std::pair
< unsigned int, unsigned int > > 
hp_vertex_dof_identities (const FiniteElement< dim, spacedim > &fe_other) const
virtual std::vector< std::pair
< unsigned int, unsigned int > > 
hp_line_dof_identities (const FiniteElement< dim, spacedim > &fe_other) const
virtual std::vector< std::pair
< unsigned int, unsigned int > > 
hp_quad_dof_identities (const FiniteElement< dim, spacedim > &fe_other) const
virtual bool hp_constraints_are_implemented () const
virtual
FiniteElementDomination::Domination 
compare_for_face_domination (const FiniteElement< dim, spacedim > &fe_other) const

Protected Member Functions

virtual FiniteElement< dim,
spacedim > * 
clone () const
virtual Mapping< dim, spacedim >
::InternalDataBase * 
get_data (const UpdateFlags, const Mapping< dim, spacedim > &mapping, const Quadrature< dim > &quadrature) const
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, enum CellSimilarity::Similarity &cell_similarity) 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
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

Private Member Functions

virtual UpdateFlags update_once (const UpdateFlags flags) const
virtual UpdateFlags update_each (const UpdateFlags flags) const

Static Private Member Functions

static std::vector< unsigned intget_dpo_vector (const unsigned int degree)

Private Attributes

const unsigned int degree
const PolynomialSpace< dim > polynomial_space

Friends

class FE_DGPNonparametric
class MappingQ


Detailed Description

template<int dim, int spacedim = dim>
class FE_DGPNonparametric< dim, spacedim >

Discontinuous finite elements evaluated at the mapped quadrature points.

Warning: this class does not work properly, yet. Don't use it!

This finite element implements complete polynomial spaces, that is, $d$-dimensional polynomials of order $k$.

The polynomials are not mapped. Therefore, they are constant, linear, quadratic, etc. on any grid cell.

Since the polynomials are evaluated at the quadrature points of the actual grid cell, no grid transfer and interpolation matrices are available.

The purpose of this class is experimental, therefore the implementation will remain incomplete.

Besides, this class is not implemented for the codimension one case (spacedim != dim).

Author:
Guido Kanschat, 2002

Constructor & Destructor Documentation

template<int dim, int spacedim = dim>
FE_DGPNonparametric< dim, spacedim >::FE_DGPNonparametric ( const unsigned int  k  ) 

Constructor for tensor product polynomials of degree k.


Member Function Documentation

template<int dim, int spacedim = dim>
virtual std::string FE_DGPNonparametric< dim, spacedim >::get_name (  )  const [virtual]

Return a string that uniquely identifies a finite element. This class returns FE_DGPNonparametric<dim>(degree), with dim and degree replaced by appropriate values.

Implements FiniteElement< dim, spacedim >.

template<int dim, int spacedim = dim>
virtual double FE_DGPNonparametric< dim, spacedim >::shape_value ( const unsigned int  i,
const Point< dim > &  p 
) const [virtual]

Return the value of the ith shape function at the point p. See the FiniteElement base class for more information about the semantics of this function.

Reimplemented from FiniteElement< dim, spacedim >.

template<int dim, int spacedim = dim>
virtual double FE_DGPNonparametric< dim, spacedim >::shape_value_component ( const unsigned int  i,
const Point< dim > &  p,
const unsigned int  component 
) const [virtual]

Return the value of the componentth vector component of the ith shape function at the point p. See the FiniteElement base class for more information about the semantics of this function.

Since this element is scalar, the returned value is the same as if the function without the _component suffix were called, provided that the specified component is zero.

Reimplemented from FiniteElement< dim, spacedim >.

template<int dim, int spacedim = dim>
virtual Tensor<1,dim> FE_DGPNonparametric< dim, spacedim >::shape_grad ( const unsigned int  i,
const Point< dim > &  p 
) const [virtual]

Return the gradient of the ith shape function at the point p. See the FiniteElement base class for more information about the semantics of this function.

Reimplemented from FiniteElement< dim, spacedim >.

template<int dim, int spacedim = dim>
virtual Tensor<1,dim> FE_DGPNonparametric< dim, spacedim >::shape_grad_component ( const unsigned int  i,
const Point< dim > &  p,
const unsigned int  component 
) const [virtual]

Return the gradient of the componentth vector component of the ith shape function at the point p. See the FiniteElement base class for more information about the semantics of this function.

Since this element is scalar, the returned value is the same as if the function without the _component suffix were called, provided that the specified component is zero.

Reimplemented from FiniteElement< dim, spacedim >.

template<int dim, int spacedim = dim>
virtual Tensor<2,dim> FE_DGPNonparametric< dim, spacedim >::shape_grad_grad ( const unsigned int  i,
const Point< dim > &  p 
) const [virtual]

Return the tensor of second derivatives of the ith shape function at point p on the unit cell. See the FiniteElement base class for more information about the semantics of this function.

Reimplemented from FiniteElement< dim, spacedim >.

template<int dim, int spacedim = dim>
virtual Tensor<2,dim> FE_DGPNonparametric< dim, spacedim >::shape_grad_grad_component ( const unsigned int  i,
const Point< dim > &  p,
const unsigned int  component 
) const [virtual]

Return the second derivative of the componentth vector component of the ith shape function at the point p. See the FiniteElement base class for more information about the semantics of this function.

Since this element is scalar, the returned value is the same as if the function without the _component suffix were called, provided that the specified component is zero.

Reimplemented from FiniteElement< dim, spacedim >.

template<int dim, int spacedim = dim>
unsigned int FE_DGPNonparametric< dim, spacedim >::get_degree (  )  const

Return the polynomial degree of this finite element, i.e. the value passed to the constructor.

template<int dim, int spacedim = dim>
virtual unsigned int FE_DGPNonparametric< dim, spacedim >::n_base_elements (  )  const [virtual]

Number of base elements in a mixed discretization. Since this is a scalar element, return one.

Implements FiniteElement< dim, spacedim >.

template<int dim, int spacedim = dim>
virtual const FiniteElement<dim,spacedim>& FE_DGPNonparametric< dim, spacedim >::base_element ( const unsigned int  index  )  const [virtual]

Access to base element objects. Since this element is scalar, base_element(0) is this, and all other indices throw an error.

Implements FiniteElement< dim, spacedim >.

template<int dim, int spacedim = dim>
virtual unsigned int FE_DGPNonparametric< dim, spacedim >::element_multiplicity ( const unsigned int  index  )  const [virtual]

Multiplicity of base element index. Since this is a scalar element, element_multiplicity(0) returns one, and all other indices will throw an error.

Implements FiniteElement< dim, spacedim >.

template<int dim, int spacedim = dim>
virtual void FE_DGPNonparametric< dim, spacedim >::get_face_interpolation_matrix ( const FiniteElement< dim, spacedim > &  source,
FullMatrix< double > &  matrix 
) const [virtual]

Return the matrix interpolating from a face of of one element to the face of the neighboring element. The size of the matrix is then source.dofs_per_face times this->dofs_per_face.

Derived elements will have to implement this function. They may only provide interpolation matrices for certain source finite elements, for example those from the same family. If they don't implement interpolation from a given element, then they must throw an exception of type FiniteElement<dim,spacedim>::ExcInterpolationNotImplemented.

Reimplemented from FiniteElement< dim, spacedim >.

template<int dim, int spacedim = dim>
virtual void FE_DGPNonparametric< dim, spacedim >::get_subface_interpolation_matrix ( const FiniteElement< dim, spacedim > &  source,
const unsigned int  subface,
FullMatrix< double > &  matrix 
) const [virtual]

Return the matrix interpolating from a face of of one element to the face of the neighboring element. The size of the matrix is then source.dofs_per_face times this->dofs_per_face.

Derived elements will have to implement this function. They may only provide interpolation matrices for certain source finite elements, for example those from the same family. If they don't implement interpolation from a given element, then they must throw an exception of type FiniteElement<dim,spacedim>::ExcInterpolationNotImplemented.

Reimplemented from FiniteElement< dim, spacedim >.

template<int dim, int spacedim = dim>
virtual std::vector<std::pair<unsigned int, unsigned int> > FE_DGPNonparametric< dim, spacedim >::hp_vertex_dof_identities ( const FiniteElement< dim, spacedim > &  fe_other  )  const [virtual]

If, on a vertex, several finite elements are active, the hp code first assigns the degrees of freedom of each of these FEs different global indices. It then calls this function to find out which of them should get identical values, and consequently can receive the same global DoF index. This function therefore returns a list of identities between DoFs of the present finite element object with the DoFs of fe_other, which is a reference to a finite element object representing one of the other finite elements active on this particular vertex. The function computes which of the degrees of freedom of the two finite element objects are equivalent, and returns a list of pairs of global dof indices in identities. The first index of each pair denotes one of the vertex dofs of the present element, whereas the second is the corresponding index of the other finite element.

This being a discontinuous element, the set of such constraints is of course empty.

Reimplemented from FiniteElement< dim, spacedim >.

template<int dim, int spacedim = dim>
virtual std::vector<std::pair<unsigned int, unsigned int> > FE_DGPNonparametric< dim, spacedim >::hp_line_dof_identities ( const FiniteElement< dim, spacedim > &  fe_other  )  const [virtual]

Same as hp_vertex_dof_indices(), except that the function treats degrees of freedom on lines.

This being a discontinuous element, the set of such constraints is of course empty.

Reimplemented from FiniteElement< dim, spacedim >.

template<int dim, int spacedim = dim>
virtual std::vector<std::pair<unsigned int, unsigned int> > FE_DGPNonparametric< dim, spacedim >::hp_quad_dof_identities ( const FiniteElement< dim, spacedim > &  fe_other  )  const [virtual]

Same as hp_vertex_dof_indices(), except that the function treats degrees of freedom on quads.

This being a discontinuous element, the set of such constraints is of course empty.

Reimplemented from FiniteElement< dim, spacedim >.

template<int dim, int spacedim = dim>
virtual bool FE_DGPNonparametric< dim, spacedim >::hp_constraints_are_implemented (  )  const [virtual]

Return whether this element implements its hanging node constraints in the new way, which has to be used to make elements "hp compatible".

For the FE_DGPNonparametric class the result is always true (independent of the degree of the element), as it has no hanging nodes (being a discontinuous element).

Reimplemented from FiniteElement< dim, spacedim >.

template<int dim, int spacedim = dim>
virtual FiniteElementDomination::Domination FE_DGPNonparametric< dim, spacedim >::compare_for_face_domination ( const FiniteElement< dim, spacedim > &  fe_other  )  const [virtual]

Return whether this element dominates the one given as argument when they meet at a common face, whether it is the other way around, whether neither dominates, or if either could dominate.

For a definition of domination, see FiniteElementBase::Domination and in particular the hp paper.

Reimplemented from FiniteElement< dim, spacedim >.

template<int dim, int spacedim = dim>
virtual bool FE_DGPNonparametric< dim, spacedim >::has_support_on_face ( const unsigned int  shape_index,
const unsigned int  face_index 
) const [virtual]

Check for non-zero values on a face.

This function returns true, if the shape function shape_index has non-zero values on the face face_index.

Implementation of the interface in FiniteElement

Reimplemented from FiniteElement< dim, spacedim >.

template<int dim, int spacedim = dim>
virtual unsigned int FE_DGPNonparametric< dim, spacedim >::memory_consumption (  )  const [virtual]

Determine an estimate for the memory consumption (in bytes) of this object.

This function is made virtual, since finite element objects are usually accessed through pointers to their base class, rather than the class itself.

Reimplemented from FiniteElement< dim, spacedim >.

template<int dim, int spacedim = dim>
virtual FiniteElement<dim,spacedim>* FE_DGPNonparametric< dim, spacedim >::clone (  )  const [protected, virtual]

clone function instead of a copy constructor.

This function is needed by the constructors of FESystem.

Implements FiniteElement< dim, spacedim >.

template<int dim, int spacedim = dim>
virtual Mapping<dim,spacedim>::InternalDataBase* FE_DGPNonparametric< dim, spacedim >::get_data ( const   UpdateFlags,
const Mapping< dim, spacedim > &  mapping,
const Quadrature< dim > &  quadrature 
) const [protected, virtual]

Prepare internal data structures and fill in values independent of the cell.

Implements FiniteElement< dim, spacedim >.

template<int dim, int spacedim = dim>
virtual void FE_DGPNonparametric< dim, spacedim >::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,
enum CellSimilarity::Similarity cell_similarity 
) const [protected, virtual]

Implementation of the same function in FiniteElement.

Implements FiniteElement< dim, spacedim >.

template<int dim, int spacedim = dim>
virtual void FE_DGPNonparametric< dim, spacedim >::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 [protected, virtual]

Implementation of the same function in FiniteElement.

Implements FiniteElement< dim, spacedim >.

template<int dim, int spacedim = dim>
virtual void FE_DGPNonparametric< dim, spacedim >::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 [protected, virtual]

Implementation of the same function in FiniteElement.

Implements FiniteElement< dim, spacedim >.

template<int dim, int spacedim = dim>
static std::vector<unsigned int> FE_DGPNonparametric< dim, spacedim >::get_dpo_vector ( const unsigned int  degree  )  [static, private]

Only for internal use. Its full name is get_dofs_per_object_vector function and it creates the dofs_per_object vector that is needed within the constructor to be passed to the constructor of FiniteElementData.

template<int dim, int spacedim = dim>
virtual UpdateFlags FE_DGPNonparametric< dim, spacedim >::update_once ( const UpdateFlags  flags  )  const [private, virtual]

Given a set of flags indicating what quantities are requested from a FEValues object, return which of these can be precomputed once and for all. Often, the values of shape function at quadrature points can be precomputed, for example, in which case the return value of this function would be the logical and of the input flags and update_values.

For the present kind of finite element, this is exactly the case.

Implements FiniteElement< dim, spacedim >.

template<int dim, int spacedim = dim>
virtual UpdateFlags FE_DGPNonparametric< dim, spacedim >::update_each ( const UpdateFlags  flags  )  const [private, virtual]

This is the opposite to the above function: given a set of flags indicating what we want to know, return which of these need to be computed each time we visit a new cell.

If for the computation of one quantity something else is also required (for example, we often need the covariant transformation when gradients need to be computed), include this in the result as well.

Implements FiniteElement< dim, spacedim >.


Friends And Related Function Documentation

template<int dim, int spacedim = dim>
friend class FE_DGPNonparametric [friend]

Allow access from other dimensions.

template<int dim, int spacedim = dim>
friend class MappingQ [friend]

Allows MappingQ class to access to build_renumbering function.


Member Data Documentation

template<int dim, int spacedim = dim>
const unsigned int FE_DGPNonparametric< dim, spacedim >::degree [private]

Degree of the polynomials.

Reimplemented from FiniteElementData< dim >.

template<int dim, int spacedim = dim>
const PolynomialSpace<dim> FE_DGPNonparametric< dim, spacedim >::polynomial_space [private]

Pointer to an object representing the polynomial space used here.


The documentation for this class was generated from the following file:

deal.II documentation generated on Sat Aug 15 16:51:53 2009 by doxygen 1.5.9