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