3 #ifndef DUNE_ALU3DINCLUDE_HH
4 #define DUNE_ALU3DINCLUDE_HH
10 #define COMPILE_ALUGRID_LIB 0
12 #if COMPILE_ALUGRID_LIB
13 #define COMPILE_ALUGRID_INLINE 0
15 #define COMPILE_ALUGRID_INLINE 1
18 #if COMPILE_ALUGRID_INLINE
19 #define alu_inline inline
26 #define ALU3DSPACE ALUGridSpace ::
28 #include <dune/common/parallel/mpicollectivecommunication.hh>
33 #if ALU3DGRID_PARALLEL
34 #include <alugrid_parallel.h>
37 #include <alugrid_serial.h>
43 namespace ALUGridSpace
66 template<
class Comm >
67 struct ALU3dBasicImplTraits;
70 struct ALU3dBasicImplTraits< No_Comm >
87 template <
class BndFaceType>
88 static bool isGhost(
const BndFaceType* ghost )
94 #if ALU3DGRID_PARALLEL
96 struct ALU3dBasicImplTraits< MPI_Comm >
99 typedef ALU3DSPACE GitterDunePll GitterImplType;
101 typedef GitterType::helement_STI HElementType;
102 typedef GitterType::hface_STI HFaceType;
103 typedef GitterType::hedge_STI HEdgeType;
104 typedef GitterType::vertex_STI VertexType;
105 typedef GitterType::hbndseg_STI HBndSegType;
106 typedef GitterType::ghostpair_STI GhostPairType;
108 typedef ALU3DSPACE ElementPllXIF_t PllElementType;
110 typedef GitterType::Geometric::hedge1_GEO GEOEdgeType;
113 template <
class BndFaceType>
114 static bool isGhost(
const BndFaceType* ghost )
116 return ( ghost != 0 );
119 #endif // #if ALU3DGRID_PARALLEL
126 template< ALU3dGr
idElementType elType,
class Comm,
int codim >
127 struct ALU3dCodimImplTraits;
129 template<
class Comm >
130 struct ALU3dCodimImplTraits<
tetra, Comm, 0 >
132 typedef typename ALU3dBasicImplTraits< Comm >::GitterType
GitterType;
142 template<
class Comm >
143 struct ALU3dCodimImplTraits<
hexa, Comm, 0 >
145 typedef typename ALU3dBasicImplTraits< Comm >::GitterType
GitterType;
155 template<
class Comm >
156 struct ALU3dCodimImplTraits<
tetra, Comm, 1 >
158 typedef typename ALU3dBasicImplTraits< Comm >::GitterType
GitterType;
165 template<
class Comm >
166 struct ALU3dCodimImplTraits<
hexa, Comm, 1 >
168 typedef typename ALU3dBasicImplTraits< Comm >::GitterType
GitterType;
175 template< ALU3dGr
idElementType elType,
class Comm >
176 struct ALU3dCodimImplTraits< elType, Comm, 2 >
178 typedef typename ALU3dBasicImplTraits< Comm >::GitterType
GitterType;
185 template< ALU3dGr
idElementType elType,
class Comm >
186 struct ALU3dCodimImplTraits< elType, Comm, 3 >
188 typedef typename ALU3dBasicImplTraits< Comm >::GitterType
GitterType;
200 template< ALU3dGr
idElementType elType,
class Comm >
201 struct ALU3dImplTraits;
203 template<
class Comm >
204 struct ALU3dImplTraits<
tetra, Comm >
205 :
public ALU3dBasicImplTraits< Comm >
207 typedef typename ALU3dBasicImplTraits< Comm >::GitterType
GitterType;
217 typedef typename GitterImplType::Objects::Hbnd3Default
BNDFaceType;
223 enum { bisect_element_t =
224 #ifdef ALUGRID_PERIODIC_BOUNDARY_PARALLEL
230 enum { refine_element_t = MarkRuleType::iso8 };
231 enum { coarse_element_t = MarkRuleType::crs };
232 enum { nosplit_element_t = MarkRuleType::nosplit };
237 template<
int codim >
239 :
public ALU3dCodimImplTraits< tetra, Comm, codim >
243 template <
class Elem>
244 static const GEOFaceType* getFace(
const Elem& elem,
const int aluFace )
246 return elem.myhface3( aluFace );
250 template<
class Comm >
251 struct ALU3dImplTraits<
hexa, Comm >
252 :
public ALU3dBasicImplTraits< Comm >
254 typedef typename ALU3dBasicImplTraits< Comm >::GitterType
GitterType;
264 typedef typename GitterImplType::Objects::Hbnd4Default
BNDFaceType;
270 enum { refine_element_t = MarkRuleType::iso8 };
271 enum { bisect_element_t = MarkRuleType::iso8 };
272 enum { coarse_element_t = MarkRuleType::crs };
273 enum { nosplit_element_t = MarkRuleType::nosplit };
278 template<
int codim >
280 :
public ALU3dCodimImplTraits< hexa, Comm, codim >
284 template <
class Elem>
285 static const GEOFaceType* getFace(
const Elem& elem,
const int aluFace )
287 return elem.myhface4( aluFace );
295 template<
class Comm >
299 typedef typename ALU3dBasicImplTraits< Comm >::VertexType
VertexType;
307 size_t size ()
const {
return vertexList_.size(); }
313 template <
class Gr
idType>
314 void setupVxList (
const GridType & grid,
int level);
328 template<
class Comm >
332 typedef typename ALU3dBasicImplTraits< Comm >::VertexType
VertexType;
341 size_t size ()
const {
return vertexList_.size(); }
347 template <
class Gr
idType>
357 const int idx = vertex.getIndex();
359 assert( idx < (
int)
size());
360 const ItemType & p = vertexList_[idx];
362 return vertex.level();
382 size_t size ()
const {
return itemList_.size(); }
405 template<
class Comm >
411 assert(index >= 0 && index < 4);
418 assert(index >= 0 && index < 6);
425 #endif // #ifndef DUNE_ALU3DINCLUDE_HH