//---------------------------------------------------------------------------
// $Id$
//
-// Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2009, 2010 by the deal.II authors
+// Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2009, 2010, 2011 by the deal.II authors
//
// This file is subject to QPL and may not be distributed
// without copyright and license information. Please refer
* options open until we get to the
* second base element.
*
+ * Finally, the code
+ * no_requirements exists for cases
+ * where elements impose no
+ * continuity requirements. The
+ * case is primarily meant for
+ * FE_Nothing which is an element
+ * that has no degrees of freedom
+ * in a subdomain. It could also be
+ * used by discontinuous elements,
+ * for example.
+ *
* More details on domination can be found
* in the @ref hp_paper "hp paper".
*/
this_element_dominates,
other_element_dominates,
neither_element_dominates,
- either_element_can_dominate
+ either_element_can_dominate,
+ no_requirements
};
* system.
*/
unknown = 0x00,
-
+
/**
* Discontinuous
* elements. See above!
*/
L2 = 0x01,
-
+
/**
* Conformity with the
* space
* field)
*/
Hcurl = 0x02,
-
+
/**
* Conformity with the
* space
* field)
*/
Hdiv = 0x04,
-
+
/**
* Conformity with the
* space
* (continuous)
*/
H1 = Hcurl | Hdiv,
-
+
/**
* Conformity with the
* space
* parameter <tt>dim</tt>
*/
static const unsigned int dimension = dim;
-
+
/**
* Number of degrees of freedom on
* a vertex.
* First index of dof on a line.
*/
const unsigned int first_line_index;
-
+
/**
* First index of dof on a quad.
*/
const unsigned int first_quad_index;
-
+
/**
* First index of dof on a hexahedron.
*/
const unsigned int first_hex_index;
-
+
/**
* First index of dof on a line for face data.
*/
const unsigned int first_face_line_index;
-
+
/**
* First index of dof on a quad for face data.
*/
* face.
*/
const unsigned int dofs_per_face;
-
+
/**
* Total number of degrees of freedom
* on a cell. This is the
* element multiplicities.
*/
const unsigned int blocks;
-
+
/**
* Maximal polynomial degree of a
* shape function in a single
* Indicate the space this element conforms to.
*/
const Conformity conforming_space;
-
+
/**
* Default
* constructor. Constructs an
*/
template <int structdim>
unsigned int n_dofs_per_object () const;
-
+
/**
* Number of components.
*/
* the constructor.
*/
bool is_primitive () const;
-
+
/**
* Maximal polynomial degree of a
* shape function in a single
* ordering of indices on a face,
* return the index of the same
* degree of freedom on the cell.
- *
+ *
*/
unsigned int face_to_cell_index (const unsigned int face_index,
const unsigned int face,
const bool face_orientation = true,
const bool face_flip = false,
const bool face_rotation = false) const;
-
+
/**
* @deprecated This function is
* just a special version of
*
*/
unsigned int face_to_equivalent_cell_index (const unsigned int index) const;
-
+
/**
* Comparison operator.
*/
* for details.
*/
void set_primitivity(const bool value);
-
+
private:
/**
* Store whether all shape
return this_element_dominates;
else
return neither_element_dominates;
-
+
case other_element_dominates:
if ((d2 == other_element_dominates) ||
(d2 == either_element_can_dominate))
return neither_element_dominates;
case either_element_can_dominate:
+ case no_requirements:
return d2;
default:
template <int dim>
inline
-unsigned int
+unsigned int
FiniteElementData<dim>::n_dofs_per_vertex () const
{
return dofs_per_vertex;
template <int dim>
inline
-unsigned int
+unsigned int
FiniteElementData<dim>::n_dofs_per_line () const
{
return dofs_per_line;
template <int dim>
inline
-unsigned int
+unsigned int
FiniteElementData<dim>::n_dofs_per_quad () const
{
return dofs_per_quad;
template <int dim>
inline
-unsigned int
+unsigned int
FiniteElementData<dim>::n_dofs_per_hex () const
{
return dofs_per_hex;
template <int dim>
inline
-unsigned int
+unsigned int
FiniteElementData<dim>::n_dofs_per_face () const
{
return dofs_per_face;
template <int dim>
inline
-unsigned int
+unsigned int
FiniteElementData<dim>::n_dofs_per_cell () const
{
return dofs_per_cell;
template <int dim>
inline
-unsigned int
+unsigned int
FiniteElementData<dim>::n_components () const
{
return components;
-template <int dim>
+template <int dim>
inline
bool
FiniteElementData<dim>::is_primitive () const
}
-template <int dim>
+template <int dim>
inline
void
FiniteElementData<dim>::set_primitivity (const bool value)
template <int dim>
inline
-unsigned int
+unsigned int
FiniteElementData<dim>::n_blocks () const
{
return blocks;
template <int dim>
inline
-unsigned int
+unsigned int
FiniteElementData<dim>::tensor_degree () const
{
return degree;