00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 #ifndef __deal2__tria_object_h
00013 #define __deal2__tria_object_h
00014
00015
00016 #include <deal.II/base/config.h>
00017 #include <deal.II/base/exceptions.h>
00018 #include <deal.II/base/geometry_info.h>
00019
00020 DEAL_II_NAMESPACE_OPEN
00021
00022 namespace internal
00023 {
00024 namespace Triangulation
00025 {
00026
00036 template <int structdim>
00037 class TriaObject
00038 {
00039 public:
00040 static const unsigned int dimension = structdim;
00041
00047 TriaObject ();
00048
00057 TriaObject (const int i0, const int i1);
00058
00067 TriaObject (const int i0, const int i1,
00068 const int i2, const int i3);
00069
00078 TriaObject (const int i0, const int i1,
00079 const int i2, const int i3,
00080 const int i4, const int i5);
00081
00082
00087 int face (const unsigned int i) const;
00088
00093 void set_face (const unsigned int i, const int index);
00094
00100 static std::size_t memory_consumption ();
00101
00106 template <class Archive>
00107 void serialize(Archive & ar,
00108 const unsigned int version);
00109
00110 protected:
00118 int faces[GeometryInfo<structdim>::faces_per_cell];
00119 };
00120
00121
00122
00123 template <int structdim>
00124 inline
00125 TriaObject<structdim>::TriaObject ()
00126 {
00127 for (unsigned int i=0; i<GeometryInfo<structdim>::faces_per_cell; ++i)
00128 faces[i] = -1;
00129 }
00130
00131
00132 template <int structdim>
00133 inline
00134 TriaObject<structdim>::TriaObject (const int i0,
00135 const int i1)
00136 {
00137 Assert (structdim==1, ExcImpossibleInDim(structdim));
00138 faces[0] = i0;
00139 faces[1] = i1;
00140 }
00141
00142
00143 template <int structdim>
00144 inline
00145 TriaObject<structdim>::TriaObject (const int i0,
00146 const int i1,
00147 const int i2,
00148 const int i3)
00149 {
00150 Assert (structdim==2, ExcImpossibleInDim(structdim));
00151 faces[0] = i0;
00152 faces[1] = i1;
00153 faces[2] = i2;
00154 faces[3] = i3;
00155 }
00156
00157
00158 template <int structdim>
00159 inline
00160 TriaObject<structdim>::TriaObject (const int i0,
00161 const int i1,
00162 const int i2,
00163 const int i3,
00164 const int i4,
00165 const int i5)
00166 {
00167 Assert (structdim==3, ExcImpossibleInDim(structdim));
00168 faces[0] = i0;
00169 faces[1] = i1;
00170 faces[2] = i2;
00171 faces[3] = i3;
00172 faces[4] = i4;
00173 faces[5] = i5;
00174 }
00175
00176
00177 template <int structdim>
00178 inline
00179 int TriaObject<structdim>::face (const unsigned int i) const
00180 {
00181 Assert (i<GeometryInfo<structdim>::faces_per_cell,
00182 ExcIndexRange(i,0,GeometryInfo<structdim>::faces_per_cell));
00183 return faces[i];
00184 }
00185
00186
00187
00188 template <int structdim>
00189 inline
00190 void TriaObject<structdim>::set_face (const unsigned int i, const int index)
00191 {
00192 Assert (i<GeometryInfo<structdim>::faces_per_cell,
00193 ExcIndexRange(i,0,GeometryInfo<structdim>::faces_per_cell));
00194 faces[i] = index;
00195 }
00196
00197
00198
00199 template <int structdim>
00200 inline
00201 std::size_t
00202 TriaObject<structdim>::memory_consumption ()
00203 {
00204 return sizeof(TriaObject<structdim>);
00205 }
00206
00207
00208 template <int structdim>
00209 template <class Archive>
00210 void TriaObject<structdim>::serialize(Archive & ar,
00211 const unsigned int)
00212 {
00213 ar & faces;
00214 }
00215
00216
00217 }
00218 }
00219
00220
00221 DEAL_II_NAMESPACE_CLOSE
00222
00223 #endif
00224