]> https://gitweb.dealii.org/ - dealii-svn.git/commitdiff
typedefs for accessor classes
authorkanschat <kanschat@0785d39b-7218-0410-832d-ea1e28bc413d>
Mon, 26 Apr 2010 04:48:58 +0000 (04:48 +0000)
committerkanschat <kanschat@0785d39b-7218-0410-832d-ea1e28bc413d>
Mon, 26 Apr 2010 04:48:58 +0000 (04:48 +0000)
git-svn-id: https://svn.dealii.org/trunk@21036 0785d39b-7218-0410-832d-ea1e28bc413d

deal.II/deal.II/include/dofs/dof_handler.h
deal.II/deal.II/include/dofs/dof_iterator_selector.h
deal.II/deal.II/include/grid/tria.h
deal.II/deal.II/include/grid/tria_accessor.h
deal.II/deal.II/include/grid/tria_accessor.templates.h
deal.II/deal.II/include/grid/tria_iterator_selector.h
deal.II/deal.II/include/hp/dof_handler.h
deal.II/deal.II/include/multigrid/mg_dof_handler.h
deal.II/deal.II/include/multigrid/mg_dof_iterator_selector.h

index 57a6b649f9f984d409dadb27f0b20bdcf0aafa95..ca5f0067b89a25d48170e0af0f54e5e97e398f8a 100644 (file)
@@ -129,6 +129,9 @@ class DoFHandler  :  public Subscriptor
 {
     typedef internal::DoFHandler::Iterators<DoFHandler<dim,spacedim> > IteratorSelector;
   public:
+    typedef typename IteratorSelector::CellAccessor         cell_accessor;
+    typedef typename IteratorSelector::FaceAccessor         face_accessor;
+    
     typedef typename IteratorSelector::raw_line_iterator    raw_line_iterator;
     typedef typename IteratorSelector::line_iterator        line_iterator;
     typedef typename IteratorSelector::active_line_iterator active_line_iterator;
index 56d47586d0c682379c20518f0c9d1f3cfce9dbd6..87e1993e94a779c2feca92d8f4a79cda20274d14 100644 (file)
@@ -2,7 +2,7 @@
 //    $Id$
 //    Version: $Name$
 //
-//    Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2006, 2007, 2008 by the deal.II authors
+//    Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2006, 2007, 2008, 2010 by the deal.II authors
 //
 //    This file is subject to QPL and may not be  distributed
 //    without copyright and license information. Please refer
@@ -47,16 +47,18 @@ namespace internal
  * templates is a little more complicated. See the @ref Iterators module
  * for more information.
  *
- * @author Wolfgang Bangerth, Oliver Kayser-Herold, 1998, 2003, 2008
+ * @author Wolfgang Bangerth, Oliver Kayser-Herold, Guido Kanschat, 1998, 2003, 2008, 2010
  */
     template <template <int, int> class DH, int spacedim>
     struct Iterators<DH<1, spacedim> >
     {
         typedef DH<1,spacedim> DoFHandler_type;
-    
-        typedef TriaRawIterator<dealii::DoFCellAccessor<DoFHandler_type> >    raw_line_iterator;
-        typedef TriaIterator<dealii::DoFCellAccessor<DoFHandler_type> >       line_iterator;
-        typedef TriaActiveIterator<dealii::DoFCellAccessor<DoFHandler_type> > active_line_iterator;
+       typedef dealii::DoFCellAccessor<DoFHandler_type> CellAccessor;
+       typedef InvalidAccessor<0,1,spacedim> FaceAccessor;
+       
+        typedef TriaRawIterator   <CellAccessor> raw_line_iterator;
+        typedef TriaIterator      <CellAccessor> line_iterator;
+        typedef TriaActiveIterator<CellAccessor> active_line_iterator;
     
         typedef TriaRawIterator   <InvalidAccessor<2,1,spacedim> > raw_quad_iterator;
         typedef TriaIterator      <InvalidAccessor<2,1,spacedim> > quad_iterator;
@@ -70,9 +72,9 @@ namespace internal
         typedef line_iterator        cell_iterator;
         typedef active_line_iterator active_cell_iterator;
     
-        typedef TriaRawIterator   <InvalidAccessor<0,1,spacedim> > raw_face_iterator;
-        typedef TriaIterator      <InvalidAccessor<0,1,spacedim> > face_iterator;
-        typedef TriaActiveIterator<InvalidAccessor<0,1,spacedim> > active_face_iterator;
+        typedef TriaRawIterator   <FaceAccessor> raw_face_iterator;
+        typedef TriaIterator      <FaceAccessor> face_iterator;
+        typedef TriaActiveIterator<FaceAccessor> active_face_iterator;
     };
 
 
@@ -86,20 +88,22 @@ namespace internal
  * templates is a little more complicated. See the @ref Iterators module
  * for more information.
  *
- * @author Wolfgang Bangerth, Oliver Kayser-Herold, 1998, 2003, 2008
+ * @author Wolfgang Bangerth, Oliver Kayser-Herold, Guido Kanschat, 1998, 2003, 2008, 2010
  */
     template <template <int, int> class DH, int spacedim>
     struct Iterators<DH<2, spacedim> >
     {
         typedef DH<2,spacedim> DoFHandler_type;
+       typedef dealii::DoFCellAccessor<DoFHandler_type> CellAccessor;
+       typedef dealii::DoFAccessor<1, DoFHandler_type> FaceAccessor;
     
-        typedef TriaRawIterator<dealii::DoFAccessor<1, DoFHandler_type> >    raw_line_iterator;
-        typedef TriaIterator<dealii::DoFAccessor<1, DoFHandler_type> >       line_iterator;
-        typedef TriaActiveIterator<dealii::DoFAccessor<1, DoFHandler_type> > active_line_iterator;
+        typedef TriaRawIterator   <FaceAccessor> raw_line_iterator;
+        typedef TriaIterator      <FaceAccessor> line_iterator;
+        typedef TriaActiveIterator<FaceAccessor> active_line_iterator;
     
-        typedef TriaRawIterator<dealii::DoFCellAccessor<DoFHandler_type> >         raw_quad_iterator;
-        typedef TriaIterator<dealii::DoFCellAccessor<DoFHandler_type> >            quad_iterator;
-        typedef TriaActiveIterator<dealii::DoFCellAccessor<DoFHandler_type> >      active_quad_iterator;
+        typedef TriaRawIterator   <CellAccessor> raw_quad_iterator;
+        typedef TriaIterator      <CellAccessor> quad_iterator;
+        typedef TriaActiveIterator<CellAccessor> active_quad_iterator;
     
         typedef TriaRawIterator   <InvalidAccessor<3,2,spacedim> > raw_hex_iterator;
         typedef TriaIterator      <InvalidAccessor<3,2,spacedim> > hex_iterator;
@@ -125,24 +129,26 @@ namespace internal
  * templates is a little more complicated. See the @ref Iterators module
  * for more information.
  *
- * @author Wolfgang Bangerth, Oliver Kayser-Herold, 1998, 2003, 2008
+ * @author Wolfgang Bangerth, Oliver Kayser-Herold, Guido Kanschat, 1998, 2003, 2008, 2010
  */
     template <template <int, int> class DH, int spacedim>
     struct Iterators<DH<3, spacedim> >
     {
         typedef DH<3, spacedim> DoFHandler_type;
+       typedef dealii::DoFCellAccessor<DoFHandler_type> CellAccessor;
+       typedef dealii::DoFAccessor<2, DoFHandler_type> FaceAccessor;
       
-        typedef TriaRawIterator<dealii::DoFAccessor<1, DoFHandler_type> >    raw_line_iterator;
-        typedef TriaIterator<dealii::DoFAccessor<1, DoFHandler_type> >       line_iterator;
+        typedef TriaRawIterator   <dealii::DoFAccessor<1, DoFHandler_type> > raw_line_iterator;
+        typedef TriaIterator      <dealii::DoFAccessor<1, DoFHandler_type> > line_iterator;
         typedef TriaActiveIterator<dealii::DoFAccessor<1, DoFHandler_type> > active_line_iterator;
       
-        typedef TriaRawIterator<dealii::DoFAccessor<2, DoFHandler_type> >    raw_quad_iterator;
-        typedef TriaIterator<dealii::DoFAccessor<2, DoFHandler_type> >       quad_iterator;
-        typedef TriaActiveIterator<dealii::DoFAccessor<2, DoFHandler_type> > active_quad_iterator;
+        typedef TriaRawIterator   <FaceAccessor> raw_quad_iterator;
+        typedef TriaIterator      <FaceAccessor> quad_iterator;
+        typedef TriaActiveIterator<FaceAccessor> active_quad_iterator;
       
-        typedef TriaRawIterator<dealii::DoFCellAccessor<DoFHandler_type> >         raw_hex_iterator;
-        typedef TriaIterator<dealii::DoFCellAccessor<DoFHandler_type> >            hex_iterator;
-        typedef TriaActiveIterator<dealii::DoFCellAccessor<DoFHandler_type> >      active_hex_iterator;
+        typedef TriaRawIterator   <CellAccessor> raw_hex_iterator;
+        typedef TriaIterator      <CellAccessor> hex_iterator;
+        typedef TriaActiveIterator<CellAccessor> active_hex_iterator;
       
         typedef raw_hex_iterator    raw_cell_iterator;
         typedef hex_iterator        cell_iterator;
index 12f3b4070e073f7b69ad97d7da20a1828d5edbb7..339fa9ac81a9d696c6af736b178bff7e73ecae4f 100644 (file)
@@ -1279,7 +1279,9 @@ class Triangulation : public Subscriptor
          maximum_smoothing                  = 0xffff ^ allow_anisotropic_smoothing
     };
 
-
+    typedef typename IteratorSelector::CellAccessor         cell_accessor;
+    typedef typename IteratorSelector::FaceAccessor         face_accessor;
+    
     typedef typename IteratorSelector::raw_line_iterator    raw_line_iterator;
     typedef typename IteratorSelector::line_iterator        line_iterator;
     typedef typename IteratorSelector::active_line_iterator active_line_iterator;
index 1cfd218748e3399223d4a7f1fd5c4fd3a029de42..5d1957ed12643581101e85d40138f52998b959f7 100644 (file)
@@ -223,7 +223,6 @@ class TriaAccessorBase
                                      */
     static const unsigned int structure_dimension = structdim;
     
-  protected:
                                     /**
                                      * Declare the data type that
                                      * this accessor class expects to
@@ -245,6 +244,12 @@ class TriaAccessorBase
                      const int                 index  = -1,
                      const AccessorData       *       =  0);
 
+                                    /**
+                                     *  Copy constructor. Creates an
+                                     *  object with exactly the same data.
+                                     */
+    TriaAccessorBase (const TriaAccessorBase &);
+
                                     /**
                                      *  Copy operator. Since this is
                                      *  only called from iterators,
@@ -257,7 +262,15 @@ class TriaAccessorBase
                                      *  from the iterator class.
                                      */
     void copy_from (const TriaAccessorBase &);
+    
+                                    /**
+                                     *  Copy operator. Creates an
+                                     *  object with exactly the same data.
+                                     */
+    TriaAccessorBase & operator = (const TriaAccessorBase &);
 
+  protected:
+//TODO: Wolfgang, is this constructor EVER even asked for?
                                     /**
                                      *  Copy operator. This is normally
                                      *  used in a context like
@@ -277,11 +290,6 @@ class TriaAccessorBase
                                      */
     void operator = (const TriaAccessorBase *);
     
-                                    /**
-                                     *  Same as above.
-                                     */
-    TriaAccessorBase & operator = (const TriaAccessorBase &);
-
                                     /**
                                      *  Compare for equality.            
                                      */
@@ -566,7 +574,7 @@ class TriaAccessor : public TriaAccessorBase<structdim, dim, spacedim>
                  const int                 level      = -1,
                  const int                 index      = -1,
                  const AccessorData       *local_data =  0);
-
+    
                                     /**
                                      * Conversion constructor. This
                                      * constructor exists to make certain
index cc1b026487028ae14b45185635eeaf2806c0dfd2..2c772bab54b4d49464edcf8fbbc4ada5ba5a6d16 100644 (file)
@@ -56,6 +56,15 @@ TriaAccessorBase<structdim,dim,spacedim>::TriaAccessorBase (
 }
 
 
+template <int structdim, int dim, int spacedim>
+inline
+TriaAccessorBase<structdim,dim,spacedim>::TriaAccessorBase (const TriaAccessorBase<structdim,dim,spacedim> &a)
+               :
+               present_level(a.present_level),
+               present_index(a.present_index),
+               tria(a.tria)
+{}
+
 
 template <int structdim, int dim, int spacedim>
 inline
index eb34f7c931ba96422e3b386dc4522f35794990a3..07befc0c18205021c6fd90e91cc9a641c7f931a9 100644 (file)
@@ -66,9 +66,12 @@ namespace internal
     template <int spacedim>
     struct Iterators<1,spacedim>
     {
-        typedef TriaRawIterator   <dealii::CellAccessor<1,spacedim> > raw_line_iterator;
-        typedef TriaIterator      <dealii::CellAccessor<1,spacedim> > line_iterator;
-        typedef TriaActiveIterator<dealii::CellAccessor<1,spacedim> > active_line_iterator;
+       typedef dealii::CellAccessor<1,spacedim> CellAccessor;
+       typedef InvalidAccessor<0,1,spacedim> FaceAccessor;
+       
+        typedef TriaRawIterator   <CellAccessor> raw_line_iterator;
+        typedef TriaIterator      <CellAccessor> line_iterator;
+        typedef TriaActiveIterator<CellAccessor> active_line_iterator;
 
         typedef TriaRawIterator   <InvalidAccessor<2,1,spacedim> > raw_quad_iterator;
         typedef TriaIterator      <InvalidAccessor<2,1,spacedim> > quad_iterator;
@@ -82,9 +85,9 @@ namespace internal
         typedef line_iterator        cell_iterator;
         typedef active_line_iterator active_cell_iterator;
 
-        typedef TriaRawIterator   <InvalidAccessor<0,1,spacedim> > raw_face_iterator;
-        typedef TriaIterator      <InvalidAccessor<0,1,spacedim> > face_iterator;
-        typedef TriaActiveIterator<InvalidAccessor<0,1,spacedim> > active_face_iterator;
+        typedef TriaRawIterator   <FaceAccessor> raw_face_iterator;
+        typedef TriaIterator      <FaceAccessor> face_iterator;
+        typedef TriaActiveIterator<FaceAccessor> active_face_iterator;
     };
 
 
@@ -127,13 +130,16 @@ namespace internal
     template <int spacedim>
     struct Iterators<2,spacedim>
     {
-        typedef TriaRawIterator   <dealii::TriaAccessor<1, 2, spacedim> > raw_line_iterator;
-        typedef TriaIterator      <dealii::TriaAccessor<1, 2, spacedim> > line_iterator;
-        typedef TriaActiveIterator<dealii::TriaAccessor<1, 2, spacedim> > active_line_iterator;
+       typedef dealii::CellAccessor<2, spacedim> CellAccessor;
+       typedef dealii::TriaAccessor<1, 2, spacedim> FaceAccessor;
+       
+        typedef TriaRawIterator   <FaceAccessor> raw_line_iterator;
+        typedef TriaIterator      <FaceAccessor> line_iterator;
+        typedef TriaActiveIterator<FaceAccessor> active_line_iterator;
     
-        typedef TriaRawIterator   <dealii::CellAccessor<2, spacedim> > raw_quad_iterator;
-        typedef TriaIterator      <dealii::CellAccessor<2, spacedim> > quad_iterator;
-        typedef TriaActiveIterator<dealii::CellAccessor<2, spacedim> > active_quad_iterator;
+        typedef TriaRawIterator   <CellAccessor> raw_quad_iterator;
+        typedef TriaIterator      <CellAccessor> quad_iterator;
+        typedef TriaActiveIterator<CellAccessor> active_quad_iterator;
 
         typedef TriaRawIterator   <InvalidAccessor<3,2,spacedim> > raw_hex_iterator;
         typedef TriaIterator      <InvalidAccessor<3,2,spacedim> > hex_iterator;
@@ -172,17 +178,20 @@ namespace internal
     template <int spacedim>
     struct Iterators<3,spacedim>
     {
+       typedef dealii::CellAccessor<3, spacedim> CellAccessor;
+       typedef dealii::TriaAccessor<2, 3, spacedim> FaceAccessor;
+       
         typedef TriaRawIterator   <dealii::TriaAccessor<1, 3, spacedim> > raw_line_iterator;
         typedef TriaIterator      <dealii::TriaAccessor<1, 3, spacedim> > line_iterator;
         typedef TriaActiveIterator<dealii::TriaAccessor<1, 3, spacedim> > active_line_iterator;
     
-        typedef TriaRawIterator   <dealii::TriaAccessor<2, 3, spacedim> > raw_quad_iterator;
-        typedef TriaIterator      <dealii::TriaAccessor<2, 3, spacedim> > quad_iterator;
-        typedef TriaActiveIterator<dealii::TriaAccessor<2, 3, spacedim> > active_quad_iterator;
+        typedef TriaRawIterator   <FaceAccessor> raw_quad_iterator;
+        typedef TriaIterator      <FaceAccessor> quad_iterator;
+        typedef TriaActiveIterator<FaceAccessor> active_quad_iterator;
 
-        typedef TriaRawIterator   <dealii::CellAccessor<3, spacedim> > raw_hex_iterator;
-        typedef TriaIterator      <dealii::CellAccessor<3, spacedim> > hex_iterator;
-        typedef TriaActiveIterator<dealii::CellAccessor<3, spacedim> > active_hex_iterator;
+        typedef TriaRawIterator   <CellAccessor> raw_hex_iterator;
+        typedef TriaIterator      <CellAccessor> hex_iterator;
+        typedef TriaActiveIterator<CellAccessor> active_hex_iterator;
 
         typedef raw_hex_iterator    raw_cell_iterator;
         typedef hex_iterator        cell_iterator;
index f8a8b4a7ad15736d83bf4a2815b132f428f03008..f9527d8fb55ff10b4b38c75f2a2b3284b111f31b 100644 (file)
@@ -2,7 +2,7 @@
 //    $Id$
 //    Version: $Name$
 //
-//    Copyright (C) 2005, 2006, 2007, 2008, 2009 by the deal.II authors
+//    Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010 by the deal.II authors
 //
 //    This file is subject to QPL and may not be  distributed
 //    without copyright and license information. Please refer
@@ -77,6 +77,9 @@ namespace hp
   {
       typedef internal::DoFHandler::Iterators<DoFHandler<dim,spacedim> > IteratorSelector;
     public:
+      typedef typename IteratorSelector::CellAccessor         cell_accessor;
+      typedef typename IteratorSelector::FaceAccessor         face_accessor;
+      
       typedef typename IteratorSelector::raw_line_iterator raw_line_iterator;
       typedef typename IteratorSelector::line_iterator line_iterator;
       typedef typename IteratorSelector::active_line_iterator active_line_iterator;
index 0ada6edcaaa3a00816eaebdf26677becc0d78128..ad476c6c8b4ccbca94e2d14a3c7df6f55e292ad8 100644 (file)
@@ -44,7 +44,7 @@ namespace internal
  * At present, multilevel algorithms are not fully functional, so this
  * documentation is still very brief.
  *
- * This class has not yet been implemented for the use in the codimension
+ * @todo This class has not yet been implemented for the use in the codimension
  * one case (<tt>spacedim != dim </tt>).
  *
 //TODO:[WB] Extend MGDoFHandler doc
@@ -54,26 +54,30 @@ namespace internal
 template <int dim, int spacedim=dim>
 class MGDoFHandler : public DoFHandler<dim,spacedim>
 {
+    typedef internal::MGDoFHandler::Iterators<dim,spacedim> IteratorSelector;
   public:
-    typedef typename internal::MGDoFHandler::Iterators<dim,spacedim>::raw_line_iterator raw_line_iterator;
-    typedef typename internal::MGDoFHandler::Iterators<dim,spacedim>::line_iterator line_iterator;
-    typedef typename internal::MGDoFHandler::Iterators<dim,spacedim>::active_line_iterator active_line_iterator;
-
-    typedef typename internal::MGDoFHandler::Iterators<dim,spacedim>::raw_quad_iterator raw_quad_iterator;
-    typedef typename internal::MGDoFHandler::Iterators<dim,spacedim>::quad_iterator quad_iterator;
-    typedef typename internal::MGDoFHandler::Iterators<dim,spacedim>::active_quad_iterator active_quad_iterator;
-
-    typedef typename internal::MGDoFHandler::Iterators<dim,spacedim>::raw_hex_iterator raw_hex_iterator;
-    typedef typename internal::MGDoFHandler::Iterators<dim,spacedim>::hex_iterator hex_iterator;
-    typedef typename internal::MGDoFHandler::Iterators<dim,spacedim>::active_hex_iterator active_hex_iterator;
-
-    typedef typename internal::MGDoFHandler::Iterators<dim,spacedim>::raw_cell_iterator raw_cell_iterator;
-    typedef typename internal::MGDoFHandler::Iterators<dim,spacedim>::cell_iterator cell_iterator;
-    typedef typename internal::MGDoFHandler::Iterators<dim,spacedim>::active_cell_iterator active_cell_iterator;
-
-    typedef typename internal::MGDoFHandler::Iterators<dim,spacedim>::raw_face_iterator raw_face_iterator;
-    typedef typename internal::MGDoFHandler::Iterators<dim,spacedim>::face_iterator face_iterator;
-    typedef typename internal::MGDoFHandler::Iterators<dim,spacedim>::active_face_iterator active_face_iterator;
+    typedef typename IteratorSelector::CellAccessor cell_accessor;
+    typedef typename IteratorSelector::FaceAccessor face_accessor;
+    
+    typedef typename IteratorSelector::raw_line_iterator raw_line_iterator;
+    typedef typename IteratorSelector::line_iterator line_iterator;
+    typedef typename IteratorSelector::active_line_iterator active_line_iterator;
+
+    typedef typename IteratorSelector::raw_quad_iterator raw_quad_iterator;
+    typedef typename IteratorSelector::quad_iterator quad_iterator;
+    typedef typename IteratorSelector::active_quad_iterator active_quad_iterator;
+
+    typedef typename IteratorSelector::raw_hex_iterator raw_hex_iterator;
+    typedef typename IteratorSelector::hex_iterator hex_iterator;
+    typedef typename IteratorSelector::active_hex_iterator active_hex_iterator;
+
+    typedef typename IteratorSelector::raw_cell_iterator raw_cell_iterator;
+    typedef typename IteratorSelector::cell_iterator cell_iterator;
+    typedef typename IteratorSelector::active_cell_iterator active_cell_iterator;
+
+    typedef typename IteratorSelector::raw_face_iterator raw_face_iterator;
+    typedef typename IteratorSelector::face_iterator face_iterator;
+    typedef typename IteratorSelector::active_face_iterator active_face_iterator;
 
                                     /**
                                      * Make the dimension and the space_dimension available
index 9fca49c2a1950130a5198f3a0686d4e6244ddbd7..e1e8c8d94bacce1087bac439bc7a63ba1a0fc6b7 100644 (file)
@@ -2,7 +2,7 @@
 //    $Id$
 //    Version: $Name$
 //
-//    Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2008 by the deal.II authors
+//    Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2008, 2010 by the deal.II authors
 //
 //    This file is subject to QPL and may not be  distributed
 //    without copyright and license information. Please refer
@@ -47,9 +47,12 @@ namespace internal
     class Iterators<1,spacedim>
     {
       public:
-        typedef TriaRawIterator<dealii::MGDoFCellAccessor<1,spacedim> >    raw_line_iterator;
-        typedef TriaIterator<dealii::MGDoFCellAccessor<1,spacedim> >       line_iterator;
-        typedef TriaActiveIterator<dealii::MGDoFCellAccessor<1,spacedim> > active_line_iterator;
+       typedef dealii::MGDoFCellAccessor<1,spacedim> CellAccessor;
+       typedef InvalidAccessor<0,1,spacedim> FaceAccessor;
+       
+       typedef TriaRawIterator   <CellAccessor> raw_line_iterator;
+        typedef TriaIterator      <CellAccessor> line_iterator;
+        typedef TriaActiveIterator<CellAccessor> active_line_iterator;
 
         typedef TriaRawIterator   <InvalidAccessor<2,1,spacedim> > raw_quad_iterator;
         typedef TriaIterator      <InvalidAccessor<2,1,spacedim> > quad_iterator;
@@ -63,9 +66,9 @@ namespace internal
         typedef line_iterator        cell_iterator;
         typedef active_line_iterator active_cell_iterator;
 
-        typedef TriaRawIterator   <InvalidAccessor<0,1,spacedim> > raw_face_iterator;
-        typedef TriaIterator      <InvalidAccessor<0,1,spacedim> > face_iterator;
-        typedef TriaActiveIterator<InvalidAccessor<0,1,spacedim> > active_face_iterator;
+        typedef TriaRawIterator   <FaceAccessor> raw_face_iterator;
+        typedef TriaIterator      <FaceAccessor> face_iterator;
+        typedef TriaActiveIterator<FaceAccessor> active_face_iterator;
     };
 
 
@@ -78,13 +81,16 @@ namespace internal
     class Iterators<2,spacedim>
     {
       public:
-        typedef TriaRawIterator<dealii::MGDoFAccessor<1,2,spacedim> >    raw_line_iterator;
-        typedef TriaIterator<dealii::MGDoFAccessor<1,2,spacedim> >       line_iterator;
-        typedef TriaActiveIterator<dealii::MGDoFAccessor<1,2,spacedim> > active_line_iterator;
+       typedef dealii::MGDoFCellAccessor<2,spacedim> CellAccessor;
+       typedef dealii::MGDoFAccessor<1,2,spacedim> FaceAccessor;
+       
+        typedef TriaRawIterator   <FaceAccessor> raw_line_iterator;
+        typedef TriaIterator      <FaceAccessor> line_iterator;
+        typedef TriaActiveIterator<FaceAccessor> active_line_iterator;
     
-        typedef TriaRawIterator<dealii::MGDoFCellAccessor<2,spacedim> >         raw_quad_iterator;
-        typedef TriaIterator<dealii::MGDoFCellAccessor<2,spacedim> >            quad_iterator;
-        typedef TriaActiveIterator<dealii::MGDoFCellAccessor<2,spacedim> >      active_quad_iterator;
+        typedef TriaRawIterator   <CellAccessor> raw_quad_iterator;
+        typedef TriaIterator      <CellAccessor> quad_iterator;
+        typedef TriaActiveIterator<CellAccessor> active_quad_iterator;
 
         typedef TriaRawIterator   <InvalidAccessor<3,2,spacedim> > raw_hex_iterator;
         typedef TriaIterator      <InvalidAccessor<3,2,spacedim> > hex_iterator;
@@ -109,17 +115,20 @@ namespace internal
     class Iterators<3,spacedim>
     {
       public:
-        typedef TriaRawIterator<dealii::MGDoFAccessor<1,3,spacedim> >    raw_line_iterator;
-        typedef TriaIterator<dealii::MGDoFAccessor<1,3,spacedim> >       line_iterator;
+       typedef dealii::MGDoFCellAccessor<3,spacedim> CellAccessor;
+       typedef dealii::MGDoFAccessor<2,3,spacedim> FaceAccessor;
+
+        typedef TriaRawIterator   <dealii::MGDoFAccessor<1,3,spacedim> >    raw_line_iterator;
+        typedef TriaIterator      <dealii::MGDoFAccessor<1,3,spacedim> >       line_iterator;
         typedef TriaActiveIterator<dealii::MGDoFAccessor<1,3,spacedim> > active_line_iterator;
 
-        typedef TriaRawIterator<dealii::MGDoFAccessor<2,3,spacedim> >    raw_quad_iterator;
-        typedef TriaIterator<dealii::MGDoFAccessor<2,3,spacedim> >       quad_iterator;
-        typedef TriaActiveIterator<dealii::MGDoFAccessor<2,3,spacedim> > active_quad_iterator;
+        typedef TriaRawIterator   <FaceAccessor> raw_quad_iterator;
+        typedef TriaIterator      <FaceAccessor> quad_iterator;
+        typedef TriaActiveIterator<FaceAccessor> active_quad_iterator;
 
-        typedef TriaRawIterator<dealii::MGDoFCellAccessor<3,spacedim> >        raw_hex_iterator;
-        typedef TriaIterator<dealii::MGDoFCellAccessor<3,spacedim> >           hex_iterator;
-        typedef TriaActiveIterator<dealii::MGDoFCellAccessor<3,spacedim> >     active_hex_iterator;
+        typedef TriaRawIterator   <CellAccessor> raw_hex_iterator;
+        typedef TriaIterator      <CellAccessor> hex_iterator;
+        typedef TriaActiveIterator<CellAccessor> active_hex_iterator;
 
         typedef raw_hex_iterator    raw_cell_iterator;
         typedef hex_iterator        cell_iterator;

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.