![]() |
Reference documentation for deal.II version 8.1.0
|
#include <fe_poly.h>
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< ComponentMask > &nonzero_components) | |
unsigned int | get_degree () const |
std::vector< unsigned int > | get_poly_space_numbering () const |
std::vector< unsigned int > | get_poly_space_numbering_inverse () 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 |
![]() | |
FiniteElement (const FiniteElementData< dim > &fe_data, const std::vector< bool > &restriction_is_additive_flags, const std::vector< ComponentMask > &nonzero_components) | |
virtual | ~FiniteElement () |
virtual std::string | get_name () const =0 |
const FiniteElement< dim, spacedim > & | operator[] (const unsigned int fe_index) const |
bool | operator== (const FiniteElement< dim, spacedim > &) const |
virtual std::size_t | memory_consumption () const |
DeclException1 (ExcShapeFunctionNotPrimitive, int,<< "The shape function with index "<< arg1<< " is not primitive, i.e. it is vector-valued and "<< "has more than one non-zero vector component. This "<< "function cannot be called for these shape functions. "<< "Maybe you want to use the same function with the "<< "_component suffix?") | |
DeclException0 (ExcFENotPrimitive) | |
DeclException0 (ExcUnitShapeValuesDoNotExist) | |
DeclException0 (ExcFEHasNoSupportPoints) | |
DeclException0 (ExcEmbeddingVoid) | |
DeclException0 (ExcProjectionVoid) | |
DeclException0 (ExcConstraintsVoid) | |
DeclException0 (ExcInterpolationNotImplemented) | |
DeclException0 (ExcBoundaryFaceUsed) | |
DeclException0 (ExcJacobiDeterminantHasWrongSign) | |
DeclException2 (ExcWrongInterfaceMatrixSize, int, int,<< "The interface matrix has a size of "<< arg1<< "x"<< arg2<< ", which is not reasonable in the present dimension.") | |
DeclException2 (ExcComponentIndexInvalid, int, int,<< "The component-index pair ("<< arg1<< ", "<< arg2<< ") is invalid, i.e. non-existent.") | |
virtual bool | has_support_on_face (const unsigned int shape_index, const unsigned int face_index) const |
virtual const FullMatrix < double > & | get_restriction_matrix (const unsigned int child, const RefinementCase< dim > &refinement_case=RefinementCase< dim >::isotropic_refinement) const |
virtual const FullMatrix < double > & | get_prolongation_matrix (const unsigned int child, const RefinementCase< dim > &refinement_case=RefinementCase< dim >::isotropic_refinement) const |
bool | prolongation_is_implemented () const |
bool | isotropic_prolongation_is_implemented () const |
bool | restriction_is_implemented () const |
bool | isotropic_restriction_is_implemented () const |
bool | restriction_is_additive (const unsigned int index) const |
const FullMatrix< double > & | constraints (const ::internal::SubfaceCase< dim > &subface_case=::internal::SubfaceCase< dim >::case_isotropic) const |
bool | constraints_are_implemented (const ::internal::SubfaceCase< dim > &subface_case=::internal::SubfaceCase< dim >::case_isotropic) const |
virtual bool | hp_constraints_are_implemented () const |
virtual void | get_interpolation_matrix (const FiniteElement< dim, spacedim > &source, FullMatrix< double > &matrix) 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 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 FiniteElementDomination::Domination | compare_for_face_domination (const FiniteElement< dim, spacedim > &fe_other) const |
std::pair< unsigned int, unsigned int > | system_to_component_index (const unsigned int index) const |
unsigned int | component_to_system_index (const unsigned int component, const unsigned int index) const |
std::pair< unsigned int, unsigned int > | face_system_to_component_index (const unsigned int index) const |
virtual unsigned int | face_to_cell_index (const unsigned int face_dof_index, const unsigned int face, const bool face_orientation=true, const bool face_flip=false, const bool face_rotation=false) const |
unsigned int | adjust_quad_dof_index_for_face_orientation (const unsigned int index, const bool face_orientation, const bool face_flip, const bool face_rotation) const |
unsigned int | adjust_line_dof_index_for_line_orientation (const unsigned int index, const bool line_orientation) const |
const ComponentMask & | get_nonzero_components (const unsigned int i) const |
unsigned int | n_nonzero_components (const unsigned int i) const |
bool | is_primitive (const unsigned int i) const |
unsigned int | n_base_elements () const |
virtual const FiniteElement < dim, spacedim > & | base_element (const unsigned int index) const |
unsigned int | element_multiplicity (const unsigned int index) const |
std::pair< std::pair< unsigned int, unsigned int >, unsigned int > | system_to_base_index (const unsigned int index) const |
std::pair< std::pair< unsigned int, unsigned int >, unsigned int > | face_system_to_base_index (const unsigned int index) const |
types::global_dof_index | first_block_of_base (const unsigned int b) const |
std::pair< unsigned int, unsigned int > | component_to_base_index (const unsigned int component) const |
std::pair< unsigned int, unsigned int > | block_to_base_index (const unsigned int block) const |
std::pair< unsigned int, types::global_dof_index > | system_to_block_index (const unsigned int component) const |
unsigned int | component_to_block_index (const unsigned int component) const |
ComponentMask | component_mask (const FEValuesExtractors::Scalar &scalar) const |
ComponentMask | component_mask (const FEValuesExtractors::Vector &vector) const |
ComponentMask | component_mask (const FEValuesExtractors::SymmetricTensor< 2 > &sym_tensor) const |
ComponentMask | component_mask (const BlockMask &block_mask) const |
BlockMask | block_mask (const FEValuesExtractors::Scalar &scalar) const |
BlockMask | block_mask (const FEValuesExtractors::Vector &vector) const |
BlockMask | block_mask (const FEValuesExtractors::SymmetricTensor< 2 > &sym_tensor) const |
BlockMask | block_mask (const ComponentMask &component_mask) const |
const std::vector< Point< dim > > & | get_unit_support_points () const |
bool | has_support_points () const |
virtual Point< dim > | unit_support_point (const unsigned int index) const |
const std::vector< Point< dim-1 > > & | get_unit_face_support_points () const |
bool | has_face_support_points () const |
virtual Point< dim-1 > | unit_face_support_point (const unsigned int index) const |
const std::vector< Point< dim > > & | get_generalized_support_points () const |
bool | has_generalized_support_points () const |
const std::vector< Point< dim-1 > > & | get_generalized_face_support_points () const |
bool | has_generalized_face_support_points () const |
virtual void | interpolate (std::vector< double > &local_dofs, const std::vector< double > &values) const |
virtual void | interpolate (std::vector< double > &local_dofs, const std::vector< Vector< double > > &values, unsigned int offset=0) const |
virtual void | interpolate (std::vector< double > &local_dofs, const VectorSlice< const std::vector< std::vector< double > > > &values) const |
![]() | |
Subscriptor () | |
Subscriptor (const Subscriptor &) | |
virtual | ~Subscriptor () |
Subscriptor & | operator= (const Subscriptor &) |
void | subscribe (const char *identifier=0) const |
void | unsubscribe (const char *identifier=0) const |
unsigned int | n_subscriptions () const |
void | list_subscribers () const |
DeclException3 (ExcInUse, int, char *, std::string &,<< "Object of class "<< arg2<< " is still used by "<< arg1<< " other objects.\n"<< "(Additional information: "<< arg3<< ")\n"<< "Note the entry in the Frequently Asked Questions of "<< "deal.II (linked to from http://www.dealii.org/) for "<< "more information on what this error means.") | |
DeclException2 (ExcNoSubscriber, char *, char *,<< "No subscriber with identifier \""<< arg2<< "\" did subscribe to this object of class "<< arg1) | |
template<class Archive > | |
void | serialize (Archive &ar, const unsigned int version) |
![]() | |
FiniteElementData () | |
FiniteElementData (const std::vector< unsigned int > &dofs_per_object, const unsigned int n_components, const unsigned int degree, const Conformity conformity=unknown, const unsigned int n_blocks=numbers::invalid_unsigned_int) | |
unsigned int | n_dofs_per_vertex () const |
unsigned int | n_dofs_per_line () const |
unsigned int | n_dofs_per_quad () const |
unsigned int | n_dofs_per_hex () const |
unsigned int | n_dofs_per_face () const |
unsigned int | n_dofs_per_cell () const |
template<int structdim> | |
unsigned int | n_dofs_per_object () const |
unsigned int | n_components () const |
unsigned int | n_blocks () const |
const BlockIndices & | block_indices () const |
bool | is_primitive () const |
unsigned int | tensor_degree () const |
bool | conforms (const Conformity) const |
bool | operator== (const FiniteElementData &) 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, 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 |
![]() | |
void | reinit_restriction_and_prolongation_matrices (const bool isotropic_restriction_only=false, const bool isotropic_prolongation_only=false) |
TableIndices< 2 > | interface_constraints_size () const |
void | compute_2nd (const Mapping< dim, spacedim > &mapping, const typename Triangulation< dim, spacedim >::cell_iterator &cell, const unsigned int offset, typename Mapping< dim, spacedim >::InternalDataBase &mapping_internal, InternalDataBase &fe_internal, FEValuesData< dim, spacedim > &data) const |
virtual FiniteElement< dim, spacedim > * | clone () const =0 |
![]() | |
void | set_primitivity (const bool value) |
Protected Attributes | |
POLY | poly_space |
![]() | |
std::vector< std::vector < FullMatrix< double > > > | restriction |
std::vector< std::vector < FullMatrix< double > > > | prolongation |
FullMatrix< double > | interface_constraints |
std::vector< Point< dim > > | unit_support_points |
std::vector< Point< dim-1 > > | unit_face_support_points |
std::vector< Point< dim > > | generalized_support_points |
std::vector< Point< dim-1 > > | generalized_face_support_points |
Table< 2, int > | adjust_quad_dof_index_for_face_orientation_table |
std::vector< int > | adjust_line_dof_index_for_line_orientation_table |
Additional Inherited Members | |
![]() | |
enum | Conformity { unknown = 0x00, L2 = 0x01, Hcurl = 0x02, Hdiv = 0x04, H1 = Hcurl | Hdiv, H2 = 0x0e } |
![]() | |
const unsigned int | dofs_per_vertex |
const unsigned int | dofs_per_line |
const unsigned int | dofs_per_quad |
const unsigned int | dofs_per_hex |
const unsigned int | first_line_index |
const unsigned int | first_quad_index |
const unsigned int | first_hex_index |
const unsigned int | first_face_line_index |
const unsigned int | first_face_quad_index |
const unsigned int | dofs_per_face |
const unsigned int | dofs_per_cell |
const unsigned int | components |
const unsigned int | degree |
const Conformity | conforming_space |
BlockIndices | block_indices_data |
![]() | |
static const unsigned int | dimension = dim |
![]() | |
static std::vector< unsigned int > | compute_n_nonzero_components (const std::vector< ComponentMask > &nonzero_components) |
This class gives a unified framework for the implementation of FiniteElement classes based on polynomial spaces like the TensorProductPolynomials or PolynomialSpace classes.
Every class conforming to the following interface can be used as template parameter POLY.
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.
DEAL_II_NAMESPACE_OPEN 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< ComponentMask > & | nonzero_components | ||
) |
Constructor.
Definition at line 28 of file fe_poly.templates.h.
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.
Definition at line 43 of file fe_poly.templates.h.
std::vector< unsigned int > FE_Poly< POLY, dim, spacedim >::get_poly_space_numbering | ( | ) | const |
Return the numbering of the underlying polynomial space compared to lexicographic ordering of the basis functions. Returns POLY::get_numbering().
Definition at line 489 of file fe_poly.templates.h.
std::vector< unsigned int > FE_Poly< POLY, dim, spacedim >::get_poly_space_numbering_inverse | ( | ) | const |
Return the inverse numbering of the underlying polynomial space. Returns POLY::get_numbering_inverse().
Definition at line 499 of file fe_poly.templates.h.
|
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 >.
Definition at line 51 of file fe_poly.templates.h.
|
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 >.
Definition at line 61 of file fe_poly.templates.h.
|
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 >.
Definition at line 74 of file fe_poly.templates.h.
|
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 >.
Definition at line 85 of file fe_poly.templates.h.
|
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 >.
Definition at line 98 of file fe_poly.templates.h.
|
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 >.
Definition at line 109 of file fe_poly.templates.h.
|
protectedvirtual |
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 >.
Definition at line 165 of file fe_poly.templates.h.
|
protectedvirtual |
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 >.
Definition at line 248 of file fe_poly.templates.h.
|
protectedvirtual |
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 >.
Definition at line 286 of file fe_poly.templates.h.
|
protectedvirtual |
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 >.
Definition at line 400 of file fe_poly.templates.h.
|
protectedvirtual |
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 >.
Definition at line 129 of file fe_poly.templates.h.
|
protectedvirtual |
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 >.
Definition at line 143 of file fe_poly.templates.h.
|
protected |