/**
* Index of the <i>i</i>th degree
* of freedom of this object.
- */
- unsigned int dof_index (const unsigned int i) const;
+ *
+ * The last argument denotes the
+ * finite element index. For the
+ * standard ::DoFHandler class,
+ * this value must be equal to
+ * its default value since that
+ * class only supports the same
+ * finite element on all cells
+ * anyway.
+ *
+ * However, for hp objects
+ * (i.e. the hp::DoFHandler
+ * class), different finite
+ * element objects may be used on
+ * different cells. On faces
+ * between two cells, as well as
+ * vertices, there may therefore
+ * be two sets of degrees of
+ * freedom, one for each of the
+ * finite elements used on the
+ * adjacent cells. In order to
+ * specify which set of degrees
+ * of freedom to work on, the
+ * last argument is used to
+ * disambiguate. Finally, if this
+ * function is called for a cell
+ * object, there can only be a
+ * single set of degrees of
+ * freedom, and fe_index has to
+ * match the result of
+ * active_fe_index().
+ */
+ unsigned int dof_index (const unsigned int i,
+ const unsigned int fe_index = DH::default_fe_index) const;
/**
- * Set the index of the <i>i</i>th degree
- * of freedom of this object to @p index.
+ * Set the index of the
+ * <i>i</i>th degree of freedom
+ * of this object to @p index.
+ *
+ * The last argument denotes the
+ * finite element index. For the
+ * standard ::DoFHandler class,
+ * this value must be equal to
+ * its default value since that
+ * class only supports the same
+ * finite element on all cells
+ * anyway.
+ *
+ * However, for hp objects
+ * (i.e. the hp::DoFHandler
+ * class), different finite
+ * element objects may be used on
+ * different cells. On faces
+ * between two cells, as well as
+ * vertices, there may therefore
+ * be two sets of degrees of
+ * freedom, one for each of the
+ * finite elements used on the
+ * adjacent cells. In order to
+ * specify which set of degrees
+ * of freedom to work on, the
+ * last argument is used to
+ * disambiguate. Finally, if this
+ * function is called for a cell
+ * object, there can only be a
+ * single set of degrees of
+ * freedom, and fe_index has to
+ * match the result of
+ * active_fe_index().
*/
void set_dof_index (const unsigned int i,
- const int index) const;
+ const unsigned int index,
+ const unsigned int fe_index = DH::default_fe_index) const;
/**
* Index of the <i>i</i> degree
* on the @p vertexth vertex.
+ *
+ * The last argument denotes the
+ * finite element index. For the
+ * standard ::DoFHandler class,
+ * this value must be equal to
+ * its default value since that
+ * class only supports the same
+ * finite element on all cells
+ * anyway.
+ *
+ * However, for hp objects
+ * (i.e. the hp::DoFHandler
+ * class), different finite
+ * element objects may be used on
+ * different cells. On faces
+ * between two cells, as well as
+ * vertices, there may therefore
+ * be two sets of degrees of
+ * freedom, one for each of the
+ * finite elements used on the
+ * adjacent cells. In order to
+ * specify which set of degrees
+ * of freedom to work on, the
+ * last argument is used to
+ * disambiguate. Finally, if this
+ * function is called for a cell
+ * object, there can only be a
+ * single set of degrees of
+ * freedom, and fe_index has to
+ * match the result of
+ * active_fe_index().
*/
unsigned int vertex_dof_index (const unsigned int vertex,
- const unsigned int i) const;
+ const unsigned int i,
+ const unsigned int fe_index = DH::default_fe_index) const;
/**
* Set the index of the <i>i</i> degree
* on the @p vertexth vertex to @p index.
+ *
+ * The last argument denotes the
+ * finite element index. For the
+ * standard ::DoFHandler class,
+ * this value must be equal to
+ * its default value since that
+ * class only supports the same
+ * finite element on all cells
+ * anyway.
+ *
+ * However, for hp objects
+ * (i.e. the hp::DoFHandler
+ * class), different finite
+ * element objects may be used on
+ * different cells. On faces
+ * between two cells, as well as
+ * vertices, there may therefore
+ * be two sets of degrees of
+ * freedom, one for each of the
+ * finite elements used on the
+ * adjacent cells. In order to
+ * specify which set of degrees
+ * of freedom to work on, the
+ * last argument is used to
+ * disambiguate. Finally, if this
+ * function is called for a cell
+ * object, there can only be a
+ * single set of degrees of
+ * freedom, and fe_index has to
+ * match the result of
+ * active_fe_index().
*/
void set_vertex_dof_index (const unsigned int vertex,
const unsigned int i,
- const unsigned int index) const;
+ const unsigned int index,
+ const unsigned int fe_index = DH::default_fe_index) const;
/**
* Return the indices of the dofs of this
const AccessorData *local_data);
/**
- * Return the index of the @p ith degree
- * of freedom of this line.
- */
- unsigned int dof_index (const unsigned int i) const;
+ * Index of the <i>i</i>th degree
+ * of freedom of this object.
+ *
+ * The last argument denotes the
+ * finite element index. For the
+ * standard ::DoFHandler class,
+ * this value must be equal to
+ * its default value since that
+ * class only supports the same
+ * finite element on all cells
+ * anyway.
+ *
+ * However, for hp objects
+ * (i.e. the hp::DoFHandler
+ * class), different finite
+ * element objects may be used on
+ * different cells. On faces
+ * between two cells, as well as
+ * vertices, there may therefore
+ * be two sets of degrees of
+ * freedom, one for each of the
+ * finite elements used on the
+ * adjacent cells. In order to
+ * specify which set of degrees
+ * of freedom to work on, the
+ * last argument is used to
+ * disambiguate. Finally, if this
+ * function is called for a cell
+ * object, there can only be a
+ * single set of degrees of
+ * freedom, and fe_index has to
+ * match the result of
+ * active_fe_index().
+ */
+ unsigned int dof_index (const unsigned int i,
+ const unsigned int fe_index = DH::default_fe_index) const;
/**
- * Set the index of the @p ith degree
- * of freedom of this line to @p index.
+ * Set the index of the
+ * <i>i</i>th degree of freedom
+ * of this object to @p index.
+ *
+ * The last argument denotes the
+ * finite element index. For the
+ * standard ::DoFHandler class,
+ * this value must be equal to
+ * its default value since that
+ * class only supports the same
+ * finite element on all cells
+ * anyway.
+ *
+ * However, for hp objects
+ * (i.e. the hp::DoFHandler
+ * class), different finite
+ * element objects may be used on
+ * different cells. On faces
+ * between two cells, as well as
+ * vertices, there may therefore
+ * be two sets of degrees of
+ * freedom, one for each of the
+ * finite elements used on the
+ * adjacent cells. In order to
+ * specify which set of degrees
+ * of freedom to work on, the
+ * last argument is used to
+ * disambiguate. Finally, if this
+ * function is called for a cell
+ * object, there can only be a
+ * single set of degrees of
+ * freedom, and fe_index has to
+ * match the result of
+ * active_fe_index().
*/
void set_dof_index (const unsigned int i,
- const unsigned int index) const;
+ const unsigned int index,
+ const unsigned int fe_index = DH::default_fe_index) const;
/**
- * Return the index of the @p ith degree
+ * Index of the <i>i</i> degree
* on the @p vertexth vertex.
+ *
+ * The last argument denotes the
+ * finite element index. For the
+ * standard ::DoFHandler class,
+ * this value must be equal to
+ * its default value since that
+ * class only supports the same
+ * finite element on all cells
+ * anyway.
+ *
+ * However, for hp objects
+ * (i.e. the hp::DoFHandler
+ * class), different finite
+ * element objects may be used on
+ * different cells. On faces
+ * between two cells, as well as
+ * vertices, there may therefore
+ * be two sets of degrees of
+ * freedom, one for each of the
+ * finite elements used on the
+ * adjacent cells. In order to
+ * specify which set of degrees
+ * of freedom to work on, the
+ * last argument is used to
+ * disambiguate. Finally, if this
+ * function is called for a cell
+ * object, there can only be a
+ * single set of degrees of
+ * freedom, and fe_index has to
+ * match the result of
+ * active_fe_index().
*/
unsigned int vertex_dof_index (const unsigned int vertex,
- const unsigned int i) const;
+ const unsigned int i,
+ const unsigned int fe_index = DH::default_fe_index) const;
/**
- * Set the index of the @p ith degree
+ * Set the index of the <i>i</i> degree
* on the @p vertexth vertex to @p index.
+ *
+ * The last argument denotes the
+ * finite element index. For the
+ * standard ::DoFHandler class,
+ * this value must be equal to
+ * its default value since that
+ * class only supports the same
+ * finite element on all cells
+ * anyway.
+ *
+ * However, for hp objects
+ * (i.e. the hp::DoFHandler
+ * class), different finite
+ * element objects may be used on
+ * different cells. On faces
+ * between two cells, as well as
+ * vertices, there may therefore
+ * be two sets of degrees of
+ * freedom, one for each of the
+ * finite elements used on the
+ * adjacent cells. In order to
+ * specify which set of degrees
+ * of freedom to work on, the
+ * last argument is used to
+ * disambiguate. Finally, if this
+ * function is called for a cell
+ * object, there can only be a
+ * single set of degrees of
+ * freedom, and fe_index has to
+ * match the result of
+ * active_fe_index().
*/
void set_vertex_dof_index (const unsigned int vertex,
const unsigned int i,
- const unsigned int index) const;
+ const unsigned int index,
+ const unsigned int fe_index = DH::default_fe_index) const;
/**
* Return the indices of the dofs of this
const AccessorData *local_data);
/**
- * Return the index of the @p ith degree
- * of freedom of this quad.
- */
- unsigned int dof_index (const unsigned int i) const;
+ * Index of the <i>i</i>th degree
+ * of freedom of this object.
+ *
+ * The last argument denotes the
+ * finite element index. For the
+ * standard ::DoFHandler class,
+ * this value must be equal to
+ * its default value since that
+ * class only supports the same
+ * finite element on all cells
+ * anyway.
+ *
+ * However, for hp objects
+ * (i.e. the hp::DoFHandler
+ * class), different finite
+ * element objects may be used on
+ * different cells. On faces
+ * between two cells, as well as
+ * vertices, there may therefore
+ * be two sets of degrees of
+ * freedom, one for each of the
+ * finite elements used on the
+ * adjacent cells. In order to
+ * specify which set of degrees
+ * of freedom to work on, the
+ * last argument is used to
+ * disambiguate. Finally, if this
+ * function is called for a cell
+ * object, there can only be a
+ * single set of degrees of
+ * freedom, and fe_index has to
+ * match the result of
+ * active_fe_index().
+ */
+ unsigned int dof_index (const unsigned int i,
+ const unsigned int fe_index = DH::default_fe_index) const;
/**
- * Set the index of the @p ith degree
- * of freedom of this quad to @p index.
+ * Set the index of the
+ * <i>i</i>th degree of freedom
+ * of this object to @p index.
+ *
+ * The last argument denotes the
+ * finite element index. For the
+ * standard ::DoFHandler class,
+ * this value must be equal to
+ * its default value since that
+ * class only supports the same
+ * finite element on all cells
+ * anyway.
+ *
+ * However, for hp objects
+ * (i.e. the hp::DoFHandler
+ * class), different finite
+ * element objects may be used on
+ * different cells. On faces
+ * between two cells, as well as
+ * vertices, there may therefore
+ * be two sets of degrees of
+ * freedom, one for each of the
+ * finite elements used on the
+ * adjacent cells. In order to
+ * specify which set of degrees
+ * of freedom to work on, the
+ * last argument is used to
+ * disambiguate. Finally, if this
+ * function is called for a cell
+ * object, there can only be a
+ * single set of degrees of
+ * freedom, and fe_index has to
+ * match the result of
+ * active_fe_index().
*/
void set_dof_index (const unsigned int i,
- const unsigned int index) const;
+ const unsigned int index,
+ const unsigned int fe_index = DH::default_fe_index) const;
/**
- * Return the index of the @p ith degree
+ * Index of the <i>i</i> degree
* on the @p vertexth vertex.
+ *
+ * The last argument denotes the
+ * finite element index. For the
+ * standard ::DoFHandler class,
+ * this value must be equal to
+ * its default value since that
+ * class only supports the same
+ * finite element on all cells
+ * anyway.
+ *
+ * However, for hp objects
+ * (i.e. the hp::DoFHandler
+ * class), different finite
+ * element objects may be used on
+ * different cells. On faces
+ * between two cells, as well as
+ * vertices, there may therefore
+ * be two sets of degrees of
+ * freedom, one for each of the
+ * finite elements used on the
+ * adjacent cells. In order to
+ * specify which set of degrees
+ * of freedom to work on, the
+ * last argument is used to
+ * disambiguate. Finally, if this
+ * function is called for a cell
+ * object, there can only be a
+ * single set of degrees of
+ * freedom, and fe_index has to
+ * match the result of
+ * active_fe_index().
*/
unsigned int vertex_dof_index (const unsigned int vertex,
- const unsigned int i) const;
+ const unsigned int i,
+ const unsigned int fe_index = DH::default_fe_index) const;
/**
- * Set the index of the @p ith degree
+ * Set the index of the <i>i</i> degree
* on the @p vertexth vertex to @p index.
+ *
+ * The last argument denotes the
+ * finite element index. For the
+ * standard ::DoFHandler class,
+ * this value must be equal to
+ * its default value since that
+ * class only supports the same
+ * finite element on all cells
+ * anyway.
+ *
+ * However, for hp objects
+ * (i.e. the hp::DoFHandler
+ * class), different finite
+ * element objects may be used on
+ * different cells. On faces
+ * between two cells, as well as
+ * vertices, there may therefore
+ * be two sets of degrees of
+ * freedom, one for each of the
+ * finite elements used on the
+ * adjacent cells. In order to
+ * specify which set of degrees
+ * of freedom to work on, the
+ * last argument is used to
+ * disambiguate. Finally, if this
+ * function is called for a cell
+ * object, there can only be a
+ * single set of degrees of
+ * freedom, and fe_index has to
+ * match the result of
+ * active_fe_index().
*/
void set_vertex_dof_index (const unsigned int vertex,
const unsigned int i,
- const unsigned int index) const;
+ const unsigned int index,
+ const unsigned int fe_index = DH::default_fe_index) const;
/**
* Return the indices of the dofs of this
const int index,
const AccessorData *local_data);
+
/**
- * Return the index of the @p ith degree
- * of freedom of this hex.
- */
- unsigned int dof_index (const unsigned int i) const;
+ * Index of the <i>i</i>th degree
+ * of freedom of this object.
+ *
+ * The last argument denotes the
+ * finite element index. For the
+ * standard ::DoFHandler class,
+ * this value must be equal to
+ * its default value since that
+ * class only supports the same
+ * finite element on all cells
+ * anyway.
+ *
+ * However, for hp objects
+ * (i.e. the hp::DoFHandler
+ * class), different finite
+ * element objects may be used on
+ * different cells. On faces
+ * between two cells, as well as
+ * vertices, there may therefore
+ * be two sets of degrees of
+ * freedom, one for each of the
+ * finite elements used on the
+ * adjacent cells. In order to
+ * specify which set of degrees
+ * of freedom to work on, the
+ * last argument is used to
+ * disambiguate. Finally, if this
+ * function is called for a cell
+ * object, there can only be a
+ * single set of degrees of
+ * freedom, and fe_index has to
+ * match the result of
+ * active_fe_index().
+ */
+ unsigned int dof_index (const unsigned int i,
+ const unsigned int fe_index = DH::default_fe_index) const;
/**
- * Set the index of the @p ith degree
- * of freedom of this hex to @p index.
+ * Set the index of the
+ * <i>i</i>th degree of freedom
+ * of this object to @p index.
+ *
+ * The last argument denotes the
+ * finite element index. For the
+ * standard ::DoFHandler class,
+ * this value must be equal to
+ * its default value since that
+ * class only supports the same
+ * finite element on all cells
+ * anyway.
+ *
+ * However, for hp objects
+ * (i.e. the hp::DoFHandler
+ * class), different finite
+ * element objects may be used on
+ * different cells. On faces
+ * between two cells, as well as
+ * vertices, there may therefore
+ * be two sets of degrees of
+ * freedom, one for each of the
+ * finite elements used on the
+ * adjacent cells. In order to
+ * specify which set of degrees
+ * of freedom to work on, the
+ * last argument is used to
+ * disambiguate. Finally, if this
+ * function is called for a cell
+ * object, there can only be a
+ * single set of degrees of
+ * freedom, and fe_index has to
+ * match the result of
+ * active_fe_index().
*/
void set_dof_index (const unsigned int i,
- const unsigned int index) const;
+ const unsigned int index,
+ const unsigned int fe_index = DH::default_fe_index) const;
/**
- * Return the index of the @p ith degree
+ * Index of the <i>i</i> degree
* on the @p vertexth vertex.
+ *
+ * The last argument denotes the
+ * finite element index. For the
+ * standard ::DoFHandler class,
+ * this value must be equal to
+ * its default value since that
+ * class only supports the same
+ * finite element on all cells
+ * anyway.
+ *
+ * However, for hp objects
+ * (i.e. the hp::DoFHandler
+ * class), different finite
+ * element objects may be used on
+ * different cells. On faces
+ * between two cells, as well as
+ * vertices, there may therefore
+ * be two sets of degrees of
+ * freedom, one for each of the
+ * finite elements used on the
+ * adjacent cells. In order to
+ * specify which set of degrees
+ * of freedom to work on, the
+ * last argument is used to
+ * disambiguate. Finally, if this
+ * function is called for a cell
+ * object, there can only be a
+ * single set of degrees of
+ * freedom, and fe_index has to
+ * match the result of
+ * active_fe_index().
*/
unsigned int vertex_dof_index (const unsigned int vertex,
- const unsigned int i) const;
+ const unsigned int i,
+ const unsigned int fe_index = DH::default_fe_index) const;
/**
- * Set the index of the @p ith degree
+ * Set the index of the <i>i</i> degree
* on the @p vertexth vertex to @p index.
+ *
+ * The last argument denotes the
+ * finite element index. For the
+ * standard ::DoFHandler class,
+ * this value must be equal to
+ * its default value since that
+ * class only supports the same
+ * finite element on all cells
+ * anyway.
+ *
+ * However, for hp objects
+ * (i.e. the hp::DoFHandler
+ * class), different finite
+ * element objects may be used on
+ * different cells. On faces
+ * between two cells, as well as
+ * vertices, there may therefore
+ * be two sets of degrees of
+ * freedom, one for each of the
+ * finite elements used on the
+ * adjacent cells. In order to
+ * specify which set of degrees
+ * of freedom to work on, the
+ * last argument is used to
+ * disambiguate. Finally, if this
+ * function is called for a cell
+ * object, there can only be a
+ * single set of degrees of
+ * freedom, and fe_index has to
+ * match the result of
+ * active_fe_index().
*/
void set_vertex_dof_index (const unsigned int vertex,
const unsigned int i,
- const unsigned int index) const;
+ const unsigned int index,
+ const unsigned int fe_index = DH::default_fe_index) const;
/**
* Return the indices of the dofs of this
template <>
void DoFObjectAccessor<1,hp::DoFHandler<1> >::set_dof_index (const unsigned int,
+ const unsigned int,
const unsigned int) const;
template <>
void DoFObjectAccessor<1,hp::DoFHandler<2> >::set_dof_index (const unsigned int,
+ const unsigned int,
const unsigned int) const;
template <>
void DoFObjectAccessor<1,hp::DoFHandler<3> >::set_dof_index (const unsigned int,
+ const unsigned int,
const unsigned int) const;
template <>
void DoFObjectAccessor<2,hp::DoFHandler<2> >::set_dof_index (const unsigned int,
+ const unsigned int,
const unsigned int) const;
template <>
void DoFObjectAccessor<2,hp::DoFHandler<3> >::set_dof_index (const unsigned int,
+ const unsigned int,
const unsigned int) const;
template <>
void DoFObjectAccessor<3,hp::DoFHandler<3> >::set_dof_index (const unsigned int,
+ const unsigned int,
const unsigned int) const;
template <class DH>
inline
-DoFAccessor<DH>::DoFAccessor (const DH *dof_handler) :
+DoFAccessor<DH>::DoFAccessor (const DH *dof_handler)
+ :
dof_handler(const_cast<DH*>(dof_handler))
{}
template <>
inline
unsigned int
-DoFObjectAccessor<1,DoFHandler<1> >::dof_index (const unsigned int i) const
+DoFObjectAccessor<1,DoFHandler<1> >::dof_index (const unsigned int i,
+ const unsigned int fe_index) const
{
+ Assert (fe_index == DoFHandler<1>::default_fe_index,
+ ExcMessage ("Only the default FE index is allowed for non-hp DoFHandler objects"));
Assert (static_cast<unsigned int>(this->present_level) < this->dof_handler->levels.size(),
ExcMessage ("DoFHandler not initialized"));
inline
unsigned int
DoFObjectAccessor<1,DoFHandler<1> >::vertex_dof_index (const unsigned int vertex,
- const unsigned int i) const
+ const unsigned int i,
+ const unsigned int fe_index) const
{
+ Assert (fe_index == DoFHandler<1>::default_fe_index,
+ ExcMessage ("Only the default FE index is allowed for non-hp DoFHandler objects"));
Assert (static_cast<unsigned int>(this->present_level) < this->dof_handler->levels.size(),
ExcMessage ("DoFHandler not initialized"));
template <>
inline
unsigned int
-DoFObjectAccessor<1,DoFHandler<2> >::dof_index (const unsigned int i) const
+DoFObjectAccessor<1,DoFHandler<2> >::dof_index (const unsigned int i,
+ const unsigned int fe_index) const
{
+ Assert (fe_index == DoFHandler<2>::default_fe_index,
+ ExcMessage ("Only the default FE index is allowed for non-hp DoFHandler objects"));
Assert (static_cast<unsigned int>(this->present_level) < this->dof_handler->levels.size(),
ExcMessage ("DoFHandler not initialized"));
inline
unsigned int
DoFObjectAccessor<1,DoFHandler<2> >::vertex_dof_index (const unsigned int vertex,
- const unsigned int i) const
+ const unsigned int i,
+ const unsigned int fe_index) const
{
+ Assert (fe_index == DoFHandler<2>::default_fe_index,
+ ExcMessage ("Only the default FE index is allowed for non-hp DoFHandler objects"));
Assert (static_cast<unsigned int>(this->present_level) < this->dof_handler->levels.size(),
ExcMessage ("DoFHandler not initialized"));
template <>
inline
unsigned int
-DoFObjectAccessor<1,DoFHandler<3> >::dof_index (const unsigned int i) const
+DoFObjectAccessor<1,DoFHandler<3> >::dof_index (const unsigned int i,
+ const unsigned int fe_index) const
{
+ Assert (fe_index == DoFHandler<3>::default_fe_index,
+ ExcMessage ("Only the default FE index is allowed for non-hp DoFHandler objects"));
Assert (static_cast<unsigned int>(this->present_level) < this->dof_handler->levels.size(),
ExcMessage ("DoFHandler not initialized"));
inline
unsigned int
DoFObjectAccessor<1,DoFHandler<3> >::vertex_dof_index (const unsigned int vertex,
- const unsigned int i) const
+ const unsigned int i,
+ const unsigned int fe_index) const
{
+ Assert (fe_index == DoFHandler<3>::default_fe_index,
+ ExcMessage ("Only the default FE index is allowed for non-hp DoFHandler objects"));
Assert (static_cast<unsigned int>(this->present_level) < this->dof_handler->levels.size(),
ExcMessage ("DoFHandler not initialized"));
template <>
inline
unsigned int
-DoFObjectAccessor<2,DoFHandler<2> >::dof_index (const unsigned int i) const
+DoFObjectAccessor<2,DoFHandler<2> >::dof_index (const unsigned int i,
+ const unsigned int fe_index) const
{
+ Assert (fe_index == DoFHandler<2>::default_fe_index,
+ ExcMessage ("Only the default FE index is allowed for non-hp DoFHandler objects"));
Assert (this->dof_handler != 0,
DoFAccessor<DoFHandler<2> >::ExcInvalidObject());
// make sure a FE has been selected
inline
unsigned int
DoFObjectAccessor<2,DoFHandler<2> >::vertex_dof_index (const unsigned int vertex,
- const unsigned int i) const
+ const unsigned int i,
+ const unsigned int fe_index) const
{
+ Assert (fe_index == DoFHandler<2>::default_fe_index,
+ ExcMessage ("Only the default FE index is allowed for non-hp DoFHandler objects"));
Assert (this->dof_handler != 0,
DoFAccessor<DoFHandler<2> >::ExcInvalidObject());
Assert (&this->dof_handler->get_fe() != 0,
template <>
inline
unsigned int
-DoFObjectAccessor<2,DoFHandler<3> >::dof_index (const unsigned int i) const
+DoFObjectAccessor<2,DoFHandler<3> >::dof_index (const unsigned int i,
+ const unsigned int fe_index) const
{
+ Assert (fe_index == DoFHandler<3>::default_fe_index,
+ ExcMessage ("Only the default FE index is allowed for non-hp DoFHandler objects"));
Assert (this->dof_handler != 0,
DoFAccessor<DoFHandler<3> >::ExcInvalidObject());
// make sure a FE has been selected
inline
unsigned int
DoFObjectAccessor<2,DoFHandler<3> >::vertex_dof_index (const unsigned int vertex,
- const unsigned int i) const
+ const unsigned int i,
+ const unsigned int fe_index) const
{
+ Assert (fe_index == DoFHandler<3>::default_fe_index,
+ ExcMessage ("Only the default FE index is allowed for non-hp DoFHandler objects"));
Assert (this->dof_handler != 0,
DoFAccessor<DoFHandler<3> >::ExcInvalidObject());
Assert (&this->dof_handler->get_fe() != 0,
template <>
inline
unsigned int
-DoFObjectAccessor<3,DoFHandler<3> >::dof_index (const unsigned int i) const
+DoFObjectAccessor<3,DoFHandler<3> >::dof_index (const unsigned int i,
+ const unsigned int fe_index) const
{
+ Assert (fe_index == DoFHandler<3>::default_fe_index,
+ ExcMessage ("Only the default FE index is allowed for non-hp DoFHandler objects"));
Assert (this->dof_handler != 0,
DoFAccessor<DoFHandler<3> >::ExcInvalidObject());
// make sure a FE has been selected
inline
unsigned int
DoFObjectAccessor<3,DoFHandler<3> >::vertex_dof_index (const unsigned int vertex,
- const unsigned int i) const
+ const unsigned int i,
+ const unsigned int fe_index) const
{
+ Assert (fe_index == DoFHandler<3>::default_fe_index,
+ ExcMessage ("Only the default FE index is allowed for non-hp DoFHandler objects"));
Assert (this->dof_handler != 0,
DoFAccessor<DoFHandler<3> >::ExcInvalidObject());
Assert (&this->dof_handler->get_fe() != 0,
inline
unsigned int
DoFObjectAccessor<1,hp::DoFHandler<1> >::vertex_dof_index (const unsigned int vertex,
- const unsigned int i) const
+ const unsigned int i,
+ const unsigned int fe_index) const
{
+ Assert (fe_index != hp::DoFHandler<1>::default_fe_index,
+ ExcMessage ("You need to specify a FE index when working with hp DoFHandlers"));
Assert (static_cast<unsigned int>(this->present_level) < this->dof_handler->levels.size(),
ExcMessage ("hp::DoFHandler not initialized"));
inline
unsigned int
DoFObjectAccessor<1,hp::DoFHandler<2> >::vertex_dof_index (const unsigned int vertex,
- const unsigned int i) const
+ const unsigned int i,
+ const unsigned int fe_index) const
{
+ Assert (fe_index != hp::DoFHandler<2>::default_fe_index,
+ ExcMessage ("You need to specify a FE index when working with hp DoFHandlers"));
Assert (static_cast<unsigned int>(this->present_level) < this->dof_handler->levels.size(),
ExcMessage ("hp::DoFHandler not initialized"));
inline
unsigned int
DoFObjectAccessor<1,hp::DoFHandler<3> >::vertex_dof_index (const unsigned int vertex,
- const unsigned int i) const
+ const unsigned int i,
+ const unsigned int fe_index) const
{
+ Assert (fe_index != hp::DoFHandler<3>::default_fe_index,
+ ExcMessage ("You need to specify a FE index when working with hp DoFHandlers"));
Assert (static_cast<unsigned int>(this->present_level) < this->dof_handler->levels.size(),
ExcMessage ("hp::DoFHandler not initialized"));
inline
unsigned int
DoFObjectAccessor<2,hp::DoFHandler<2> >::vertex_dof_index (const unsigned int vertex,
- const unsigned int i) const
+ const unsigned int i,
+ const unsigned int fe_index) const
{
+ Assert (fe_index != hp::DoFHandler<2>::default_fe_index,
+ ExcMessage ("You need to specify a FE index when working with hp DoFHandlers"));
Assert (this->dof_handler != 0,
DoFAccessor<hp::DoFHandler<2> >::ExcInvalidObject());
Assert (&this->dof_handler->get_fe() != 0,
inline
unsigned int
DoFObjectAccessor<2,hp::DoFHandler<3> >::vertex_dof_index (const unsigned int vertex,
- const unsigned int i) const
+ const unsigned int i,
+ const unsigned int fe_index) const
{
+ Assert (fe_index != hp::DoFHandler<3>::default_fe_index,
+ ExcMessage ("You need to specify a FE index when working with hp DoFHandlers"));
Assert (this->dof_handler != 0,
DoFAccessor<hp::DoFHandler<3> >::ExcInvalidObject());
Assert (&this->dof_handler->get_fe() != 0,
inline
unsigned int
DoFObjectAccessor<3,hp::DoFHandler<3> >::vertex_dof_index (const unsigned int vertex,
- const unsigned int i) const
+ const unsigned int i,
+ const unsigned int fe_index) const
{
+ Assert (fe_index != hp::DoFHandler<3>::default_fe_index,
+ ExcMessage ("You need to specify a FE index when working with hp DoFHandlers"));
Assert (this->dof_handler != 0,
DoFAccessor<hp::DoFHandler<3> >::ExcInvalidObject());
Assert (&this->dof_handler->get_fe() != 0,
template <>
inline
unsigned int
-DoFObjectAccessor<1,hp::DoFHandler<1> >::dof_index (const unsigned int i) const
+DoFObjectAccessor<1,hp::DoFHandler<1> >::dof_index (const unsigned int i,
+ const unsigned int fe_index) const
{
+ Assert (fe_index != hp::DoFHandler<1>::default_fe_index,
+ ExcMessage ("You need to specify a FE index when working with hp DoFHandlers"));
+
// since the exception classes are
// from a template dependent base
// class, we have to fully qualify
template <>
inline
unsigned int
-DoFObjectAccessor<1,hp::DoFHandler<2> >::dof_index (const unsigned int i) const
+DoFObjectAccessor<1,hp::DoFHandler<2> >::dof_index (const unsigned int i,
+ const unsigned int fe_index) const
{
+ Assert (fe_index != hp::DoFHandler<2>::default_fe_index,
+ ExcMessage ("You need to specify a FE index when working with hp DoFHandlers"));
// since the exception classes are
// from a template dependent base
// class, we have to fully qualify
template <>
inline
unsigned int
-DoFObjectAccessor<1,hp::DoFHandler<3> >::dof_index (const unsigned int i) const
+DoFObjectAccessor<1,hp::DoFHandler<3> >::dof_index (const unsigned int i,
+ const unsigned int fe_index) const
{
+ Assert (fe_index != hp::DoFHandler<3>::default_fe_index,
+ ExcMessage ("You need to specify a FE index when working with hp DoFHandlers"));
// since the exception classes are
// from a template dependent base
// class, we have to fully qualify
inline
void
DoFObjectAccessor<1,hp::DoFHandler<1> >::set_dof_index (const unsigned int i,
- const unsigned int index) const
+ const unsigned int index,
+ const unsigned int fe_index) const
{
+ Assert (fe_index != hp::DoFHandler<1>::default_fe_index,
+ ExcMessage ("You need to specify a FE index when working with hp DoFHandlers"));
typedef DoFAccessor<hp::DoFHandler<1> > BaseClass;
Assert (this->dof_handler != 0,
inline
void
DoFObjectAccessor<1, hp::DoFHandler<2> >::set_dof_index (const unsigned int i,
- const unsigned int index) const
+ const unsigned int index,
+ const unsigned int fe_index) const
{
+ Assert (fe_index != hp::DoFHandler<2>::default_fe_index,
+ ExcMessage ("You need to specify a FE index when working with hp DoFHandlers"));
typedef DoFAccessor<hp::DoFHandler<2> > BaseClass;
Assert (this->dof_handler != 0,
inline
void
DoFObjectAccessor<1, hp::DoFHandler<3> >::set_dof_index (const unsigned int i,
- const unsigned int index) const
+ const unsigned int index,
+ const unsigned int fe_index) const
{
+ Assert (fe_index != hp::DoFHandler<3>::default_fe_index,
+ ExcMessage ("You need to specify a FE index when working with hp DoFHandlers"));
typedef DoFAccessor<hp::DoFHandler<3> > BaseClass;
Assert (this->dof_handler != 0,
template <>
inline
-unsigned int DoFObjectAccessor<2,hp::DoFHandler<2> >::dof_index (const unsigned int i) const
+unsigned int DoFObjectAccessor<2,hp::DoFHandler<2> >::dof_index (const unsigned int i,
+ const unsigned int fe_index) const
{
+ Assert (fe_index != hp::DoFHandler<2>::default_fe_index,
+ ExcMessage ("You need to specify a FE index when working with hp DoFHandlers"));
typedef DoFAccessor<hp::DoFHandler<2> > BaseClass;
Assert (this->dof_handler != 0,
template <>
inline
-unsigned int DoFObjectAccessor<2,hp::DoFHandler<3> >::dof_index (const unsigned int i) const
+unsigned int DoFObjectAccessor<2,hp::DoFHandler<3> >::dof_index (const unsigned int i,
+ const unsigned int fe_index) const
{
+ Assert (fe_index != hp::DoFHandler<3>::default_fe_index,
+ ExcMessage ("You need to specify a FE index when working with hp DoFHandlers"));
typedef DoFAccessor<hp::DoFHandler<3> > BaseClass;
Assert (this->dof_handler != 0,
inline
void
DoFObjectAccessor<2, hp::DoFHandler<2> >::set_dof_index (const unsigned int i,
- const unsigned int index) const
+ const unsigned int index,
+ const unsigned int fe_index) const
{
+ Assert (fe_index != hp::DoFHandler<2>::default_fe_index,
+ ExcMessage ("You need to specify a FE index when working with hp DoFHandlers"));
typedef DoFAccessor<hp::DoFHandler<2> > BaseClass;
Assert (this->dof_handler != 0,
inline
void
DoFObjectAccessor<2, hp::DoFHandler<3> >::set_dof_index (const unsigned int i,
- const unsigned int index) const
+ const unsigned int index,
+ const unsigned int fe_index) const
{
+ Assert (fe_index != hp::DoFHandler<3>::default_fe_index,
+ ExcMessage ("You need to specify a FE index when working with hp DoFHandlers"));
typedef DoFAccessor<hp::DoFHandler<3> > BaseClass;
Assert (this->dof_handler != 0,
template <>
inline
unsigned int
-DoFObjectAccessor<3,hp::DoFHandler<3> >::dof_index (const unsigned int i) const
+DoFObjectAccessor<3,hp::DoFHandler<3> >::dof_index (const unsigned int i,
+ const unsigned int fe_index) const
{
+ Assert (fe_index != hp::DoFHandler<3>::default_fe_index,
+ ExcMessage ("You need to specify a FE index when working with hp DoFHandlers"));
typedef DoFAccessor<hp::DoFHandler<3> > BaseClass;
Assert (this->dof_handler != 0,
inline
void
DoFObjectAccessor<3, hp::DoFHandler<3> >::set_dof_index (const unsigned int i,
- const unsigned int index) const
+ const unsigned int index,
+ const unsigned int fe_index) const
{
+ Assert (fe_index != hp::DoFHandler<3>::default_fe_index,
+ ExcMessage ("You need to specify a FE index when working with hp DoFHandlers"));
typedef DoFAccessor<hp::DoFHandler<3> > BaseClass;
Assert (this->dof_handler != 0,
template <class DH>
void DoFObjectAccessor<1, DH>::set_dof_index (const unsigned int i,
- const unsigned int index) const
+ const unsigned int index,
+ const unsigned int fe_index) const
{
+ Assert (fe_index == DoFHandler<1>::default_fe_index,
+ ExcMessage ("Only the default FE index is allowed for non-hp DoFHandler objects"));
typedef DoFAccessor<DH> BaseClass;
Assert (this->dof_handler != 0,
template <class DH>
void DoFObjectAccessor<1, DH>::set_vertex_dof_index (const unsigned int vertex,
const unsigned int i,
- const unsigned int index) const
+ const unsigned int index,
+ const unsigned int fe_index) const
{
+ Assert (fe_index == DoFHandler<1>::default_fe_index,
+ ExcMessage ("Only the default FE index is allowed for non-hp DoFHandler objects"));
// since the exception classes are
// from a template dependent base
// class, we have to fully qualify
template <class DH>
void DoFObjectAccessor<2, DH>::set_dof_index (const unsigned int i,
- const unsigned int index) const
+ const unsigned int index,
+ const unsigned int fe_index) const
{
+ Assert (fe_index == DoFHandler<1>::default_fe_index,
+ ExcMessage ("Only the default FE index is allowed for non-hp DoFHandler objects"));
typedef DoFAccessor<DH> BaseClass;
Assert (this->dof_handler != 0,
void
DoFObjectAccessor<2, DH>::set_vertex_dof_index (const unsigned int vertex,
const unsigned int i,
- const unsigned int index) const
+ const unsigned int index,
+ const unsigned int fe_index) const
{
+ Assert (fe_index == DoFHandler<1>::default_fe_index,
+ ExcMessage ("Only the default FE index is allowed for non-hp DoFHandler objects"));
typedef DoFAccessor<DH> BaseClass;
Assert (this->dof_handler != 0,
template <class DH>
void DoFObjectAccessor<3, DH>::set_dof_index (const unsigned int i,
- const unsigned int index) const
+ const unsigned int index,
+ const unsigned int fe_index) const
{
+ Assert (fe_index == DoFHandler<1>::default_fe_index,
+ ExcMessage ("Only the default FE index is allowed for non-hp DoFHandler objects"));
typedef DoFAccessor<DH> BaseClass;
Assert (this->dof_handler != 0,
template <class DH>
void DoFObjectAccessor<3, DH>::set_vertex_dof_index (const unsigned int vertex,
const unsigned int i,
- const unsigned int index) const
+ const unsigned int index,
+ const unsigned int fe_index) const
{
+ Assert (fe_index == DoFHandler<1>::default_fe_index,
+ ExcMessage ("Only the default FE index is allowed for non-hp DoFHandler objects"));
typedef DoFAccessor<DH> BaseClass;
Assert (this->dof_handler != 0,
template <>
void DoFObjectAccessor<1, hp::DoFHandler<1> >::set_vertex_dof_index (const unsigned int /*vertex*/,
const unsigned int /*i*/,
- const unsigned int /*index*/) const
+ const unsigned int /*index*/,
+ const unsigned int fe_index) const
{
+ Assert (fe_index != hp::DoFHandler<1>::default_fe_index,
+ ExcMessage ("You need to specify a FE index when working with hp DoFHandlers"));
Assert (false, ExcInternalError());
}
template <>
void DoFObjectAccessor<1, hp::DoFHandler<2> >::set_vertex_dof_index (const unsigned int /*vertex*/,
const unsigned int /*i*/,
- const unsigned int /*index*/) const
+ const unsigned int /*index*/,
+ const unsigned int fe_index) const
{
+ Assert (fe_index != hp::DoFHandler<2>::default_fe_index,
+ ExcMessage ("You need to specify a FE index when working with hp DoFHandlers"));
Assert (false, ExcInternalError());
}
template <>
void DoFObjectAccessor<1, hp::DoFHandler<3> >::set_vertex_dof_index (const unsigned int /*vertex*/,
const unsigned int /*i*/,
- const unsigned int /*index*/) const
+ const unsigned int /*index*/,
+ const unsigned int fe_index) const
{
+ Assert (fe_index != hp::DoFHandler<3>::default_fe_index,
+ ExcMessage ("You need to specify a FE index when working with hp DoFHandlers"));
Assert (false, ExcInternalError());
}
template <>
void DoFObjectAccessor<2, hp::DoFHandler<2> >::set_vertex_dof_index (const unsigned int /*vertex*/,
const unsigned int /*i*/,
- const unsigned int /*index*/) const
+ const unsigned int /*index*/,
+ const unsigned int fe_index) const
{
+ Assert (fe_index != hp::DoFHandler<2>::default_fe_index,
+ ExcMessage ("You need to specify a FE index when working with hp DoFHandlers"));
Assert (false, ExcInternalError());
}
template <>
void DoFObjectAccessor<2, hp::DoFHandler<3> >::set_vertex_dof_index (const unsigned int /*vertex*/,
const unsigned int /*i*/,
- const unsigned int /*index*/) const
+ const unsigned int /*index*/,
+ const unsigned int fe_index) const
{
+ Assert (fe_index != hp::DoFHandler<3>::default_fe_index,
+ ExcMessage ("You need to specify a FE index when working with hp DoFHandlers"));
Assert (false, ExcInternalError());
}
template <>
void DoFObjectAccessor<3, hp::DoFHandler<3> >::set_vertex_dof_index (const unsigned int /*vertex*/,
const unsigned int /*i*/,
- const unsigned int /*index*/) const
+ const unsigned int /*index*/,
+ const unsigned int fe_index) const
{
+ Assert (fe_index != hp::DoFHandler<3>::default_fe_index,
+ ExcMessage ("You need to specify a FE index when working with hp DoFHandlers"));
Assert (false, ExcInternalError());
}