Classes | |
class | InternalData |
Public Member Functions | |
FE_Poly (const POLY &poly_space, const FiniteElementData< dim > &fe_data, const std::vector< bool > &restriction_is_additive_flags, const std::vector< std::vector< bool > > &nonzero_components) | |
unsigned int | get_degree () 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 |
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 |
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 |
virtual UpdateFlags | update_once (const UpdateFlags flags) const |
virtual UpdateFlags | update_each (const UpdateFlags flags) const |
Protected Attributes | |
POLY | poly_space |
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; Tensor<1,dim> compute_grad (const unsigned int i, const Point<dim> &p) const; Tensor<2,dim> compute_grad_grad (const unsigned int i, const Point<dim> &p) const;
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.
Todos:
FE_Poly< POLY, dim, spacedim >::FE_Poly | ( | const POLY & | poly_space, | |
const FiniteElementData< dim > & | fe_data, | |||
const std::vector< bool > & | restriction_is_additive_flags, | |||
const std::vector< std::vector< bool > > & | nonzero_components | |||
) |
Constructor.
unsigned int FE_Poly< POLY, dim, spacedim >::get_degree | ( | ) | const |
Return the polynomial degree of this finite element, i.e. the value passed to the constructor.
virtual double FE_Poly< POLY, dim, spacedim >::shape_value | ( | const unsigned int | i, | |
const Point< dim > & | p | |||
) | const [virtual] |
Return the value of the i
th 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 >.
virtual double FE_Poly< POLY, dim, spacedim >::shape_value_component | ( | const unsigned int | i, | |
const Point< dim > & | p, | |||
const unsigned int | component | |||
) | const [virtual] |
Return the value of the component
th vector component of the i
th 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 >.
virtual Tensor<1,dim> FE_Poly< POLY, dim, spacedim >::shape_grad | ( | const unsigned int | i, | |
const Point< dim > & | p | |||
) | const [virtual] |
Return the gradient of the i
th 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 >.
virtual Tensor<1,dim> FE_Poly< POLY, dim, spacedim >::shape_grad_component | ( | const unsigned int | i, | |
const Point< dim > & | p, | |||
const unsigned int | component | |||
) | const [virtual] |
Return the gradient of the component
th vector component of the i
th 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 >.
virtual Tensor<2,dim> FE_Poly< POLY, dim, spacedim >::shape_grad_grad | ( | const unsigned int | i, | |
const Point< dim > & | p | |||
) | const [virtual] |
Return the tensor of second derivatives of the i
th 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 >.
virtual Tensor<2,dim> FE_Poly< POLY, 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 component
th vector component of the i
th 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 >.
virtual unsigned int FE_Poly< POLY, 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 >.
virtual const FiniteElement<dim,spacedim>& FE_Poly< 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 >.
virtual unsigned int FE_Poly< 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 >.
virtual Mapping<dim,spacedim>::InternalDataBase* FE_Poly< 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 >.
virtual void FE_Poly< 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, | |||
enum 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 >.
virtual void FE_Poly< 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 >.
virtual void FE_Poly< 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 >.
virtual UpdateFlags FE_Poly< 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 >.
virtual UpdateFlags FE_Poly< 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:
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. 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 >.
POLY FE_Poly< POLY, dim, spacedim >::poly_space [protected] |
The polynomial space. Its type is given by the template parameter POLY.