]> https://gitweb.dealii.org/ - dealii-svn.git/commitdiff
Disallow calling DoFAccessor::set_active_fe_index on non-active cells.
authorbangerth <bangerth@0785d39b-7218-0410-832d-ea1e28bc413d>
Fri, 24 Jan 2014 15:33:23 +0000 (15:33 +0000)
committerbangerth <bangerth@0785d39b-7218-0410-832d-ea1e28bc413d>
Fri, 24 Jan 2014 15:33:23 +0000 (15:33 +0000)
git-svn-id: https://svn.dealii.org/trunk@32297 0785d39b-7218-0410-832d-ea1e28bc413d

deal.II/doc/news/changes.h
deal.II/include/deal.II/dofs/dof_accessor.h
deal.II/include/deal.II/dofs/dof_accessor.templates.h

index b7c9966883c1fb48e2bee17f3ef82a98ea4a337e..4a94777bb01c0f9d09f7228a13f44a80787e2125 100644 (file)
@@ -84,6 +84,19 @@ inconvenience this causes.
 <h3>Specific improvements</h3>
 
 <ol>
+  <li> Changed: It was possible to call DoFAccessor::set_active_fe_index()
+  on non-active cells. However, this made no sense: Since degrees of
+  freedoms only exist on active cells
+  for hp::DoFHandler (i.e., there is currently no implementation
+  of multilevel hp::DoFHandler objects), it does not make sense
+  to assign active FE indices to non-active cells since they
+  do not have finite element spaces associated with them without
+  having any degrees of freedom. Consequently, this function will
+  now produce an exception when called on non-active cells.
+  <br>
+  (Wolfgang Bangerth, 2014/01/24)
+  </li>
+
   <li> Fixed: SparsityPattern::max_entries_per_row() forgot to consider
   the last row of the matrix and consequently sometimes returned
   wrong values. This is now fixed.
index 12c1313156add6146619990bec2ea1982aacc626..d5c9cc46eef82bdd63fa74b6805c0ad5da16bb32 100644 (file)
@@ -1,7 +1,7 @@
 // ---------------------------------------------------------------------
 // $Id$
 //
-// Copyright (C) 1998 - 2013 by the deal.II authors
+// Copyright (C) 1998 - 2014 by the deal.II authors
 //
 // This file is part of the deal.II library.
 //
@@ -1665,13 +1665,26 @@ public:
   get_fe () const;
 
   /**
-   *  Returns the index inside the hp::FECollection of the
-   *  FiniteElement used for this cell.
+   * Returns the index inside the hp::FECollection of the
+   * FiniteElement used for this cell. This function is
+   * only useful if the DoF handler object associated with
+   * the current cell is an hp::DoFHandler.
    */
   unsigned int active_fe_index () const;
 
   /**
-   *  Sets the index of the FiniteElement used for this cell.
+   * Sets the index of the FiniteElement used for this cell. This
+   * determines which element in an hp::FECollection to use. This function is
+   * only useful if the DoF handler object associated with
+   * the current cell is an hp::DoFHandler.
+   *
+   * @note Since degrees of freedoms only exist on active cells
+   * for hp::DoFHandler (i.e., there is currently no implementation
+   * of multilevel hp::DoFHandler objects), it does not make sense
+   * to assign active FE indices to non-active cells since they
+   * do not have finite element spaces associated with them without
+   * having any degrees of freedom. Consequently, this function will
+   * produce an exception when called on non-active cells.
    */
   void set_active_fe_index (const unsigned int i);
   /**
index 2c9af2dcc0cb9dcc6f50e57637b2f2e7af202330..d5a4ea658421762f15ff9720d1c8596afef26594 100644 (file)
@@ -3459,6 +3459,10 @@ inline
 void
 DoFCellAccessor<DH,lda>::set_active_fe_index (const unsigned int i)
 {
+  Assert (this->has_children() == false,
+          ExcMessage ("You can not set the active_fe_index on a cell that has "
+                      "children because no degrees of freedom will be assigned "
+                      "to this cell."));
   dealii::internal::DoFCellAccessor::Implementation::set_active_fe_index (*this, i);
 }
 

In the beginning the Universe was created. This has made a lot of people very angry and has been widely regarded as a bad move.

Douglas Adams


Typeset in Trocchi and Trocchi Bold Sans Serif.