FE_PolyFace< POLY, dim, spacedim > Class Template Reference
[Base classes]

Inheritance diagram for FE_PolyFace< POLY, dim, spacedim >:

Inheritance graph
[legend]

List of all members.

Public Member Functions

 FE_PolyFace (const POLY &poly_space, const FiniteElementData< dim > &fe_data, const std::vector< bool > &restriction_is_additive_flags)
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

Protected Member Functions

virtual Mapping< dim, spacedim >
::InternalDataBase
get_data (const UpdateFlags, const Mapping< dim, spacedim > &mapping, const Quadrature< dim > &quadrature) const
Mapping< dim, spacedim >
::InternalDataBase
get_face_data (const UpdateFlags, const Mapping< dim, spacedim > &mapping, const Quadrature< dim-1 > &quadrature) const
Mapping< dim, spacedim >
::InternalDataBase
get_subface_data (const UpdateFlags, const Mapping< dim, spacedim > &mapping, const Quadrature< dim-1 > &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, 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
virtual UpdateFlags update_once (const UpdateFlags flags) const
virtual UpdateFlags update_each (const UpdateFlags flags) const

Protected Attributes

POLY poly_space

Classes

class  InternalData


Detailed Description

template<class POLY, int dim = POLY::dimension+1, int spacedim = dim>
class FE_PolyFace< POLY, dim, spacedim >

Warning:
This class is not sufficiently tested yet!
This class gives a unified framework for the implementation of FiniteElement classes only located on faces of the mesh. Theu are based on polynomial spaces like the TensorProductPolynomials or a PolynomialSpace classes.

Every class that implements following functions can be used as template parameter POLY.

 double compute_value (const unsigned int i,
                       const Point<dim> &p) const;
Example classes are TensorProductPolynomials, PolynomialSpace or PolynomialsP.

This class is not a fully implemented FiniteElement class. Instead there are several pure virtual functions declared in the FiniteElement and FiniteElement classes which cannot implemented by this class but are left for implementation in derived classes.

Furthermore, this class assumes that shape functions of the FiniteElement under consideration do not depend on the actual shape of the cells in real space, i.e. update_once() includes update_values. For FiniteElements whose shape functions depend on the cells in real space, the update_once() and update_each() functions must be overloaded.

Author:
Guido Kanschat, 2009

Constructor & Destructor Documentation

template<class POLY, int dim = POLY::dimension+1, int spacedim = dim>
FE_PolyFace< POLY, dim, spacedim >::FE_PolyFace ( const POLY &  poly_space,
const FiniteElementData< dim > &  fe_data,
const std::vector< bool > &  restriction_is_additive_flags 
)

Constructor.


Member Function Documentation

template<class POLY, int dim = POLY::dimension+1, int spacedim = dim>
unsigned int FE_PolyFace< POLY, dim, spacedim >::get_degree (  )  const

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

template<class POLY, int dim = POLY::dimension+1, int spacedim = dim>
virtual unsigned int FE_PolyFace< POLY, dim, spacedim >::n_base_elements (  )  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. 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. 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. 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. 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. 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. Number of base elements in a mixed discretization. Since this is a scalar element, return one.

Implements FiniteElement< dim, spacedim >.

template<class POLY, int dim = POLY::dimension+1, int spacedim = dim>
virtual const FiniteElement<dim,spacedim>& FE_PolyFace< POLY, 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<class POLY, int dim = POLY::dimension+1, int spacedim = dim>
virtual unsigned int FE_PolyFace< POLY, 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<class POLY, int dim = POLY::dimension+1, int spacedim = dim>
virtual Mapping<dim,spacedim>::InternalDataBase* FE_PolyFace< POLY, dim, spacedim >::get_data ( const   flags,
const Mapping< dim, spacedim > &  mapping,
const Quadrature< dim > &  quadrature 
) const [protected, virtual]

Prepare internal data structures and fill in values independent of the cell. Returns a pointer to an object of which the caller of this function then has to assume ownership (which includes destruction when it is no more needed).

Implements FiniteElement< dim, spacedim >.

template<class POLY, int dim = POLY::dimension+1, int spacedim = dim>
Mapping<dim,spacedim>::InternalDataBase* FE_PolyFace< POLY, dim, spacedim >::get_face_data ( const   flags,
const Mapping< dim, spacedim > &  mapping,
const Quadrature< dim-1 > &  quadrature 
) const [protected, virtual]

Prepare internal data structure for transformation of faces and fill in values independent of the cell. Returns a pointer to an object of which the caller of this function then has to assume ownership (which includes destruction when it is no more needed).

Reimplemented from FiniteElement< dim, spacedim >.

template<class POLY, int dim = POLY::dimension+1, int spacedim = dim>
Mapping<dim,spacedim>::InternalDataBase* FE_PolyFace< POLY, dim, spacedim >::get_subface_data ( const   flags,
const Mapping< dim, spacedim > &  mapping,
const Quadrature< dim-1 > &  quadrature 
) const [protected, virtual]

Prepare internal data structure for transformation of children of faces and fill in values independent of the cell. Returns a pointer to an object of which the caller of this function then has to assume ownership (which includes destruction when it is no more needed).

Reimplemented from FiniteElement< dim, spacedim >.

template<class POLY, int dim = POLY::dimension+1, int spacedim = dim>
virtual void FE_PolyFace< POLY, 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,
CellSimilarity::Similarity cell_similarity 
) const [protected, virtual]

