1 #ifndef DUNE_ALUGRID_ALU3DINCLUDE_HH
2 #define DUNE_ALUGRID_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 ::ALUGrid::
28 #include <dune/alugrid/impl/serial/gatherscatter.hh>
29 #include <dune/alugrid/impl/serial/key.h>
30 #include <dune/alugrid/impl/serial/myalloc.h>
31 #include <dune/alugrid/impl/serial/serialize.h>
33 #include <dune/alugrid/impl/parallel/mpAccess.h>
34 #include <dune/alugrid/impl/parallel/gitter_pll_ldb.h>
36 #include <dune/alugrid/impl/serial/gitter_sti.h>
38 #include <dune/alugrid/impl/serial/gitter_hexa_top.h>
39 #include <dune/alugrid/impl/serial/mapp_tetra_3d_ext.h>
40 #include <dune/alugrid/impl/serial/gitter_tetra_top.h>
41 #include <dune/alugrid/impl/serial/walk.h>
42 #include <dune/alugrid/impl/serial/gitter_impl.h>
43 #include <dune/alugrid/impl/serial/gitter_mgb.h>
44 #include <dune/alugrid/impl/serial/key.h>
45 #include <dune/alugrid/impl/serial/lock.h>
47 #include <dune/alugrid/impl/duneinterface/gitter_dune_impl.h>
63 #include <dune/alugrid/impl/parallel/gitter_pll_sti.h>
64 #include <dune/alugrid/impl/parallel/gitter_pll_impl.h>
65 #include <dune/alugrid/impl/parallel/gitter_pll_ldb.h>
66 #include <dune/alugrid/impl/parallel/gitter_tetra_top_pll.h>
67 #include <dune/alugrid/impl/parallel/gitter_hexa_top_pll.h>
68 #include <dune/alugrid/impl/parallel/gitter_pll_mgb.h>
69 #include <dune/alugrid/impl/duneinterface/gitter_dune_pll_impl.h>
71 #if ALU3DGRID_PARALLEL
73 #include <dune/alugrid/impl/parallel/mpAccess_MPI.h>
91 template<
class Comm >
112 template <
class BndFaceType>
113 static bool isGhost(
const BndFaceType* ghost )
137 template <
class BndFaceType>
138 static bool isGhost(
const BndFaceType* ghost )
140 return ( ghost != 0 );
148 template< ALU3dGr
idElementType elType,
class Comm,
int dim,
int codim >
151 template<
class Comm,
int dim>
164 template<
class Comm,
int dim >
177 template<
class Comm,
int dim >
187 template<
class Comm,
int dim >
197 template< ALU3dGr
idElementType elType,
class Comm >
208 template< ALU3dGr
idElementType elType,
class Comm >
218 template< ALU3dGr
idElementType elType,
class Comm >
229 template<
class MarkRuleType, ALU3dGr
idElementType elType >
233 template<
class MarkRuleType >
237 enum { bisect_element_t = MarkRuleType::bisect };
238 enum { refine_element_t = MarkRuleType::regular };
239 enum { coarse_element_t = MarkRuleType::crs };
240 enum { nosplit_element_t = MarkRuleType::nosplit };
244 template<
class MarkRuleType >
248 enum { bisect_element_t = MarkRuleType::regular };
249 enum { refine_element_t = MarkRuleType::regular };
250 enum { coarse_element_t = MarkRuleType::crs };
251 enum { nosplit_element_t = MarkRuleType::nosplit };
258 template< ALU3dGr
idElementType elType,
class Comm >
261 template<
class Comm >
275 typedef typename GitterImplType::Objects::Hbnd3Default
BNDFaceType;
280 struct RefinementRules
287 template<
int dim,
int codim >
293 template <
class Elem>
296 return elem.myhface( aluFace );
300 template<
class Comm >
314 typedef typename GitterImplType::Objects::Hbnd4Default
BNDFaceType;
319 struct RefinementRules
326 template<
int dim,
int codim >
332 template <
class Elem>
335 return elem.myhface( aluFace );
343 template<
class Comm >
355 size_t size ()
const {
return vertexList_.size(); }
361 template <
class Gr
idType>
379 template<
class Comm >
392 size_t size ()
const {
return vertexList_.size(); }
398 template <
class Gr
idType>
408 const int idx = vertex.getIndex();
411 const ItemType & p = vertexList_[idx];
413 return vertex.level();
434 size_t size ()
const {
return itemList_.size(); }
457 template<
class Comm >
#define ALU3DSPACE
Definition: alu3dinclude.hh:24
#define alugrid_assert(EX)
Definition: alugrid_assert.hh:20
Definition: alu3dinclude.hh:50
Gitter::AdaptRestrictProlong AdaptRestrictProlongType
Definition: alu3dinclude.hh:52
static const int ProcessorBoundary_t
Definition: alu3dinclude.hh:54
GatherScatter GatherScatterType
Definition: alu3dinclude.hh:57
Definition: alu3dinclude.hh:80
@ hexa
Definition: topology.hh:12
@ tetra
Definition: topology.hh:12
double alu3d_ctype
Definition: alu3dinclude.hh:85
ALU3dGridItemList ALU3dGridItemListType
Definition: alu3dinclude.hh:451
Definition: alu3dinclude.hh:92
GitterType::helement_STI HElementType
Definition: alu3dinclude.hh:100
GitterType::hface_STI HFaceType
Definition: alu3dinclude.hh:101
ALU3DSPACE GitterDuneImpl GitterImplType
Definition: alu3dinclude.hh:98
static bool isGhost(const BndFaceType *ghost)
method for ghost check
Definition: alu3dinclude.hh:113
HElementType PllElementType
Definition: alu3dinclude.hh:107
GitterType::hbndseg_STI HBndSegType
Definition: alu3dinclude.hh:104
GitterType::ghostpair_STI GhostPairType
Definition: alu3dinclude.hh:105
GitterType::vertex_STI VertexType
Definition: alu3dinclude.hh:103
GitterType::hedge_STI HEdgeType
Definition: alu3dinclude.hh:102
ALU3DSPACE Gitter GitterType
Definition: alu3dinclude.hh:97
GitterType::Geometric::hedge1_GEO GEOEdgeType
Definition: alu3dinclude.hh:109
static bool isGhost(const BndFaceType *ghost)
Definition: alu3dinclude.hh:138
GitterType::hbndseg_STI HBndSegType
Definition: alu3dinclude.hh:129
ALU3DSPACE GitterDunePll GitterType
Definition: alu3dinclude.hh:122
GitterType::vertex_STI VertexType
Definition: alu3dinclude.hh:128
ALU3DSPACE GitterDunePll GitterImplType
Definition: alu3dinclude.hh:123
GitterType::helement_STI HElementType
Definition: alu3dinclude.hh:125
ALU3DSPACE ElementPllXIF_t PllElementType
Definition: alu3dinclude.hh:132
GitterType::ghostpair_STI GhostPairType
Definition: alu3dinclude.hh:130
GitterType::Geometric::hedge1_GEO GEOEdgeType
Definition: alu3dinclude.hh:134
GitterType::hedge_STI HEdgeType
Definition: alu3dinclude.hh:127
GitterType::hface_STI HFaceType
Definition: alu3dinclude.hh:126
Definition: alu3dinclude.hh:149
GitterImplType::Objects::tetra_IMPL ImplementationType
Definition: alu3dinclude.hh:159
GitterType::helement_STI InterfaceType
Definition: alu3dinclude.hh:157
ALU3dBasicImplTraits< Comm >::GitterType GitterType
Definition: alu3dinclude.hh:154
GitterType::Geometric::hasFace3 EntitySeedType
Definition: alu3dinclude.hh:158
GitterImplType::Objects::Hbnd3Default GhostImplementationType
Definition: alu3dinclude.hh:161
ALU3dBasicImplTraits< Comm >::GitterImplType GitterImplType
Definition: alu3dinclude.hh:155
GitterType::hbndseg_STI GhostInterfaceType
Definition: alu3dinclude.hh:160
GitterType::helement_STI InterfaceType
Definition: alu3dinclude.hh:170
ALU3dBasicImplTraits< Comm >::GitterType GitterType
Definition: alu3dinclude.hh:167
GitterType::hbndseg_STI GhostInterfaceType
Definition: alu3dinclude.hh:173
GitterImplType::Objects::hexa_IMPL ImplementationType
Definition: alu3dinclude.hh:172
GitterType::Geometric::hasFace4 EntitySeedType
Definition: alu3dinclude.hh:171
ALU3dBasicImplTraits< Comm >::GitterImplType GitterImplType
Definition: alu3dinclude.hh:168
GitterImplType::Objects::Hbnd4Default GhostImplementationType
Definition: alu3dinclude.hh:174
GitterType::Geometric::hface3_GEO ImplementationType
Definition: alu3dinclude.hh:184
GitterType::hface_STI InterfaceType
Definition: alu3dinclude.hh:182
InterfaceType EntitySeedType
Definition: alu3dinclude.hh:183
ALU3dBasicImplTraits< Comm >::GitterType GitterType
Definition: alu3dinclude.hh:180
GitterType::Geometric::hface4_GEO ImplementationType
Definition: alu3dinclude.hh:194
GitterType::hface_STI InterfaceType
Definition: alu3dinclude.hh:192
ALU3dBasicImplTraits< Comm >::GitterType GitterType
Definition: alu3dinclude.hh:190
InterfaceType EntitySeedType
Definition: alu3dinclude.hh:193
InterfaceType EntitySeedType
Definition: alu3dinclude.hh:203
ALU3dBasicImplTraits< Comm >::GitterType GitterType
Definition: alu3dinclude.hh:200
GitterType::hedge_STI InterfaceType
Definition: alu3dinclude.hh:202
GitterType::Geometric::hedge1_GEO ImplementationType
Definition: alu3dinclude.hh:204
GitterType::vertex_STI InterfaceType
Definition: alu3dinclude.hh:213
GitterType::Geometric::VertexGeo ImplementationType
Definition: alu3dinclude.hh:215
ALU3dBasicImplTraits< Comm >::GitterType GitterType
Definition: alu3dinclude.hh:211
InterfaceType EntitySeedType
Definition: alu3dinclude.hh:214
InterfaceType EntitySeedType
Definition: alu3dinclude.hh:224
GitterType::Geometric::VertexGeo ImplementationType
Definition: alu3dinclude.hh:225
ALU3dBasicImplTraits< Comm >::GitterType GitterType
Definition: alu3dinclude.hh:221
GitterType::vertex_STI InterfaceType
Definition: alu3dinclude.hh:223
Definition: alu3dinclude.hh:230
Definition: alu3dinclude.hh:259
GitterType::Geometric::hasFace3 HasFaceType
Definition: alu3dinclude.hh:273
GitterType::Geometric::Hface3Rule HfaceRuleType
Definition: alu3dinclude.hh:274
ALU3dBasicImplTraits< Comm >::GitterType GitterType
Definition: alu3dinclude.hh:265
ALU3dBasicImplTraits< Comm >::GitterImplType GitterImplType
Definition: alu3dinclude.hh:266
GitterImplType::Objects::tetra_IMPL IMPLElementType
Definition: alu3dinclude.hh:270
GitterType::Geometric::VertexGeo GEOVertexType
Definition: alu3dinclude.hh:269
GitterImplType::Objects::Hbnd3Default BNDFaceType
Definition: alu3dinclude.hh:275
GitterType::Geometric::periodic3_GEO GEOPeriodicType
Definition: alu3dinclude.hh:272
GitterType::Geometric::tetra_GEO GEOElementType
Definition: alu3dinclude.hh:271
GitterType::Geometric::TetraRule MarkRuleType
Definition: alu3dinclude.hh:278
static const GEOFaceType * getFace(const Elem &elem, const int aluFace)
Definition: alu3dinclude.hh:294
GitterType::Geometric::hface3_GEO GEOFaceType
Definition: alu3dinclude.hh:268
std::pair< GEOFaceType *, int > NeighbourFaceType
Definition: alu3dinclude.hh:284
GitterImplType::Objects::hbndseg3_IMPL ImplBndFaceType
Definition: alu3dinclude.hh:276
std::pair< HasFaceType *, int > NeighbourPairType
Definition: alu3dinclude.hh:285
GitterType::Geometric::Hface4Rule HfaceRuleType
Definition: alu3dinclude.hh:313
GitterImplType::Objects::Hbnd4Default BNDFaceType
Definition: alu3dinclude.hh:314
GitterType::Geometric::hface4_GEO GEOFaceType
Definition: alu3dinclude.hh:307
std::pair< HasFaceType *, int > NeighbourPairType
Definition: alu3dinclude.hh:324
GitterType::Geometric::periodic4_GEO GEOPeriodicType
Definition: alu3dinclude.hh:311
GitterType::Geometric::HexaRule MarkRuleType
Definition: alu3dinclude.hh:317
ALU3dBasicImplTraits< Comm >::GitterImplType GitterImplType
Definition: alu3dinclude.hh:305
std::pair< GEOFaceType *, int > NeighbourFaceType
Definition: alu3dinclude.hh:323
GitterImplType::Objects::hexa_IMPL IMPLElementType
Definition: alu3dinclude.hh:309
GitterType::Geometric::VertexGeo GEOVertexType
Definition: alu3dinclude.hh:308
ALU3dBasicImplTraits< Comm >::GitterType GitterType
Definition: alu3dinclude.hh:304
GitterType::Geometric::hexa_GEO GEOElementType
Definition: alu3dinclude.hh:310
GitterImplType::Objects::hbndseg4_IMPL ImplBndFaceType
Definition: alu3dinclude.hh:315
static const GEOFaceType * getFace(const Elem &elem, const int aluFace)
Definition: alu3dinclude.hh:333
GitterType::Geometric::hasFace4 HasFaceType
Definition: alu3dinclude.hh:312
Definition: alu3dinclude.hh:345
std::vector< VertexType * > VertexListType
Definition: alu3dinclude.hh:348
ALU3dGridVertexList()
Definition: alu3dinclude.hh:351
bool up2Date() const
Definition: alu3dinclude.hh:357
void unsetUp2Date()
Definition: alu3dinclude.hh:358
IteratorType begin()
Definition: alu3dinclude.hh:364
IteratorType end()
Definition: alu3dinclude.hh:365
size_t size() const
Definition: alu3dinclude.hh:355
VertexListType & getItemList()
Definition: alu3dinclude.hh:367
void setupVxList(const GridType &grid, int level)
ALU3dBasicImplTraits< Comm >::VertexType VertexType
Definition: alu3dinclude.hh:347
VertexListType::iterator IteratorType
Definition: alu3dinclude.hh:349
Definition: alu3dinclude.hh:381
ALU3dBasicImplTraits< Comm >::VertexType VertexType
Definition: alu3dinclude.hh:383
std::pair< VertexType *, int > ItemType
Definition: alu3dinclude.hh:384
ALU3dGridLeafVertexList()
Definition: alu3dinclude.hh:388
void setupVxList(const GridType &grid)
void unsetUp2Date()
Definition: alu3dinclude.hh:395
IteratorType begin()
Definition: alu3dinclude.hh:401
VertexListType & getItemList()
Definition: alu3dinclude.hh:404
std::vector< ItemType > VertexListType
Definition: alu3dinclude.hh:385
IteratorType end()
Definition: alu3dinclude.hh:402
VertexListType::iterator IteratorType
Definition: alu3dinclude.hh:386
int getLevel(const VertexType &vertex) const
Definition: alu3dinclude.hh:406
bool up2Date() const
Definition: alu3dinclude.hh:394
size_t size() const
Definition: alu3dinclude.hh:392
Definition: alu3dinclude.hh:426
ItemListType ::iterator IteratorType
Definition: alu3dinclude.hh:430
bool up2Date() const
Definition: alu3dinclude.hh:436
ItemListType & getItemList()
Definition: alu3dinclude.hh:444
void markAsUp2Date()
Definition: alu3dinclude.hh:439
IteratorType end()
Definition: alu3dinclude.hh:442
size_t size() const
Definition: alu3dinclude.hh:434
IteratorType begin()
Definition: alu3dinclude.hh:441
ALU3dGridItemList()
Definition: alu3dinclude.hh:432
void unsetUp2Date()
Definition: alu3dinclude.hh:437
std::vector< void * > ItemListType
Definition: alu3dinclude.hh:429
Definition: alu3dinclude.hh:459
static const ALU3dImplTraits< tetra, Comm >::GEOFaceType * getFace(const typename ALU3dImplTraits< tetra, Comm >::GEOElementType &elem, int index)
Definition: alu3dinclude.hh:461
static const ALU3dImplTraits< hexa, Comm >::GEOFaceType * getFace(const typename ALU3dImplTraits< hexa, Comm >::GEOElementType &elem, int index)
Definition: alu3dinclude.hh:468
Definition: topology.hh:40
type of class for specialization of serial ALUGrid (No_Comm as communicator)
Definition: declaration.hh:31
type of class for specialization of parallel ALUGrid (MPI_Comm as communicator)
Definition: declaration.hh:39