]> https://gitweb.dealii.org/ - dealii-svn.git/commitdiff
New TriaObjectAccessor<1,dim>::lines() and TriaObjectAccessor<2,dim>::quads() functio...
authorhartmann <hartmann@0785d39b-7218-0410-832d-ea1e28bc413d>
Thu, 15 Jun 2006 11:42:45 +0000 (11:42 +0000)
committerhartmann <hartmann@0785d39b-7218-0410-832d-ea1e28bc413d>
Thu, 15 Jun 2006 11:42:45 +0000 (11:42 +0000)
git-svn-id: https://svn.dealii.org/trunk@13260 0785d39b-7218-0410-832d-ea1e28bc413d

deal.II/deal.II/include/grid/tria_accessor.h
deal.II/deal.II/include/grid/tria_accessor.templates.h
deal.II/deal.II/source/grid/tria_accessor.cc

index 9d4ac9c9adf4b01cfb8fc02eb976315d5d3eda02..8126d60535879c5da6e8360321c4fe823b9492eb 100644 (file)
@@ -32,6 +32,7 @@ namespace internal
     class Line;
     class Quad;
     class Hexahedron;
+    template <typename G> class TriaObjects;
   }
 }
 template <int celldim, int dim> class TriaObjectAccessor;
@@ -1310,7 +1311,6 @@ class TriaObjectAccessor<1, dim> :  public TriaAccessor<dim>
                                      */
     void operator = (const TriaObjectAccessor<1, dim> &);
 
-
   protected:
     
                                     /**@name Advancement of iterators*/
@@ -1343,6 +1343,21 @@ class TriaObjectAccessor<1, dim> :  public TriaAccessor<dim>
                                      *  previous level is accessed.
                                      */
     void operator -- ();
+
+                                    /**
+                                     * Access to the lines of a
+                                     * Triangulation. This function
+                                     * is specialized for dim==1
+                                     * because lines are stored in
+                                     * TriaLevel<1> for dim==1 but in
+                                     * TriaFace<dim> for dim!=1. All
+                                     * accessor functions using this
+                                     * function can be implemented
+                                     * for all dim without
+                                     * specialization.
+                                     */
+    internal::Triangulation::TriaObjects<internal::Triangulation::Line> & lines() const;
+
                                     /*@}*/
 
                                     /**
@@ -1864,6 +1879,20 @@ class TriaObjectAccessor<2, dim> :  public TriaAccessor<dim>
                                      *  previous level is accessed.
                                      */
     void operator -- ();
