include/deal.II/grid/tria_iterator_selector.h

00001 //---------------------------------------------------------------------------
00002 //    @f$Id: tria_iterator_selector.h 25345 2012-03-31 08:37:04Z bangerth @f$
00003 //
00004 //    Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2010, 2012 by the deal.II authors
00005 //
00006 //    This file is subject to QPL and may not be  distributed
00007 //    without copyright and license information. Please refer
00008 //    to the file deal.II/doc/license.html for the  text  and
00009 //    further information on this license.
00010 //
00011 //---------------------------------------------------------------------------
00012 #ifndef __deal2__tria_iterator_selector_h
00013 #define __deal2__tria_iterator_selector_h
00014 
00015 
00016 #include <deal.II/base/config.h>
00017 
00018 DEAL_II_NAMESPACE_OPEN
00019 
00020 template <int dim, int spacedim> class CellAccessor;
00021 template <int, int, int> class TriaAccessorBase;
00022 template <int, int, int> class InvalidAccessor;
00023 template <int, int, int> class TriaAccessor;
00024 template <int dim, int spacedim>  class TriaAccessor<0, dim, spacedim>;
00025 template <typename Accessor> class TriaRawIterator;
00026 template <typename Accessor> class TriaIterator;
00027 template <typename Accessor> class TriaActiveIterator;
00028 
00029 namespace internal
00030 {
00031   namespace Triangulation
00032   {
00033     template <int dim, int spacedim>
00034     struct Iterators;
00035 
00065     template <int spacedim>
00066     struct Iterators<1,spacedim>
00067     {
00068         typedef ::CellAccessor<1,spacedim> CellAccessor;
00069         typedef InvalidAccessor<0,1,spacedim> FaceAccessor;
00070 
00071         typedef TriaRawIterator   <CellAccessor> raw_line_iterator;
00072         typedef TriaIterator      <CellAccessor> line_iterator;
00073         typedef TriaActiveIterator<CellAccessor> active_line_iterator;
00074 
00075         typedef TriaRawIterator   <InvalidAccessor<2,1,spacedim> > raw_quad_iterator;
00076         typedef TriaIterator      <InvalidAccessor<2,1,spacedim> > quad_iterator;
00077         typedef TriaActiveIterator<InvalidAccessor<2,1,spacedim> > active_quad_iterator;
00078 
00079         typedef TriaRawIterator   <InvalidAccessor<3,1,spacedim> > raw_hex_iterator;
00080         typedef TriaIterator      <InvalidAccessor<3,1,spacedim> > hex_iterator;
00081         typedef TriaActiveIterator<InvalidAccessor<3,1,spacedim> > active_hex_iterator;
00082 
00083         typedef raw_line_iterator    raw_cell_iterator;
00084         typedef line_iterator        cell_iterator;
00085         typedef active_line_iterator active_cell_iterator;
00086 
00087         typedef TriaRawIterator   <FaceAccessor> raw_face_iterator;
00088         typedef TriaIterator      <FaceAccessor> face_iterator;
00089         typedef TriaActiveIterator<FaceAccessor> active_face_iterator;
00090     };
00091 
00092 
00093 
00129     template <int spacedim>
00130     struct Iterators<2,spacedim>
00131     {
00132         typedef ::CellAccessor<2, spacedim> CellAccessor;
00133         typedef ::TriaAccessor<1, 2, spacedim> FaceAccessor;
00134 
00135         typedef TriaRawIterator   <FaceAccessor> raw_line_iterator;
00136         typedef TriaIterator      <FaceAccessor> line_iterator;
00137         typedef TriaActiveIterator<FaceAccessor> active_line_iterator;
00138 
00139         typedef TriaRawIterator   <CellAccessor> raw_quad_iterator;
00140         typedef TriaIterator      <CellAccessor> quad_iterator;
00141         typedef TriaActiveIterator<CellAccessor> active_quad_iterator;
00142 
00143         typedef TriaRawIterator   <InvalidAccessor<3,2,spacedim> > raw_hex_iterator;
00144         typedef TriaIterator      <InvalidAccessor<3,2,spacedim> > hex_iterator;
00145         typedef TriaActiveIterator<InvalidAccessor<3,2,spacedim> > active_hex_iterator;
00146 
00147         typedef raw_quad_iterator    raw_cell_iterator;
00148         typedef quad_iterator        cell_iterator;
00149         typedef active_quad_iterator active_cell_iterator;
00150 
00151         typedef raw_line_iterator    raw_face_iterator;
00152         typedef line_iterator        face_iterator;
00153         typedef active_line_iterator active_face_iterator;
00154     };
00155 
00156 
00177     template <int spacedim>
00178     struct Iterators<3,spacedim>
00179     {
00180         typedef ::CellAccessor<3, spacedim> CellAccessor;
00181         typedef ::TriaAccessor<2, 3, spacedim> FaceAccessor;
00182 
00183         typedef TriaRawIterator   <::TriaAccessor<1, 3, spacedim> > raw_line_iterator;
00184         typedef TriaIterator      <::TriaAccessor<1, 3, spacedim> > line_iterator;
00185         typedef TriaActiveIterator<::TriaAccessor<1, 3, spacedim> > active_line_iterator;
00186 
00187         typedef TriaRawIterator   <FaceAccessor> raw_quad_iterator;
00188         typedef TriaIterator      <FaceAccessor> quad_iterator;
00189         typedef TriaActiveIterator<FaceAccessor> active_quad_iterator;
00190 
00191         typedef TriaRawIterator   <CellAccessor> raw_hex_iterator;
00192         typedef TriaIterator      <CellAccessor> hex_iterator;
00193         typedef TriaActiveIterator<CellAccessor> active_hex_iterator;
00194 
00195         typedef raw_hex_iterator    raw_cell_iterator;
00196         typedef hex_iterator        cell_iterator;
00197         typedef active_hex_iterator active_cell_iterator;
00198 
00199         typedef raw_quad_iterator    raw_face_iterator;
00200         typedef quad_iterator        face_iterator;
00201         typedef active_quad_iterator active_face_iterator;
00202     };
00203 
00204   }
00205 
00206 }
00207 
00208 DEAL_II_NAMESPACE_CLOSE
00209 
00210 #endif // __deal2__tria_iterator_selector_h
00211 
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines

deal.II documentation generated on Wed May 23 2012 12:03:25 by doxygen 1.7.3