1 #ifndef DUNE_ALU3DINCLUDE_HH
2 #define DUNE_ALU3DINCLUDE_HH
8 #define COMPILE_ALUGRID_LIB 0
10 #if COMPILE_ALUGRID_LIB
11 #define COMPILE_ALUGRID_INLINE 0
13 #define COMPILE_ALUGRID_INLINE 1
16 #if COMPILE_ALUGRID_INLINE
17 #define alu_inline inline
24 #define ALU3DSPACE ALUGridSpace ::
26 #include <dune/common/mpicollectivecommunication.hh>
31 #if ALU3DGRID_PARALLEL
32 #include <alugrid_parallel.h>
35 #include <alugrid_serial.h>
41 namespace ALUGridSpace
64 template<
class Comm >
65 struct ALU3dBasicImplTraits;
68 struct ALU3dBasicImplTraits< No_Comm >
85 template <
class BndFaceType>
86 static bool isGhost(
const BndFaceType* ghost )
92 #if ALU3DGRID_PARALLEL
94 struct ALU3dBasicImplTraits< MPI_Comm >
97 typedef ALU3DSPACE GitterDunePll GitterImplType;
99 typedef GitterType::helement_STI HElementType;
100 typedef GitterType::hface_STI HFaceType;
101 typedef GitterType::hedge_STI HEdgeType;
102 typedef GitterType::vertex_STI VertexType;
103 typedef GitterType::hbndseg_STI HBndSegType;
104 typedef GitterType::ghostpair_STI GhostPairType;
106 typedef ALU3DSPACE ElementPllXIF_t PllElementType;
108 typedef GitterType::Geometric::hedge1_GEO GEOEdgeType;
111 template <
class BndFaceType>
112 static bool isGhost(
const BndFaceType* ghost )
114 return ( ghost != 0 );
117 #endif // #if ALU3DGRID_PARALLEL
124 template< ALU3dGr
idElementType elType,
class Comm,
int codim >
125 struct ALU3dCodimImplTraits;
127 template<
class Comm >
128 struct ALU3dCodimImplTraits<
tetra, Comm, 0 >
130 typedef typename ALU3dBasicImplTraits< Comm >::GitterType
GitterType;
140 template<
class Comm >
141 struct ALU3dCodimImplTraits<
hexa, Comm, 0 >
143 typedef typename ALU3dBasicImplTraits< Comm >::GitterType
GitterType;
153 template<
class Comm >
154 struct ALU3dCodimImplTraits<
tetra, Comm, 1 >
156 typedef typename ALU3dBasicImplTraits< Comm >::GitterType
GitterType;
163 template<
class Comm >
164 struct ALU3dCodimImplTraits<
hexa, Comm, 1 >
166 typedef typename ALU3dBasicImplTraits< Comm >::GitterType
GitterType;
173 template< ALU3dGr
idElementType elType,
class Comm >
174 struct ALU3dCodimImplTraits< elType, Comm, 2 >
176 typedef typename ALU3dBasicImplTraits< Comm >::GitterType
GitterType;
183 template< ALU3dGr
idElementType elType,
class Comm >
184 struct ALU3dCodimImplTraits< elType, Comm, 3 >
186 typedef typename ALU3dBasicImplTraits< Comm >::GitterType
GitterType;
198 template< ALU3dGr
idElementType elType,
class Comm >
199 struct ALU3dImplTraits;
201 template<
class Comm >
202 struct ALU3dImplTraits<
tetra, Comm >
203 :
public ALU3dBasicImplTraits< Comm >
205 typedef typename ALU3dBasicImplTraits< Comm >::GitterType
GitterType;
215 typedef typename GitterImplType::Objects::Hbnd3Default
BNDFaceType;
221 enum { bisect_element_t =
222 #ifdef ALUGRID_PERIODIC_BOUNDARY_PARALLEL
228 enum { refine_element_t = MarkRuleType::iso8 };
229 enum { coarse_element_t = MarkRuleType::crs };
230 enum { nosplit_element_t = MarkRuleType::nosplit };
235 template<
int codim >
237 :
public ALU3dCodimImplTraits< tetra, Comm, codim >
241 template <
class Elem>
242 static const GEOFaceType* getFace(
const Elem& elem,
const int aluFace )
244 return elem.myhface3( aluFace );
248 template<
class Comm >
249 struct ALU3dImplTraits<
hexa, Comm >
250 :
public ALU3dBasicImplTraits< Comm >
252 typedef typename ALU3dBasicImplTraits< Comm >::GitterType
GitterType;
262 typedef typename GitterImplType::Objects::Hbnd4Default
BNDFaceType;
268 enum { refine_element_t = MarkRuleType::iso8 };
269 enum { bisect_element_t = MarkRuleType::iso8 };
270 enum { coarse_element_t = MarkRuleType::crs };
271 enum { nosplit_element_t = MarkRuleType::nosplit };
276 template<
int codim >
278 :
public ALU3dCodimImplTraits< hexa, Comm, codim >
282 template <
class Elem>
283 static const GEOFaceType* getFace(
const Elem& elem,
const int aluFace )
285 return elem.myhface4( aluFace );
293 template<
class Comm >
297 typedef typename ALU3dBasicImplTraits< Comm >::VertexType
VertexType;
305 size_t size ()
const {
return vertexList_.size(); }
311 template <
class Gr
idType>
312 void setupVxList (
const GridType & grid,
int level);
326 template<
class Comm >
330 typedef typename ALU3dBasicImplTraits< Comm >::VertexType
VertexType;
339 size_t size ()
const {
return vertexList_.size(); }
345 template <
class Gr
idType>
355 const int idx = vertex.getIndex();
357 assert( idx < (
int)
size());
358 const ItemType & p = vertexList_[idx];
360 return vertex.level();
380 size_t size ()
const {
return itemList_.size(); }
403 template<
class Comm >
409 assert(index >= 0 && index < 4);
416 assert(index >= 0 && index < 6);
423 #endif // #ifndef DUNE_ALU3DINCLUDE_HH