include/deal.II/dofs/dof_iterator_selector.h

00001 //----------------------------------------------------------------------
00002 //    @f$Id: dof_iterator_selector.h 25345 2012-03-31 08:37:04Z bangerth @f$
00003 //
00004 //    Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 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__dof_iterators_h
00013 #define __deal2__dof_iterators_h
00014 
00015 #include <deal.II/base/config.h>
00016 
00017 
00018 DEAL_II_NAMESPACE_OPEN
00019 
00020 template <int, int, int> class InvalidAccessor;
00021 
00022 template <int structdim, class DH> class DoFAccessor;
00023 template <class DH> class DoFCellAccessor;
00024 
00025 template <int dim, int spacedim> class FiniteElement;
00026 template <typename Accessor> class TriaRawIterator;
00027 template <typename Accessor> class TriaIterator;
00028 template <typename Accessor> class TriaActiveIterator;
00029 template <int dim, int spacedim> class Triangulation;
00030 template <int dim, int spacedim> class DoFHandler;
00031 
00032 
00033 namespace internal
00034 {
00035   namespace DoFHandler
00036   {
00037     template <class DH>
00038     struct Iterators;
00039 
00040 
00051     template <template <int, int> class DH, int spacedim>
00052     struct Iterators<DH<1, spacedim> >
00053     {
00054         typedef DH<1,spacedim> DoFHandler_type;
00055         typedef ::DoFCellAccessor<DoFHandler_type> CellAccessor;
00056         typedef ::DoFAccessor<0,DoFHandler_type> FaceAccessor;
00057 
00058         typedef TriaRawIterator   <CellAccessor> raw_line_iterator;
00059         typedef TriaIterator      <CellAccessor> line_iterator;
00060         typedef TriaActiveIterator<CellAccessor> active_line_iterator;
00061 
00062         typedef TriaRawIterator   <InvalidAccessor<2,1,spacedim> > raw_quad_iterator;
00063         typedef TriaIterator      <InvalidAccessor<2,1,spacedim> > quad_iterator;
00064         typedef TriaActiveIterator<InvalidAccessor<2,1,spacedim> > active_quad_iterator;
00065 
00066         typedef TriaRawIterator   <InvalidAccessor<3,1,spacedim> > raw_hex_iterator;
00067         typedef TriaIterator      <InvalidAccessor<3,1,spacedim> > hex_iterator;
00068         typedef TriaActiveIterator<InvalidAccessor<3,1,spacedim> > active_hex_iterator;
00069 
00070         typedef raw_line_iterator    raw_cell_iterator;
00071         typedef line_iterator        cell_iterator;
00072         typedef active_line_iterator active_cell_iterator;
00073 
00074         typedef TriaRawIterator   <FaceAccessor> raw_face_iterator;
00075         typedef TriaIterator      <FaceAccessor> face_iterator;
00076         typedef TriaActiveIterator<FaceAccessor> active_face_iterator;
00077     };
00078 
00079 
00080 
00081 
00092     template <template <int, int> class DH, int spacedim>
00093     struct Iterators<DH<2, spacedim> >
00094     {
00095         typedef DH<2,spacedim> DoFHandler_type;
00096         typedef ::DoFCellAccessor<DoFHandler_type> CellAccessor;
00097         typedef ::DoFAccessor<1, DoFHandler_type> FaceAccessor;
00098 
00099         typedef TriaRawIterator   <FaceAccessor> raw_line_iterator;
00100         typedef TriaIterator      <FaceAccessor> line_iterator;
00101         typedef TriaActiveIterator<FaceAccessor> active_line_iterator;
00102 
00103         typedef TriaRawIterator   <CellAccessor> raw_quad_iterator;
00104         typedef TriaIterator      <CellAccessor> quad_iterator;
00105         typedef TriaActiveIterator<CellAccessor> active_quad_iterator;
00106 
00107         typedef TriaRawIterator   <InvalidAccessor<3,2,spacedim> > raw_hex_iterator;
00108         typedef TriaIterator      <InvalidAccessor<3,2,spacedim> > hex_iterator;
00109         typedef TriaActiveIterator<InvalidAccessor<3,2,spacedim> > active_hex_iterator;
00110 
00111         typedef raw_quad_iterator    raw_cell_iterator;
00112         typedef quad_iterator        cell_iterator;
00113         typedef active_quad_iterator active_cell_iterator;
00114 
00115         typedef raw_line_iterator    raw_face_iterator;
00116         typedef line_iterator        face_iterator;
00117         typedef active_line_iterator active_face_iterator;
00118     };
00119 
00120 
00121 
00122 
00133     template <template <int, int> class DH, int spacedim>
00134     struct Iterators<DH<3, spacedim> >
00135     {
00136         typedef DH<3, spacedim> DoFHandler_type;
00137         typedef ::DoFCellAccessor<DoFHandler_type> CellAccessor;
00138         typedef ::DoFAccessor<2, DoFHandler_type> FaceAccessor;
00139 
00140         typedef TriaRawIterator   <::DoFAccessor<1, DoFHandler_type> > raw_line_iterator;
00141         typedef TriaIterator      <::DoFAccessor<1, DoFHandler_type> > line_iterator;
00142         typedef TriaActiveIterator<::DoFAccessor<1, DoFHandler_type> > active_line_iterator;
00143 
00144         typedef TriaRawIterator   <FaceAccessor> raw_quad_iterator;
00145         typedef TriaIterator      <FaceAccessor> quad_iterator;
00146         typedef TriaActiveIterator<FaceAccessor> active_quad_iterator;
00147 
00148         typedef TriaRawIterator   <CellAccessor> raw_hex_iterator;
00149         typedef TriaIterator      <CellAccessor> hex_iterator;
00150         typedef TriaActiveIterator<CellAccessor> active_hex_iterator;
00151 
00152         typedef raw_hex_iterator    raw_cell_iterator;
00153         typedef hex_iterator        cell_iterator;
00154         typedef active_hex_iterator active_cell_iterator;
00155 
00156         typedef raw_quad_iterator    raw_face_iterator;
00157         typedef quad_iterator        face_iterator;
00158         typedef active_quad_iterator active_face_iterator;
00159     };
00160   }
00161 }
00162 
00163 DEAL_II_NAMESPACE_CLOSE
00164 
00165 #endif // __deal2__dof_iterator_selector_h
00166 
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines

deal.II documentation generated on Tue May 22 2012 12:06:07 by doxygen 1.7.3