00001
00002
00003
00004
00005
00006
00007
00008
00009
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
00145