Fill the fields of FEValues. This function performs all the operations needed to compute the data of an FEValues object.

The same function in mapping must have been called for the same cell first!

Implements FiniteElement< dim, spacedim >.

template<class POLY, int dim = POLY::dimension+1, int spacedim = dim>
virtual void FE_PolyFace< POLY, 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]

Fill the fields of FEFaceValues. This function performs all the operations needed to compute the data of an FEFaceValues object.

The same function in mapping must have been called for the same cell first!

Implements FiniteElement< dim, spacedim >.

template<class POLY, int dim = POLY::dimension+1, int spacedim = dim>
virtual void FE_PolyFace< POLY, 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]

Fill the fields of FESubfaceValues. This function performs all the operations needed to compute the data of an FESubfaceValues object.

The same function in mapping must have been called for the same cell first!

Implements FiniteElement< dim, spacedim >.

template<class POLY, int dim = POLY::dimension+1, int spacedim = dim>
virtual UpdateFlags FE_PolyFace< POLY, dim, spacedim >::update_once ( const UpdateFlags  flags  )  const [protected, virtual]

Determine the values that need to be computed on the unit cell to be able to compute all values required by flags.

For the purpuse of this function, refer to the documentation in FiniteElement.

This class assumes that shape functions of this FiniteElement do not depend on the actual shape of the cells in real space. Therefore, the effect in this element is as follows: if update_values is set in flags, copy it to the result. All other flags of the result are cleared, since everything else must be computed for each cell.

Implements FiniteElement< dim, spacedim >.

template<class POLY, int dim = POLY::dimension+1, int spacedim = dim>
virtual UpdateFlags FE_PolyFace< POLY, dim, spacedim >::update_each ( const UpdateFlags  flags  )  const [protected, virtual]

Determine the values that need to be computed on every cell to be able to compute all values required by flags.

For the purpuse of this function, refer to the documentation in FiniteElement.

This class assumes that shape functions of this FiniteElement do not depend on the actual shape of the cells in real space.

The effect in this element is as follows:

  • if update_gradients is set, the result will contain update_gradients and update_covariant_transformation. The latter is required to transform the gradient on the unit cell to the real cell. Remark, that the action required by update_covariant_transformation is actually performed by the Mapping object used in conjunction with this finite element.
  • if update_hessians is set, the result will contain update_hessians and update_covariant_transformation. The rationale is the same as above and no higher derivatives of the transformation are required, since we use difference quotients for the actual computation.

Implements FiniteElement< dim, spacedim >.


Member Data Documentation

template<class POLY, int dim = POLY::dimension+1, int spacedim = dim>
POLY FE_PolyFace< POLY, dim, spacedim >::poly_space [protected]

The polynomial space. Its type is given by the template parameter POLY.


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

deal.II documentation generated on Wed Jul 28 23:06:26 2010 by doxygen 1.5.6