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