+
+                                    /**
+                                     * Access to the quads of a
+                                     * Triangulation. This function
+                                     * is specialized for dim==2 and
+                                     * dim==3 because quads are
+                                     * stored in TriaLevel<2> for
+                                     * dim==2 but in TriaFace<3> for
+                                     * dim==3. All accessor functions
+                                     * using this function can be
+                                     * implemented for all dimensions
+                                     * without specialization.
+                                     */
+    internal::Triangulation::TriaObjects<internal::Triangulation::Quad> & quads() const;
                                     /*@}*/
 
                                     /**
@@ -2817,16 +2846,8 @@ class CellAccessor :  public TriaObjectAccessor<dim,dim>
 template <> Point<2> TriaObjectAccessor<2, 2>::barycenter () const;
 template <> Point<3> TriaObjectAccessor<2, 3>::barycenter () const;
 template <> Point<3> TriaObjectAccessor<3, 3>::barycenter () const;
-template <> void TriaObjectAccessor<1, 1>::set (const internal::Triangulation::Line &line) const;
-template <> int TriaObjectAccessor<1, 1>::vertex_index (const unsigned int i) const;
-template <> void TriaObjectAccessor<1, 1>::set_used_flag () const;
-template <> void TriaObjectAccessor<1, 1>::clear_used_flag () const;
-template <> void TriaObjectAccessor<1, 1>::set_user_pointer (void *p) const;
-template <> void TriaObjectAccessor<1, 1>::clear_user_pointer () const;
-template <> void * TriaObjectAccessor<1, 1>::user_pointer () const;
-template <> void TriaObjectAccessor<1, 1>::set_children (const int index) const;
-template <> unsigned char TriaObjectAccessor<1, 1>::boundary_indicator () const;
-template <> void TriaObjectAccessor<1, 1>::set_boundary_indicator (const unsigned char) const;
+template <> internal::Triangulation::TriaObjects<internal::Triangulation::Line> &TriaObjectAccessor<1, 1>::lines() const;
+template <> internal::Triangulation::TriaObjects<internal::Triangulation::Quad> &TriaObjectAccessor<2, 2>::quads() const;
 template <> bool CellAccessor<1>::at_boundary () const;
 template <> unsigned char CellAccessor<1>::material_id () const;
 template <> void CellAccessor<1>::set_material_id (const unsigned char mat_id) const;
index 34a0137ccbf4eb0ac0cb77449118f082f1eaa1a4..6d11f0602c87f5587238cbd420c97900e1565ec4 100644 (file)
@@ -138,28 +138,24 @@ TriaObjectAccessor (const Triangulation<dim> *parent,
 {}
 
 
-
-template <int dim>
+// first implement the lines functions as they are used by many
+// subsequent accessor functions
+template <>
 inline
-bool
-TriaObjectAccessor<1,dim>::used () const
+internal::Triangulation::TriaObjects<internal::Triangulation::Line> &
+TriaObjectAccessor<1,1>::lines() const
 {
-  Assert (this->state() == IteratorState::valid,
-         typename TriaAccessor<dim>::ExcDereferenceInvalidObject());
-  return this->tria->faces->lines.used[this->present_index];
+  return this->tria->levels[this->present_level]->lines;
 }
 
 
 
-template <>
+template <int dim>
 inline
-bool
-TriaObjectAccessor<1,1>::used () const
+internal::Triangulation::TriaObjects<internal::Triangulation::Line> &
+TriaObjectAccessor<1,dim>::lines() const
 {
-  const int dim=1;
-  Assert (this->state() == IteratorState::valid,
-         TriaAccessor<dim>::ExcDereferenceInvalidObject());
-  return this->tria->levels[this->present_level]->lines.used[this->present_index];
+  return this->tria->faces->lines;
 }
 
 
@@ -167,22 +163,22 @@ TriaObjectAccessor<1,1>::used () const
 template <int dim>
 inline
 bool
-TriaObjectAccessor<1,dim>::user_flag_set () const
+TriaObjectAccessor<1,dim>::used () const
 {
-  Assert (this->used(), typename TriaAccessor<dim>::ExcCellNotUsed());
-  return this->tria->faces->lines.user_flags[this->present_index];
+  Assert (this->state() == IteratorState::valid,
+         typename TriaAccessor<dim>::ExcDereferenceInvalidObject());
+  return lines().used[this->present_index];
 }
 
 
 
-template <>
+template <int dim>
 inline
 bool
-TriaObjectAccessor<1,1>::user_flag_set () const
+TriaObjectAccessor<1,dim>::user_flag_set () const
 {
-  const int dim=1;
-  Assert (this->used(), TriaAccessor<dim>::ExcCellNotUsed());
-  return this->tria->levels[this->present_level]->lines.user_flags[this->present_index];
+  Assert (this->used(), typename TriaAccessor<dim>::ExcCellNotUsed());
+  return lines().user_flags[this->present_index];
 }
 
 
@@ -193,19 +189,7 @@ void
 TriaObjectAccessor<1,dim>::set_user_flag () const 
 {
   Assert (this->used(), typename TriaAccessor<dim>::ExcCellNotUsed());
-  this->tria->faces->lines.user_flags[this->present_index] = true;
-}
-
-
-
-template <>
-inline
-void
-TriaObjectAccessor<1,1>::set_user_flag () const 
-{
-  const int dim=1;
-  Assert (this->used(), TriaAccessor<dim>::ExcCellNotUsed());
-  this->tria->levels[this->present_level]->lines.user_flags[this->present_index] = true;
+  lines().user_flags[this->present_index] = true;
 }
 
 
@@ -216,19 +200,7 @@ void
 TriaObjectAccessor<1,dim>::clear_user_flag () const
 {
   Assert (this->used(), typename TriaAccessor<dim>::ExcCellNotUsed());
-  this->tria->faces->lines.user_flags[this->present_index] = false;
-}
-
-
-
-template <>
-inline
-void
-TriaObjectAccessor<1,1>::clear_user_flag () const
-{
-  const int dim=1;
-  Assert (this->used(), TriaAccessor<dim>::ExcCellNotUsed());
-  this->tria->levels[this->present_level]->lines.user_flags[this->present_index] = false;
+  lines().user_flags[this->present_index] = false;
 }
 
 
@@ -240,20 +212,7 @@ TriaObjectAccessor<1,dim>::has_children () const
 {
   Assert (this->state() == IteratorState::valid,
          typename TriaAccessor<dim>::ExcDereferenceInvalidObject());
-  return (this->tria->faces->lines.children[this->present_index] != -1);
-}
-
-
-
-template <>
-inline
-bool
-TriaObjectAccessor<1,1>::has_children () const
-{
-  const int dim=1;
-  Assert (this->state() == IteratorState::valid,
-         TriaAccessor<dim>::ExcDereferenceInvalidObject());
-  return (this->tria->levels[this->present_level]->lines.children[this->present_index] != -1);
+  return (lines().children[this->present_index] != -1);
 }
 
 
@@ -265,20 +224,7 @@ TriaObjectAccessor<1,dim>::child_index (unsigned const int i) const
 {
   Assert (i<2, ExcIndexRange(i,0,2));
   Assert (has_children(), typename TriaAccessor<dim>::ExcCellHasNoChildren());
-  return this->tria->faces->lines.children[this->present_index]+i;
-}
-
-
-
-template <>
-inline
-int
-TriaObjectAccessor<1,1>::child_index (unsigned const int i) const
-{
-  const int dim=1;
-  Assert (i<2, ExcIndexRange(i,0,2));
-  Assert (has_children(), TriaAccessor<dim>::ExcCellHasNoChildren());
-  return this->tria->levels[this->present_level]->lines.children[this->present_index]+i;
+  return lines().children[this->present_index]+i;
 }
 
 
@@ -441,27 +387,24 @@ TriaObjectAccessor (const Triangulation<dim> *parent,
 
 
 
-template <int dim>
+// first implement the quads functions as they are used by many
+// subsequent accessor functions
+template <>
 inline
-bool
-TriaObjectAccessor<2,dim>::used () const
+internal::Triangulation::TriaObjects<internal::Triangulation::Quad> &
+TriaObjectAccessor<2,2>::quads() const
 {
-  Assert (this->state() == IteratorState::valid,
-         typename TriaAccessor<dim>::ExcDereferenceInvalidObject());
-    return this->tria->faces->quads.used[this->present_index];
+  return this->tria->levels[this->present_level]->quads;
 }
 
 
 
-template <>
+template <int dim>
 inline
-bool
-TriaObjectAccessor<2,2>::used () const
+internal::Triangulation::TriaObjects<internal::Triangulation::Quad> &
+TriaObjectAccessor<2,dim>::quads() const
 {
-  const int dim=2;
-  Assert (this->state() == IteratorState::valid,
-         TriaAccessor<dim>::ExcDereferenceInvalidObject());
-  return this->tria->levels[this->present_level]->quads.used[this->present_index];
+  return this->tria->faces->quads;
 }
 
 
@@ -469,22 +412,22 @@ TriaObjectAccessor<2,2>::used () const
 template <int dim>
 inline
 bool
-TriaObjectAccessor<2,dim>::user_flag_set () const
+TriaObjectAccessor<2,dim>::used () const
 {
-  Assert (this->used(), typename TriaAccessor<dim>::ExcCellNotUsed());
-  return this->tria->faces->quads.user_flags[this->present_index];
+  Assert (this->state() == IteratorState::valid,
+         typename TriaAccessor<dim>::ExcDereferenceInvalidObject());
+  return quads().used[this->present_index];
 }
 
 
 
-template <>
+template <int dim>
 inline
 bool
-TriaObjectAccessor<2,2>::user_flag_set () const
+TriaObjectAccessor<2,dim>::user_flag_set () const
 {
-  const int dim=2;
-  Assert (this->used(), TriaAccessor<dim>::ExcCellNotUsed());
-  return this->tria->levels[this->present_level]->quads.user_flags[this->present_index];
+  Assert (this->used(), typename TriaAccessor<dim>::ExcCellNotUsed());
+  return quads().user_flags[this->present_index];
 }
 
 
@@ -495,19 +438,7 @@ void
 TriaObjectAccessor<2,dim>::set_user_flag () const
 {
   Assert (this->used(), typename TriaAccessor<dim>::ExcCellNotUsed());
-  this->tria->faces->quads.user_flags[this->present_index] = true;
-}
-
-
-
-template <>
-inline
-void
-TriaObjectAccessor<2,2>::set_user_flag () const
-{
-  const int dim=2;
-  Assert (this->used(), TriaAccessor<dim>::ExcCellNotUsed());
-  this->tria->levels[this->present_level]->quads.user_flags[this->present_index] = true;
+  quads().user_flags[this->present_index] = true;
 }
 
 
@@ -518,19 +449,7 @@ void
 TriaObjectAccessor<2,dim>::clear_user_flag () const
 {
   Assert (this->used(), typename TriaAccessor<dim>::ExcCellNotUsed());
-  this->tria->faces->quads.user_flags[this->present_index] = false;
-}
-
-
-
-template <>
-inline
-void
-TriaObjectAccessor<2,2>::clear_user_flag () const
-{
-  const int dim=2;
-  Assert (this->used(), TriaAccessor<dim>::ExcCellNotUsed());
-  this->tria->levels[this->present_level]->quads.user_flags[this->present_index] = false;
+  quads().user_flags[this->present_index] = false;
 }
 
 
@@ -557,17 +476,9 @@ unsigned int
 TriaObjectAccessor<2,dim>::line_index (const unsigned int i) const
 {
   Assert (i<4, ExcIndexRange(i,0,4));
-  return this->tria->faces->quads.cells[this->present_index].line(i);
+  return quads().cells[this->present_index].line(i);
 }
 
-template <>
-inline
-unsigned int
-TriaObjectAccessor<2,2>::line_index (const unsigned int i) const
-{
-Assert (i<4, ExcIndexRange(i,0,4));
-  return this->tria->levels[this->present_level]->quads.cells[this->present_index].line(i);
-}
 
 
 template <int dim>
@@ -577,20 +488,7 @@ TriaObjectAccessor<2,dim>::has_children () const
 {
   Assert (this->state() == IteratorState::valid,
          typename TriaAccessor<dim>::ExcDereferenceInvalidObject());
-  return (this->tria->faces->quads.children[this->present_index] != -1);
-}
-
-
-
-template <>
-inline
-bool
-TriaObjectAccessor<2,2>::has_children () const
-{
-  const int dim=2;
-  Assert (this->state() == IteratorState::valid,
-         TriaAccessor<dim>::ExcDereferenceInvalidObject());
-  return (this->tria->levels[this->present_level]->quads.children[this->present_index] != -1);
+  return (quads().children[this->present_index] != -1);
 }
 
 
@@ -601,19 +499,7 @@ int TriaObjectAccessor<2,dim>::child_index (const unsigned int i) const
 {
   Assert (i<4, ExcIndexRange(i,0,4));
   Assert (has_children(), typename TriaAccessor<dim>::ExcCellHasNoChildren());
-  return this->tria->faces->quads.children[this->present_index]+i;
-}
-
-
-
-template <>
-inline
-int TriaObjectAccessor<2,2>::child_index (const unsigned int i) const
-{
-  const int dim=2;
-  Assert (i<4, ExcIndexRange(i,0,4));
-  Assert (has_children(), TriaAccessor<dim>::ExcCellHasNoChildren());
-  return this->tria->levels[this->present_level]->quads.children[this->present_index]+i;
+  return quads().children[this->present_index]+i;
 }
 
 
@@ -690,7 +576,7 @@ TriaObjectAccessor<2,dim>::operator ++ ()
                                   // the vector?
   if (this->present_index
       >=
-      static_cast<int>(this->tria->faces->quads.cells.size()))
+      static_cast<int>(quads().cells.size()))
     this->present_level = this->present_index = -1;
 }
 
@@ -706,7 +592,7 @@ TriaObjectAccessor<2,2>::operator ++ ()
                                   // the vector?
   while (this->present_index
         >=
-        static_cast<int>(this->tria->levels[this->present_level]->quads.cells.size()))
+        static_cast<int>(quads().cells.size()))
     {
                                       // no -> go one level up
       ++this->present_level;
@@ -756,7 +642,7 @@ TriaObjectAccessor<2,2>::operator -- ()
          return;
        }
                                       // else
-      this->present_index = this->tria->levels[this->present_level]->quads.cells.size()-1;
+      this->present_index = quads().cells.size()-1;
     }
 }
 
index f6c21edf52942b018ab243ff98843c88423c7e21..e63c3cfcc87bedad1232d48f971e748dbc75db27 100644 (file)
@@ -32,37 +32,19 @@ template <int dim>
 void
 TriaObjectAccessor<1, dim>::set (const internal::Triangulation::Line &line) const
 {
-  this->tria->faces->lines.cells[this->present_index] = line;
+  lines().cells[this->present_index] = line;
 }
 
 
-#if deal_II_dimension == 1
-
-template <>
-void
-TriaObjectAccessor<1, 1>::set (const internal::Triangulation::Line &line) const
-{
-  this->tria->levels[this->present_level]
-    ->lines.cells[this->present_index] = line;
-}
-
-template <>
-int TriaObjectAccessor<1, 1>::vertex_index (const unsigned int i) const
-{
-  Assert (i<2, ExcIndexRange(i,0,2));
-  return this->tria->levels[this->present_level]->lines.cells[this->present_index].vertex (i);
-}
-
-#else
 
 template <int dim>
 int TriaObjectAccessor<1, dim>::vertex_index (const unsigned int i) const
 {
   Assert (i<2, ExcIndexRange(i,0,2));
-  return this->tria->faces->lines.cells[this->present_index].vertex (i);
+  return lines().cells[this->present_index].vertex (i);
 }
 
-#endif
+
 
 template <int dim>
 Point<dim> &
@@ -78,43 +60,20 @@ void TriaObjectAccessor<1, dim>::set_used_flag () const
 {
   Assert (this->state() == IteratorState::valid,
          typename TriaAccessor<dim>::ExcDereferenceInvalidObject());
-  this->tria->faces->lines.used[this->present_index] = true;
+  lines().used[this->present_index] = true;
 }
 
 
-#if deal_II_dimension == 1
-
-template <>
-void TriaObjectAccessor<1, 1>::set_used_flag () const
-{ const int dim =1;
-  Assert (this->state() == IteratorState::valid,
-         TriaAccessor<dim>::ExcDereferenceInvalidObject());
-  this->tria->levels[this->present_level]->lines.used[this->present_index] = true;
-}
-
-#endif
 
 template <int dim>
 void TriaObjectAccessor<1, dim>::clear_used_flag () const
 {
   Assert (this->state() == IteratorState::valid,
          typename TriaAccessor<dim>::ExcDereferenceInvalidObject());
-  this->tria->faces->lines.used[this->present_index] = false;
+  lines().used[this->present_index] = false;
 }
 
 
-#if deal_II_dimension == 1
-
-template <>
-void TriaObjectAccessor<1, 1>::clear_used_flag () const
-{
-  const int dim=1;
-  Assert (this->state() == IteratorState::valid,
-         TriaAccessor<dim>::ExcDereferenceInvalidObject());
-  this->tria->levels[this->present_level]->lines.used[this->present_index] = false;
-}
-
-#endif
 
 template <int dim>
 void TriaObjectAccessor<1, dim>::recursively_set_user_flag () const
@@ -144,63 +103,28 @@ template <int dim>
 void TriaObjectAccessor<1, dim>::set_user_pointer (void *p) const
 {
   Assert (used(), typename TriaAccessor<dim>::ExcCellNotUsed());
-  this->tria->faces->lines.user_pointers[this->present_index] = p;
+  lines().user_pointers[this->present_index] = p;
 }
 
 
-#if deal_II_dimension == 1
-
-template <>
-void TriaObjectAccessor<1, 1>::set_user_pointer (void *p) const
-{
-  const int dim=1;
-  Assert (used(), TriaAccessor<dim>::ExcCellNotUsed());
-  this->tria->levels[this->present_level]->lines.user_pointers[this->present_index] = p;
-}
-
-#endif
 
 template <int dim>
 void TriaObjectAccessor<1, dim>::clear_user_pointer () const
 {
   Assert (used(), typename TriaAccessor<dim>::ExcCellNotUsed());
-  this->tria->faces->lines.user_pointers[this->present_index] = 0;
-}
-
-
-#if deal_II_dimension == 1
-
-template <>
-void TriaObjectAccessor<1, 1>::clear_user_pointer () const
-{
-  const int dim=1;
-  Assert (used(), TriaAccessor<dim>::ExcCellNotUsed());
-  this->tria->levels[this->present_level]->lines.user_pointers[this->present_index] = 0;
+  lines().user_pointers[this->present_index] = 0;
 }
 
-#endif
 
 
 template <int dim>
 void * TriaObjectAccessor<1, dim>::user_pointer () const
 {
   Assert (used(), typename TriaAccessor<dim>::ExcCellNotUsed());
-  return this->tria->faces->lines.user_pointers[this->present_index];
+  return lines().user_pointers[this->present_index];
 }
 
 
-#if deal_II_dimension == 1
-
-template <>
-void * TriaObjectAccessor<1, 1>::user_pointer () const
-{
-  const int dim=1;
-  Assert (used(), TriaAccessor<dim>::ExcCellNotUsed());
-  return this->tria->levels[this->present_level]->lines.user_pointers[this->present_index];
-}
-
-#endif
-
 
 template <int dim>
 void
@@ -236,25 +160,10 @@ void TriaObjectAccessor<1, dim>::set_children (const int index) const
          (!has_children() && (index>=0)),
          typename TriaAccessor<dim>::ExcCantSetChildren(index));
   
-  this->tria->faces->lines.children[this->present_index] = index;
+  lines().children[this->present_index] = index;
 }
 
 
-#if deal_II_dimension == 1
-
-template <>
-void TriaObjectAccessor<1, 1>::set_children (const int index) const
-{
-  const int dim=1;
-  Assert (used(), TriaAccessor<dim>::ExcCellNotUsed());
-  Assert ((index==-1) ||
-         (!has_children() && (index>=0)),
-         TriaAccessor<dim>::ExcCantSetChildren(index));
-  
-  this->tria->levels[this->present_level]->lines.children[this->present_index] = index;
-}
-
-#endif
 
 template <int dim>
 void TriaObjectAccessor<1, dim>::clear_children () const
@@ -270,20 +179,9 @@ unsigned char TriaObjectAccessor<1, dim>::boundary_indicator () const
   Assert (dim>=2, ExcImpossibleInDim(dim));
   Assert (used(), typename TriaAccessor<dim>::ExcCellNotUsed());
 
-  return this->tria->faces->lines.material_id[this->present_index];
-}
-
-
-#if deal_II_dimension == 1
-
-template <>
-unsigned char TriaObjectAccessor<1, 1>::boundary_indicator () const
-{
-  Assert (false, ExcImpossibleInDim(1));
-  return 0;
+  return lines().material_id[this->present_index];
 }
 
-#endif
 
 
 template <int dim>
@@ -292,20 +190,10 @@ void TriaObjectAccessor<1, dim>::set_boundary_indicator (const unsigned char bou
   Assert (dim>=2, ExcImpossibleInDim(dim));
   Assert (used(), typename TriaAccessor<dim>::ExcCellNotUsed());
 
-  this->tria->faces->lines.material_id[this->present_index] = boundary_ind;
+  lines().material_id[this->present_index] = boundary_ind;
 }
 
 
-#if deal_II_dimension == 1
-
-template <>
-void TriaObjectAccessor<1, 1>::set_boundary_indicator (const unsigned char) const
-{
-  Assert (false, ExcImpossibleInDim(1));
-}
-
-#endif
-
 
 template <int dim>
 bool TriaObjectAccessor<1, dim>::at_boundary () const
@@ -371,21 +259,9 @@ template <int dim>
 void
 TriaObjectAccessor<2, dim>::set (const internal::Triangulation::Quad &quad) const
 {
-  this->tria->faces->quads.cells[this->present_index] = quad;
-}
-
-
-#if deal_II_dimension == 2
-
-template <>
-void
-TriaObjectAccessor<2, 2>::set (const internal::Triangulation::Quad &quad) const
-{
-  this->tria->levels[this->present_level]
-    ->quads.cells[this->present_index] = quad;
+  quads().cells[this->present_index] = quad;
 }
 
-#endif
 
 
 template <int dim>
@@ -413,46 +289,20 @@ TriaObjectAccessor<2, dim>::set_used_flag () const
 {
   Assert (this->state() == IteratorState::valid,
          typename TriaAccessor<dim>::ExcDereferenceInvalidObject());
-  this->tria->faces->quads.used[this->present_index] = true;
+  quads().used[this->present_index] = true;
 }
 
 
-#if deal_II_dimension == 2
-
-template <>
-void
-TriaObjectAccessor<2, 2>::set_used_flag () const
-{
-  const int dim=2;
-  Assert (this->state() == IteratorState::valid,
-         TriaAccessor<dim>::ExcDereferenceInvalidObject());
-  this->tria->levels[this->present_level]->quads.used[this->present_index] = true;
-}
-
-#endif
-
 
 template <int dim>
 void TriaObjectAccessor<2, dim>::clear_used_flag () const
 {
   Assert (this->state() == IteratorState::valid,
          typename TriaAccessor<dim>::ExcDereferenceInvalidObject());
-  this->tria->faces->quads.used[this->present_index] = false;
+  quads().used[this->present_index] = false;
 }
 
 
-#if deal_II_dimension == 2
-
-template <>
-void TriaObjectAccessor<2, 2>::clear_used_flag () const
-{
-  const int dim=2;
-  Assert (this->state() == IteratorState::valid,
-         TriaAccessor<dim>::ExcDereferenceInvalidObject());
-  this->tria->levels[this->present_level]->quads.used[this->present_index] = false;
-}
-
-#endif
 
 template <int dim>
 void TriaObjectAccessor<2, dim>::recursively_set_user_flag () const
@@ -482,63 +332,27 @@ template <int dim>
 void TriaObjectAccessor<2, dim>::set_user_pointer (void *p) const
 {
   Assert (used(), typename TriaAccessor<dim>::ExcCellNotUsed());
-  this->tria->faces->quads.user_pointers[this->present_index] = p;
-}
-
-
-#if deal_II_dimension == 2
-
-template <>
-void TriaObjectAccessor<2, 2>::set_user_pointer (void *p) const
-{
-  const int dim=2;
-  Assert (used(), TriaAccessor<dim>::ExcCellNotUsed());
-  this->tria->levels[this->present_level]->quads.user_pointers[this->present_index] = p;
+  quads().user_pointers[this->present_index] = p;
 }
 
-#endif
 
 
 template <int dim>
 void TriaObjectAccessor<2, dim>::clear_user_pointer () const
 {
   Assert (used(), typename TriaAccessor<dim>::ExcCellNotUsed());
-  this->tria->faces->quads.user_pointers[this->present_index] = 0;
-}
-
-
-#if deal_II_dimension == 2
-
-template <>
-void TriaObjectAccessor<2, 2>::clear_user_pointer () const
-{
-  const int dim=2;
-  Assert (used(), TriaAccessor<dim>::ExcCellNotUsed());
-  this->tria->levels[this->present_level]->quads.user_pointers[this->present_index] = 0;
+  quads().user_pointers[this->present_index] = 0;
 }
 
-#endif
 
 
 template <int dim>
 void * TriaObjectAccessor<2, dim>::user_pointer () const
 {
   Assert (used(), typename TriaAccessor<dim>::ExcCellNotUsed());
-  return this->tria->faces->quads.user_pointers[this->present_index];
-}
-
-
-#if deal_II_dimension == 2
-
-template <>
-void * TriaObjectAccessor<2, 2>::user_pointer () const
-{
-  const int dim=2;
-  Assert (used(), TriaAccessor<dim>::ExcCellNotUsed());
-  return this->tria->levels[this->present_level]->quads.user_pointers[this->present_index];
+  return quads().user_pointers[this->present_index];
 }
 
-#endif
 
 
 template <int dim>
@@ -576,27 +390,10 @@ void TriaObjectAccessor<2, dim>::set_children (const int index) const
          (!has_children() && (index>=0)),
          typename TriaAccessor<dim>::ExcCantSetChildren(index));
 
-  this->tria->faces->quads.children[this->present_index] = index;
+  quads().children[this->present_index] = index;
 }
 
 
-#if deal_II_dimension == 2
-
-template <>
-void TriaObjectAccessor<2, 2>::set_children (const int index) const
-{
-  const int dim=2;
-  Assert (used(),
-         TriaAccessor<dim>::ExcCellNotUsed());
-  Assert ((index==-1) ||
-         (!has_children() && (index>=0)),
-         TriaAccessor<dim>::ExcCantSetChildren(index));
-
-  this->tria->levels[this->present_level]->quads.children[this->present_index] = index;
-}
-
-#endif
-
 
 template <int dim>
 void TriaObjectAccessor<2, dim>::clear_children () const
@@ -609,42 +406,23 @@ void TriaObjectAccessor<2, dim>::clear_children () const
 template <int dim>
 unsigned char TriaObjectAccessor<2, dim>::boundary_indicator () const
 {
-  Assert (false, ExcImpossibleInDim(dim));
-  return 255;
-}
-
-
-#if deal_II_dimension == 3
-
-template <>
-unsigned char TriaObjectAccessor<2, 3>::boundary_indicator () const
-{
-  Assert (used(), TriaAccessor<3>::ExcCellNotUsed());
+  Assert (dim>2, ExcImpossibleInDim(dim));
+  Assert (used(), typename TriaAccessor<dim>::ExcCellNotUsed());
 
-  return this->tria->faces->quads.material_id[this->present_index];
+  return quads().material_id[this->present_index];
 }
 
-#endif
 
 
 template <int dim>
-void TriaObjectAccessor<2, dim>::set_boundary_indicator (const unsigned char) const
+void TriaObjectAccessor<2, dim>::set_boundary_indicator (const unsigned char boundary_ind) const
 {
-  Assert (false, ExcImpossibleInDim(dim));
-}
-
-
-#if deal_II_dimension == 3
-
-template <>
-void TriaObjectAccessor<2, 3>::set_boundary_indicator (const unsigned char boundary_ind) const
-{
-  Assert (used(), TriaAccessor<3>::ExcCellNotUsed());
+  Assert (dim>2, ExcImpossibleInDim(dim));
+  Assert (used(), typename TriaAccessor<dim>::ExcCellNotUsed());
 
-  this->tria->faces->quads.material_id[this->present_index] = boundary_ind;
+  quads().material_id[this->present_index] = boundary_ind;
 }
 
-#endif
 
 
 template <int dim>
@@ -1893,8 +1671,7 @@ template <>
 unsigned char CellAccessor<1>::material_id () const
 {
   Assert (this->used(), TriaAccessor<1>::ExcCellNotUsed());
-  return this->tria->levels[this->present_level]
-    ->lines.material_id[this->present_index];
+  return lines().material_id[this->present_index];
 }
 
 
@@ -1903,8 +1680,7 @@ template <>
 void CellAccessor<1>::set_material_id (const unsigned char mat_id) const
 {
   Assert (this->used(), TriaAccessor<1>::ExcCellNotUsed());
-  this->tria->levels[this->present_level]->lines.material_id[this->present_index]
-    = mat_id;
+  lines().material_id[this->present_index] = mat_id;
 }
 
 
@@ -1959,7 +1735,7 @@ template <>
 unsigned char CellAccessor<2>::material_id () const
 {
   Assert (this->used(), TriaAccessor<2>::ExcCellNotUsed());
-  return this->tria->levels[this->present_level]->quads.material_id[this->present_index];
+  return quads().material_id[this->present_index];
 }
 
 
@@ -1968,8 +1744,7 @@ template <>
 void CellAccessor<2>::set_material_id (const unsigned char mat_id) const
 {
   Assert (this->used(), TriaAccessor<2>::ExcCellNotUsed());
-  this->tria->levels[this->present_level]->quads.material_id[this->present_index]
-    = mat_id;                                           
+  quads().material_id[this->present_index] = mat_id;                                            
 }
 
 

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.