include/deal.II/multigrid/mg_dof_iterator_selector.h

00001 //---------------------------------------------------------------------------
00002 //    @f$Id: mg_dof_iterator_selector.h 25345 2012-03-31 08:37:04Z bangerth @f$
00003 //
00004 //    Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 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__mg_dof_iterator_selector_h
00013 #define __deal2__mg_dof_iterator_selector_h
00014 
00015 
00016 #include <deal.II/base/config.h>
00017 
00018 
00019 DEAL_II_NAMESPACE_OPEN
00020 
00021 template <int structdim, int dim, int spacedim> class MGDoFAccessor;
00022 template <int dim, int spacedim> class MGDoFCellAccessor;
00023 template <int, int, int> class InvalidAccessor;
00024 
00025 template <typename Accessor> class TriaRawIterator;
00026 template <typename Accessor> class TriaIterator;
00027 template <typename Accessor> class TriaActiveIterator;
00028 
00029 
00030 namespace internal
00031 {
00032   namespace MGDoFHandler
00033   {
00034     template <int dim, int spacedim>
00035     class Iterators;
00036 
00037 
00042     template <int spacedim>
00043     class Iterators<1,spacedim>
00044     {
00045       public:
00046         typedef ::MGDoFCellAccessor<1,spacedim> CellAccessor;
00047         typedef ::MGDoFAccessor<0,1,spacedim> FaceAccessor;
00048 
00049         typedef TriaRawIterator   <CellAccessor> raw_line_iterator;
00050         typedef TriaIterator      <CellAccessor> line_iterator;
00051         typedef TriaActiveIterator<CellAccessor> active_line_iterator;
00052 
00053         typedef TriaRawIterator   <InvalidAccessor<2,1,spacedim> > raw_quad_iterator;
00054         typedef TriaIterator      <InvalidAccessor<2,1,spacedim> > quad_iterator;
00055         typedef TriaActiveIterator<InvalidAccessor<2,1,spacedim> > active_quad_iterator;
00056 
00057         typedef TriaRawIterator   <InvalidAccessor<3,1,spacedim> > raw_hex_iterator;
00058         typedef TriaIterator      <InvalidAccessor<3,1,spacedim> > hex_iterator;
00059         typedef TriaActiveIterator<InvalidAccessor<3,1,spacedim> > active_hex_iterator;
00060 
00061         typedef raw_line_iterator    raw_cell_iterator;
00062         typedef line_iterator        cell_iterator;
00063         typedef active_line_iterator active_cell_iterator;
00064 
00065         typedef TriaRawIterator   <FaceAccessor> raw_face_iterator;
00066         typedef TriaIterator      <FaceAccessor> face_iterator;
00067         typedef TriaActiveIterator<FaceAccessor> active_face_iterator;
00068     };
00069 
00070 
00071 
00076     template <int spacedim>
00077     class Iterators<2,spacedim>
00078     {
00079       public:
00080         typedef ::MGDoFCellAccessor<2,spacedim> CellAccessor;
00081         typedef ::MGDoFAccessor<1,2,spacedim> FaceAccessor;
00082 
00083         typedef TriaRawIterator   <FaceAccessor> raw_line_iterator;
00084         typedef TriaIterator      <FaceAccessor> line_iterator;
00085         typedef TriaActiveIterator<FaceAccessor> active_line_iterator;
00086 
00087         typedef TriaRawIterator   <CellAccessor> raw_quad_iterator;
00088         typedef TriaIterator      <CellAccessor> quad_iterator;
00089         typedef TriaActiveIterator<CellAccessor> active_quad_iterator;
00090 
00091         typedef TriaRawIterator   <InvalidAccessor<3,2,spacedim> > raw_hex_iterator;
00092         typedef TriaIterator      <InvalidAccessor<3,2,spacedim> > hex_iterator;
00093         typedef TriaActiveIterator<InvalidAccessor<3,2,spacedim> > active_hex_iterator;
00094 
00095         typedef raw_quad_iterator    raw_cell_iterator;
00096         typedef quad_iterator        cell_iterator;
00097         typedef active_quad_iterator active_cell_iterator;
00098 
00099         typedef raw_line_iterator    raw_face_iterator;
00100         typedef line_iterator        face_iterator;
00101         typedef active_line_iterator active_face_iterator;
00102     };
00103 
00104 
00105 
00110     template <int spacedim>
00111     class Iterators<3,spacedim>
00112     {
00113       public:
00114         typedef ::MGDoFCellAccessor<3,spacedim> CellAccessor;
00115         typedef ::MGDoFAccessor<2,3,spacedim> FaceAccessor;
00116 
00117         typedef TriaRawIterator   <::MGDoFAccessor<1,3,spacedim> >    raw_line_iterator;
00118         typedef TriaIterator      <::MGDoFAccessor<1,3,spacedim> >       line_iterator;
00119         typedef TriaActiveIterator<::MGDoFAccessor<1,3,spacedim> > active_line_iterator;
00120 
00121         typedef TriaRawIterator   <FaceAccessor> raw_quad_iterator;
00122         typedef TriaIterator      <FaceAccessor> quad_iterator;
00123         typedef TriaActiveIterator<FaceAccessor> active_quad_iterator;
00124 
00125         typedef TriaRawIterator   <CellAccessor> raw_hex_iterator;
00126         typedef TriaIterator      <CellAccessor> hex_iterator;
00127         typedef TriaActiveIterator<CellAccessor> active_hex_iterator;
00128 
00129         typedef raw_hex_iterator    raw_cell_iterator;
00130         typedef hex_iterator        cell_iterator;
00131         typedef active_hex_iterator active_cell_iterator;
00132 
00133         typedef raw_quad_iterator    raw_face_iterator;
00134         typedef quad_iterator        face_iterator;
00135         typedef active_quad_iterator active_face_iterator;
00136     };
00137   }
00138 }
00139 
00140 
00141 DEAL_II_NAMESPACE_CLOSE
00142 
00143 #endif
00144 /*----------------------------   mg_dof_iterator_selector.h     ---------------------------*/
00145 
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines

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