Go to the documentation of this file. 1 #ifndef DUNE_ALU3DGRIDGRID_HH
2 #define DUNE_ALU3DGRIDGRID_HH
9 #include <dune/grid/common/capabilities.hh>
11 #include <dune/common/bigunsignedint.hh>
12 #include <dune/common/version.hh>
14 #include <dune/geometry/referenceelements.hh>
16 #include <dune/grid/common/grid.hh>
18 #include <dune/grid/common/sizecache.hh>
20 #include <dune/grid/common/datahandleif.hh>
25 #include <dune/grid/common/boundaryprojection.hh>
40 #include <dune/common/parallel/mpihelper.hh>
42 #if ALU3DGRID_PARALLEL
43 #include <dune/common/parallel/mpicollectivecommunication.hh>
45 #include <dune/common/parallel/collectivecommunication.hh>
51 template<
int cd,
int dim,
class Gr
idImp>
52 class ALU3dGridEntity;
53 template<
int cd, PartitionIteratorType pitype,
class Gr
idImp >
54 class ALU3dGridLevelIterator;
55 template<
int cd,
class Gr
idImp >
56 class ALU3dGridEntityPointerBase;
57 template<
int cd,
class Gr
idImp >
58 class ALU3dGridEntitySeed;
59 template<
int cd,
class Gr
idImp >
60 class ALU3dGridEntityPointer;
61 template<
int mydim,
int coorddim,
class Gr
idImp>
62 class ALU3dGridGeometry;
63 template<
class Gr
idImp>
64 class ALU3dGridHierarchicIterator;
65 template<
class Gr
idImp>
66 class ALU3dGridIntersectionIterator;
67 template<
class Gr
idImp>
69 template<
int codim, PartitionIteratorType pitype,
class Gr
idImp>
71 template <
int mydim,
int coorddim,
class Gr
idImp>
73 template <
class Gr
idImp>
75 template<
int,
int, ALU3dGr
idElementType,
class >
77 template<
int,
int, ALU3dGr
idElementType,
class >
79 template<
int,
int, ALU3dGr
idElementType,
class >
81 template <
class EntityImp>
85 template <
class Gr
idImp,
class GeometryImp,
int nChild>
93 #if ALU3DGRID_PARALLEL
94 template<
int dim,
int dimworld, ALU3dGr
idElementType elType,
class Comm = ALUGr
idMPIComm >
96 #else // #if ALU3DGRID_PARALLEL
97 template<
int dim,
int dimworld, ALU3dGr
idElementType elType,
class Comm = ALUGr
idNoComm >
99 #endif // #else // #if ALU3DGRID_PARALLEL
105 template <
int dim,
int dimw,
class Comm >
111 template <
int dim,
int dimw,
class Comm >
123 template <
class GitterImpl >
125 const bool conformingRefinement )
127 if( grid && conformingRefinement )
129 grid->enableConformingClosure();
130 grid->disableGhostCells();
136 template<
int dim,
int dimworld, ALU3dGr
idElementType elType,
class Comm >
139 template<
int dim,
int dimworld, ALU3dGr
idElementType elType >
156 const bool conformingRefinement )
161 checkForConformingRefinement( grid, conformingRefinement );
166 const bool conformingRefinement )
170 checkForConformingRefinement( grid, conformingRefinement );
180 ALU3DSPACE Gitter::Geometric::BuilderIF* builder =
181 dynamic_cast< ALU3DSPACE Gitter::Geometric::BuilderIF* >( &grid.container() );
183 DUNE_THROW(InvalidStateException,
"dynamic_cast of ALUGrid builder failed");
189 void print( std::ostream& out )
const
195 #if ALU3DGRID_PARALLEL
196 template<
int dim,
int dimworld, ALU3dGr
idElementType elType >
204 typedef ALU3DSPACE GitterDunePll GitterImplType;
206 typedef Dune::CollectiveCommunication< MPI_Comm > CollectiveCommunication;
209 : ccobj_( comm ), mpAccess_( comm )
212 int nlinks ()
const {
return mpAccess_.sendLinks(); }
214 GitterImplType *createALUGrid (
const std::string ¯oName,
ALU3DSPACE ProjectVertex *projection,
215 const bool conformingRefinement )
217 GitterImplType* grid =
new GitterImplType( dim, macroName.c_str(), mpAccess_, projection );
219 checkForConformingRefinement( grid, conformingRefinement );
223 GitterImplType *createALUGrid ( std::istream& stream,
ALU3DSPACE ProjectVertex *projection,
224 const bool conformingRefinement )
226 GitterImplType* grid =
new GitterImplType ( dim, stream, mpAccess_, projection );
228 checkForConformingRefinement( grid, conformingRefinement );
232 static MPI_Comm defaultComm () {
return MPI_COMM_WORLD; }
234 static int getRank ( MPI_Comm comm )
237 MPI_Comm_rank( comm, &rank );
241 void print( std::ostream& out )
const
243 mpAccess_.printLinkage( out );
246 static typename ALU3DSPACE Gitter::Geometric::BuilderIF &getBuilder ( GitterImplType &grid )
248 ALU3DSPACE Gitter::Geometric::BuilderIF* builder =
249 dynamic_cast< ALU3DSPACE Gitter::Geometric::BuilderIF* >( &grid.containerPll() );
251 DUNE_THROW(InvalidStateException,
"dynamic_cast of ALUGrid builder failed");
255 static void completeGrid ( GitterImplType &grid )
258 grid.notifyMacroGridChanges();
260 grid.rebuildGhostCells();
263 CollectiveCommunication ccobj_;
266 #endif // #if ALU3DGRID_PARALLEL
273 template<
int dim, ALU3dGr
idElementType elType,
int codim >
288 template<
int dim, ALU3dGr
idElementType elType >
294 template< ALU3dGr
idElementType elType >
300 template< ALU3dGr
idElementType elType >
306 template<
int dim, ALU3dGr
idElementType elType >
317 template<
int dimG,
int dimW, ALU3dGr
idElementType elType,
class Comm >
320 static const int dim = dimG;
348 typedef Dune::Intersection< const Grid, LeafIntersectionWrapper< const Grid > >
LeafIntersection;
349 typedef Dune::Intersection< const Grid, LevelIntersectionWrapper< const Grid > >
LevelIntersection;
356 typedef Dune::EntityIterator< 0, const Grid, ALU3dGridHierarchicIterator< const Grid > >
HierarchicIterator;
365 typedef typename Twists::Twist
Twist;
374 typedef Dune::Entity< cd, dim, const Grid, ALU3dGridEntity >
Entity;
379 #if DUNE_VERSION_NEWER(DUNE_GRID,2,4)
387 template< PartitionIteratorType pitype >
390 typedef Dune::EntityIterator< cd, const Grid, ALU3dGridLevelIterator< cd, pitype, const Grid > >
LevelIterator;
391 typedef Dune::EntityIterator< cd, const Grid, ALU3dGridLeafIterator< cd, pitype, const Grid > >
LeafIterator;
398 template< PartitionIteratorType pitype >
401 typedef Dune::GridView< ALU3dLevelGridViewTraits< const Grid, pitype > >
LevelGridView;
402 typedef Dune::GridView< ALU3dLeafGridViewTraits< const Grid, pitype > >
LeafGridView;
418 typedef IdSet< Grid, LocalIdSetImp, LocalIdType >
LocalIdSet;
462 template<
int dim,
int dimworld, ALU3dGr
idElementType elType,
class Comm >
464 :
public GridDefaultImplementation< dim, dimworld, alu3d_ctype,
465 ALU3dGridFamily< dim, dimworld, elType, Comm > >,
470 typedef GridDefaultImplementation< dim, dimworld, alu3d_ctype, ALU3dGridFamily< dim, dimworld, elType, Comm > > BaseType;
473 typedef ThisType MyType;
532 template<
int codim >
534 :
public BaseType::template
Codim< codim >
539 typedef typename Twists::Twist
Twist;
543 typedef MakeableInterfaceObject< typename Traits::template Codim< 0 >::Geometry >
GeometryObject;
548 template <PartitionIteratorType pitype>
638 ALU3dGrid (
const std::string ¯oTriangFilename,
648 static inline std::string
name ();
656 template<
int cd, PartitionIteratorType pitype>
661 template<
int cd, PartitionIteratorType pitype>
663 lend (
int level)
const;
675 lend (
int level)
const;
684 getRealImplementation(
entity ),
692 getRealImplementation(
entity ),
700 getRealImplementation(
entity ),
708 getRealImplementation(
entity ),
714 template <
int codim, PartitionIteratorType pitype>
715 typename Traits::template Codim<codim>::template Partition<pitype>::LeafIterator
716 leafbegin(
int level)
const;
719 template <
int codim, PartitionIteratorType pitype>
720 typename Traits::template Codim<codim>::template Partition<pitype>::LeafIterator
721 leafend(
int level)
const;
725 typename Traits::template Codim<codim>::LeafIterator
726 leafbegin(
int level)
const;
730 typename Traits::template Codim<codim>::LeafIterator
731 leafend(
int level)
const;
747 template <
int codim, PartitionIteratorType pitype>
748 typename Traits::template Codim<codim>::template Partition<pitype>::LeafIterator
752 template <
int codim, PartitionIteratorType pitype>
753 typename Traits::template Codim<codim>::template Partition<pitype>::LeafIterator
758 typename Traits::template Codim<codim>::LeafIterator
763 typename Traits::template Codim<codim>::LeafIterator
768 template <
int codim, PartitionIteratorType pitype>
769 typename Traits::template Codim<codim>::template Partition<pitype>::LeafIterator
770 createLeafIteratorBegin (
int level)
const;
773 template <
int codim, PartitionIteratorType pitype>
774 typename Traits::template Codim<codim>::template Partition<pitype>::LeafIterator
775 createLeafIteratorEnd(
int level)
const;
779 int size (
int level,
int cd)
const;
782 int size (
int codim)
const;
785 int size (
int level, GeometryType type)
const;
791 int size (GeometryType type)
const;
810 template<PartitionIteratorType pitype>
825 template<PartitionIteratorType pitype>
826 DUNE_DEPRECATED_MSG(
"macroView is deprecated, use macroGridView")
834 DUNE_DEPRECATED_MSG(
"macroView is deprecated, use macroGridView")
878 return std::shared_ptr< LevelIndexSetImp > (
new LevelIndexSetImp( *
this, lbegin< 0 >( level ), lend< 0 >( level ), level ) );
886 assert( elType ==
tetra ? type.isSimplex() : type.isCube() );
939 template<
class DataHandleImpl,
class Data >
940 bool loadBalance ( CommDataHandleIF< DataHandleImpl, Data > &dataHandleIF )
942 typedef ALU3DSPACE GatherScatterLoadBalanceDataHandle
944 DataHandleType dataHandle( *
this, dataHandleIF );
959 template<
class LBWeights,
class DataHandleImpl,
class Data >
961 CommDataHandleIF< DataHandleImpl, Data > &dataHandleIF )
963 typedef ALU3DSPACE GatherScatterLoadBalanceDataHandle
964 <
ThisType, LBWeights, DataHandleImpl, Data,
false > DataHandleType;
965 DataHandleType dataHandle( *
this, dataHandleIF, weights );
978 template<
class LBWeights >
979 typename std::enable_if< !IsDataHandle< LBWeights >::value,
bool >::type
loadBalance ( LBWeights &weights )
981 typedef ALU3DSPACE GatherScatterLoadBalance < ThisType, LBWeights, false > LoadBalanceHandleType;
982 LoadBalanceHandleType loadBalanceHandle( *
this, weights );
994 template<
class LBDestinations >
997 typedef ALU3DSPACE GatherScatterLoadBalance< ThisType, LBDestinations, true > LoadBalanceHandleType ;
998 LoadBalanceHandleType loadBalanceHandle( *
this, destinations );
1012 template<
class LBDestinations,
class DataHandleImpl,
class Data >
1014 CommDataHandleIF< DataHandleImpl, Data > &dataHandleIF )
1016 typedef ALU3DSPACE GatherScatterLoadBalanceDataHandle< ThisType, LBDestinations, DataHandleImpl, Data, true > DataHandleType;
1017 DataHandleType dataHandle( *
this, dataHandleIF, destinations );
1025 int ghostSize (
int level,
int codim)
const;
1037 template<
class DataHandle,
class Data >
1039 InterfaceType iftype,
1040 CommunicationDirection dir,
1049 template<
class DataHandle,
class Data >
1051 InterfaceType iftype,
1052 CommunicationDirection dir )
const
1081 template<
class Gr
idImp,
class DataHandle >
1082 bool adapt ( AdaptDataHandleInterface< GridImp, DataHandle > &handle );
1087 template<
class Gr
idImp,
class DataHandle >
1088 void globalRefine (
int refCount, AdaptDataHandleInterface< GridImp, DataHandle > &handle );
1095 bool writeMacroGrid(
const std::string path,
const std::string filename,
1096 const ALU3DSPACE MacroFileHeader::Format format =
ALU3DSPACE MacroFileHeader::defaultFormat )
const ;
1099 void backup( std::ostream&,
const ALU3DSPACE MacroFileHeader::Format format )
const ;
1102 void restore( std::istream& ) ;
1111 bool mark(
int refCount ,
const typename Traits::template Codim<0>::Entity & e);
1114 int getMark(
const typename Traits::template Codim<0>::Entity & e)
const;
1119 return Communications::defaultComm();
1122 using BaseType :: getRealImplementation ;
1124 template<
class IntersectionType >
1125 static const typename BaseType
1126 :: template ReturnImplementationType< IntersectionType >
1127 :: ImplementationType &
1130 return getRealImplementation( intersection );
1158 return Communications::getBuilder(
myGrid() );
1164 Communications::completeGrid(
myGrid() );
1171 return ( elType ==
tetra ) ?
1176 template <
class EntitySeed >
1177 typename Traits :: template Codim< EntitySeed :: codimension > :: EntityPointer
1180 enum { codim = EntitySeed :: codimension };
1184 template <
class EntitySeed >
1185 typename Traits :: template Codim< EntitySeed :: codimension > :: Entity
1246 const ThisType &
operator= (
const ThisType & );
1275 return (*
bndVec_)[ segmentIndex ];
1298 return comm().size() > 1 &&
myGrid().ghostCellsEnabled();
1314 mutable std::unique_ptr< GitterImplType >
mygrid_;
1364 std::unique_ptr< const DuneBoundaryProjectionVector >
bndVec_;
1378 const std::string filename );
1381 namespace Capabilities
1384 template<
int dim,
int dimworld, ALU3dGr
idElementType elType,
class Comm,
int cdim >
1387 static const bool v =
true;
1390 #if !DUNE_VERSION_NEWER(DUNE_GRID,3,0)
1391 template<
int dim,
int dimworld, ALU3dGr
idElementType elType,
class Comm >
1392 struct isParallel<
ALU3dGrid< dim, dimworld, elType, Comm > >
1394 static const bool v =
true;
1396 #endif //#if !DUNE_VERSION_NEWER(DUNE_GRID,3,0)
1398 template<
int dim,
int dimworld, ALU3dGr
idElementType elType,
class Comm >
1399 struct isLevelwiseConforming<
ALU3dGrid< dim, dimworld, elType, Comm > >
1401 static const bool v =
true;
1404 template<
int dim,
int dimworld, ALU3dGr
idElementType elType,
class Comm >
1405 struct hasBackupRestoreFacilities<
ALU3dGrid< dim, dimworld, elType, Comm > >
1407 static const bool v =
true;
1415 #if COMPILE_ALUGRID_INLINE
Traits::LeafIntersectionIterator ileafbegin(const typename Traits::template Codim< 0 >::Entity &entity) const
Definition: 3d/grid.hh:681
virtual void completeGrid()
Definition: 3d/grid.hh:1162
void print(std::ostream &out) const
Definition: 3d/grid.hh:189
Definition: alu3dinclude.hh:425
bool mark(int refCount, const typename Traits::template Codim< 0 >::Entity &e)
Definition: grid_inline.hh:307
Dune::Geometry< dim-cd, dim, const Grid, ALU3dGridGeometry > LocalGeometry
Definition: 3d/grid.hh:371
Definition: 3d/grid.hh:399
Definition: 3d/grid.hh:68
Traits::template Codim< 0 >::LeafIterator LeafIterator
Definition: 3d/grid.hh:608
ALU3dGridHierarchicIterator< const ThisType > HierarchicIteratorImp
Definition: 3d/grid.hh:610
ALU3dGrid< dim, dimw, tetra, Comm > BaseGrid
Definition: 3d/grid.hh:114
bool loadBalance()
Calculates load of each process and repartition by using ALUGrid's default partitioning method....
Definition: 3d/grid.hh:928
Definition: 3d/grid.hh:338
GitterImplType * createALUGrid(const std::string ¯oName, ALU3DSPACE ProjectVertex *projection, const bool conformingRefinement)
Definition: 3d/grid.hh:155
ALUGridVertexProjectionType * vertexProjection()
Definition: 3d/grid.hh:1153
ALU3dGridFamily< dim, dimworld, elType, Comm > GridFamily
Definition: 3d/grid.hh:526
Definition: twists.hh:586
int refineMarked_
Definition: 3d/grid.hh:1321
LeafVertexListType & getLeafVertexList() const
Definition: 3d/grid.hh:1195
static const ALU3dGridElementType elementType
Definition: 3d/grid.hh:520
GridFamily::Traits::template Partition< pitype >::MacroGridView MacroGridView
Definition: 3d/grid.hh:556
ALU3dGridTwists< dim, elType, cd >::Type Twists
Definition: 3d/grid.hh:364
Definition: alu3dinclude.hh:344
Traits::DuneBoundaryProjectionVector DuneBoundaryProjectionVector
boundary projection type
Definition: 3d/grid.hh:577
ALU3dGridGeometry< dim-cd, dim, const Grid > LocalGeometryImpl
Definition: 3d/grid.hh:369
ALU3dGrid(const std::string ¯oTriangFilename, const MPICommunicatorType mpiComm, const DuneBoundaryProjectionType *bndPrj, const DuneBoundaryProjectionVector *bndVec, const ALUGridRefinementType refinementType)
Definition: grid_inline.hh:22
void clearIsNewMarkers()
clear all entity new markers
Definition: grid_imp.cc:491
SizeCache< MyType > SizeCacheType
Definition: 3d/grid.hh:1354
void calcExtras()
reset size and global size, update Level- and LeafIndexSet, if they exist
Definition: grid_imp.cc:344
Partition< All_Partition >::LevelGridView LevelGridView
Definition: 3d/grid.hh:408
Definition: communication.hh:29
ALUGridBoundaryProjection< ThisType, alu3d_ctype > ALUGridBoundaryProjectionType
Definition: 3d/grid.hh:591
Definition: 3d/grid.hh:121
if one element is refined then it causes apporximately not more than this number of new elements
Definition: 3d/grid.hh:624
Definition: topology.hh:12
void setupVxList(const GridType &grid, int level)
Definition: macrogridview.hh:17
Definition: twists.hh:432
LeafVertexListType leafVertexList_
Definition: 3d/grid.hh:1351
ALU3DSPACE ProjectVertex ALUGridVertexProjectionType
type of ALUGrid Vertex Projection Interface
Definition: 3d/grid.hh:580
std::unique_ptr< LeafIndexSetImp > leafIndexSet_
Definition: 3d/grid.hh:1340
void checkMacroGrid()
check whether macro grid has the right element type
Definition: grid_imp.cc:644
Class that wraps IntersectionIteratorImp of a grid and gets it's internal object from a object stack ...
Definition: intersectioniteratorwrapper.hh:329
DefaultIndexSet creates an index set by using the grids persistent container an a given pair of itera...
Definition: defaultindexsets.hh:64
ALU3dGridEntity< cd, dim, const Grid > EntityImp
Definition: 3d/grid.hh:373
static const int dim
Definition: 3d/grid.hh:320
static int maxThreads()
return max number of threads
Definition: 3d/grid.hh:1305
Partition< All_Partition >::MacroGridView MacroGridView
Definition: 3d/grid.hh:561
Definition: 3d/grid.hh:388
const ALUGridRefinementType refinementType_
Definition: 3d/grid.hh:1373
ReferenceElement< alu3d_ctype, dimension > ReferenceElementType
reference element type
Definition: 3d/grid.hh:572
Dune::EntityIterator< 0, const Grid, ALU3dGridHierarchicIterator< const Grid > > HierarchicIterator
Definition: 3d/grid.hh:356
ALU3dGridEntitySeed< cd, const Grid > EntitySeed
Definition: 3d/grid.hh:377
MacroGridView macroGridView() const
View for te macro grid with some alu specific methods (All_Partition)
Definition: 3d/grid.hh:818
Provides default index set implementations for Level- and LeafIndexsets used by ALUGrid.
const std::vector< GeometryType > & geomTypes(int codim) const
deliver all geometry types used in this grid
Definition: 3d/grid.hh:1134
GridFamily::GridImp Grid
Definition: 3d/grid.hh:346
ALU3dGridCommunications(ALUGridNoComm comm)
Definition: 3d/grid.hh:151
int maxLevel() const
Return maximum level defined in this grid. Levels are numbered maxLevel with 0 the coarsest level.
Definition: grid_inline.hh:108
virtual ~ALU3dGrid()
Desctructor.
Definition: grid_imp.cc:203
Partition< pitype >::MacroGridView macroGridView() const
View for te macro grid with some alu specific methods.
Definition: 3d/grid.hh:811
std::vector< const DuneBoundaryProjectionType * > DuneBoundaryProjectionVector
Definition: 3d/grid.hh:359
Definition: alu3dinclude.hh:259
bool checkMacroGrid(ALU3dGridElementType elType, const std::string filename)
Definition: 3d/grid.hh:82
normal default number of new elements for new adapt method
Definition: 3d/grid.hh:617
IdSet< Grid, LocalIdSetImp, LocalIdType > LocalIdSet
Definition: 3d/grid.hh:418
ALUGridRefinementType
available refinement types for ALUGrid
Definition: declaration.hh:23
static ALU3DSPACE Gitter::Geometric::BuilderIF & getBuilder(GitterImplType &grid)
Definition: 3d/grid.hh:178
Definition: intersectioniteratorwrapper.hh:224
std::shared_ptr< LevelIndexSetImp > createLevelIndexSet(int level) const
Definition: 3d/grid.hh:876
int size(int level, int cd) const
number of grid entities per level and codim
Definition: grid_imp.cc:218
GitterImplType * createALUGrid(std::istream &stream, ALU3DSPACE ProjectVertex *projection, const bool conformingRefinement)
Definition: 3d/grid.hh:165
int maxlevel_
Definition: 3d/grid.hh:1317
Traits::LocalIdSet LocalIdSet
Type of the local id set.
Definition: 3d/grid.hh:603
Partition< All_Partition >::LevelIterator LevelIterator
Definition: 3d/grid.hh:394
Traits::LeafIntersectionIterator ileafend(const typename Traits::template Codim< 0 >::Entity &entity) const
Definition: 3d/grid.hh:689
Definition: topology.hh:12
Dune::EntityIterator< cd, const Grid, ALU3dGridLevelIterator< cd, pitype, const Grid > > LevelIterator
Definition: 3d/grid.hh:390
ALU3DSPACE GatherScatter GatherScatterType
Definition: 3d/grid.hh:891
Dune::Intersection< const Grid, LevelIntersectionWrapper< const Grid > > LevelIntersection
Definition: 3d/grid.hh:349
ALU3dGridCommunications< dim, dimworld, elType, Comm >::CollectiveCommunication CollectiveCommunication
Type of the communication class.
Definition: 3d/grid.hh:422
Definition: communication.hh:26
Traits ::LeafIndexSetImp LeafIndexSetImp
Type of the leaf index set implementation.
Definition: 3d/grid.hh:429
ALU3dGridLocalIdSet< dim, dimworld, elType, ALUGridNoComm > GlobalIdSet
Definition: 3d/grid.hh:144
GridFamily::LeafIndexSetImp LeafIndexSetImp
Type of the leaf index set, needed by data handle.
Definition: 3d/grid.hh:569
static std::string name()
for grid identification
Definition: grid_inline.hh:443
static const int dimension
Definition: 3d/grid.hh:529
std::vector< ALU3dGridItemListType > ghostLevelList_[3]
Definition: 3d/grid.hh:1347
GridFamily::LevelIndexSetImp LevelIndexSetImp
Type of the level index set, needed by data handle.
Definition: 3d/grid.hh:567
bool repartition(LBDestinations &destinations)
Distribute the grid based on a user defined partitioning.
Definition: 3d/grid.hh:995
ALU3dGridIntersectionIterator< const ThisType > IntersectionIteratorImp
Definition: 3d/grid.hh:503
virtual ALU3DSPACE Gitter::Geometric::BuilderIF & getBuilder() const
Definition: 3d/grid.hh:1156
std::vector< ALU3dGridItemListType > levelEdgeList_
Definition: 3d/grid.hh:1349
Definition: 3d/grid.hh:533
Definition: 3d/grid.hh:72
Definition: entityseed.hh:11
int ghostSize(int level, int codim) const
ghostSize is one for codim 0 and zero otherwise for this grid
Definition: grid_imp.cc:294
Partition< All_Partition >::LevelGridView LevelGridView
View types for All_Partition.
Definition: 3d/grid.hh:559
ALU3dGridItemListType & getGhostLeafList(int codim) const
Definition: 3d/grid.hh:1216
Definition: 3d/grid.hh:86
Partition< All_Partition >::LeafGridView LeafGridView
Definition: 3d/grid.hh:407
Leaf iterator.
Definition: entity.hh:34
Tagging interface to indicate that Grid provides typedef ObjectStreamType.
Definition: interfaces.hh:14
type of class for specialization of serial ALUGrid (No_Comm as communicator)
Definition: declaration.hh:30
ALU3dGridIntersectionIterator< const ThisType > LeafIntersectionIteratorImp
Definition: 3d/grid.hh:505
static void completeGrid(GitterImplType &grid)
Definition: 3d/grid.hh:187
Provides a Interfaces for detection of specific behavior.
Traits ::template Codim< EntitySeed ::codimension >::Entity entity(const EntitySeed &seed) const
Definition: 3d/grid.hh:1186
Definition: 3d/grid.hh:274
Class that wraps IntersectionIteratorImp of a grid and gets it's internal object from a object stack ...
Definition: intersectioniteratorwrapper.hh:25
void calcMaxLevel()
calculate maxlevel
Definition: grid_imp.cc:311
Comm MPICommunicatorType
Definition: 3d/grid.hh:627
GridFamily::Traits::template Partition< pitype >::LeafGridView LeafGridView
Definition: 3d/grid.hh:554
Traits ::LevelIndexSetImp LevelIndexSetImp
Type of the level index set implementation.
Definition: 3d/grid.hh:426
LeafCommunication communicate(CommDataHandleIF< DataHandle, Data > &data, InterfaceType iftype, CommunicationDirection dir) const
Communicate information on distributed entities on the leaf grid. Template parameter is a model of Du...
Definition: 3d/grid.hh:1050
void postAdapt()
clear all entity new markers if lockPostAdapt_ is set
Definition: grid_imp.cc:533
int overlapSize(int level, int codim) const
overlapSize is zero for this grid
Definition: 3d/grid.hh:1028
int LocalIdType
type of ALU3dGrids local id
Definition: 3d/grid.hh:336
Traits::template Codim< codim >::EntityPointerImpl EntityPointerImpl
Definition: 3d/grid.hh:537
ALULeafCommunication< dim, dimworld, elType, Comm > LeafCommunication
Definition: 3d/grid.hh:585
bool up2Date() const
Definition: alu3dinclude.hh:357
Dune::IntersectionIterator< const Grid, LeafIntersectionIteratorWrapper< const Grid >, LeafIntersectionWrapper< const Grid > > LeafIntersectionIterator
Definition: 3d/grid.hh:353
TrivialTwists< GenericGeometry::CubeTopology< dim >::type::id, dim > Type
Definition: 3d/grid.hh:285
use only simplex elements (i.e., triangles or tetrahedra)
Definition: declaration.hh:18
double alu3d_ctype
Definition: alu3dinclude.hh:85
Definition: 3d/grid.hh:76
std::unique_ptr< ALUGridBoundaryProjectionType > vertexProjection_
Definition: 3d/grid.hh:1367
static const ReferenceElementType & referenceElement()
return reference to Dune reference element according to elType
Definition: 3d/grid.hh:1169
const CollectiveCommunication & comm() const
Definition: 3d/grid.hh:1066
Traits::DuneBoundaryProjectionType DuneBoundaryProjectionType
boundary projection type
Definition: 3d/grid.hh:575
Partition< All_Partition >::MacroGridView MacroGridView
Definition: 3d/grid.hh:406
ALU3dGridFamily< dim, dimworld, elType, Comm > GridFamily
Definition: 3d/grid.hh:324
LevelCommunication communicate(CommDataHandleIF< DataHandle, Data > &data, InterfaceType iftype, CommunicationDirection dir, int level) const
Definition: 3d/grid.hh:1038
Definition: 3d/grid.hh:1324
bool conformingRefinement() const
Definition: 3d/grid.hh:1290
std::shared_ptr< LevelIndexSetImp > accessLevelIndexSet(int level) const
return instance of level index set
Definition: 3d/grid.hh:862
static const int dimworld
Definition: 3d/grid.hh:321
const Traits ::LevelIndexSet & levelIndexSet(int level) const
get level index set of the grid
Definition: 3d/grid.hh:848
GridFamily::LocalIdSetImp LocalIdSetImp
Type of the local id set.
Definition: 3d/grid.hh:594
Traits::LevelIntersectionIterator ilevelbegin(const typename Traits::template Codim< 0 >::Entity &entity) const
Definition: 3d/grid.hh:697
Dune::GridView< ALU3dLevelGridViewTraits< const Grid, pitype > > LevelGridView
Definition: 3d/grid.hh:401
const DuneBoundaryProjectionType * boundaryProjection(const int segmentIndex) const
return boudanry projection for given segment Id
Definition: 3d/grid.hh:1264
Dune::Entity< cd, dim, const Grid, ALU3dGridEntity > Entity
Definition: 3d/grid.hh:374
DefaultIndexSet< GridImp, typename Codim< 0 >::LevelIterator > LevelIndexSetImp
Type of the level index set.
Definition: 3d/grid.hh:411
const LocalIdSet & localIdSet() const
get global id set of grid
Definition: 3d/grid.hh:842
IndexSet< Grid, LevelIndexSetImp > LevelIndexSet
Definition: 3d/grid.hh:416
const HierarchicIndexSet & hierarchicIndexSet() const
Definition: 3d/grid.hh:1105
TrivialTwists< 0u, 0 > Type
Definition: 3d/grid.hh:303
void globalRefine(int refCount)
uses the interface, mark on entity and refineLocal
Definition: grid_imp.cc:418
Definition: 3d/grid.hh:137
Dune::EntityPointer< const Grid, EntityPointerImpl > EntityPointer
Definition: 3d/grid.hh:384
int overlapSize(int codim) const
overlapSize is zero for this grid
Definition: 3d/grid.hh:1034
Traits::template Codim< 0 >::LeafIterator LeafIteratorType
Definition: 3d/grid.hh:607
Codim< cd >::Twists twists(GeometryType type) const
Definition: 3d/grid.hh:883
void recalcGlobalSize()
make grid walkthrough and calc global size
#define alugrid_assert(EX)
Definition: alugrid_assert.hh:20
static const BaseType ::template ReturnImplementationType< IntersectionType >::ImplementationType & getRealIntersection(const IntersectionType &intersection)
Definition: 3d/grid.hh:1128
ALUTwists< 2, 1 > Type
Definition: 3d/grid.hh:297
use only cube elements (i.e., quadrilaterals or hexahedra)
Definition: declaration.hh:19
bool adapt()
Definition: grid_imp.cc:443
bool lockPostAdapt_
Definition: 3d/grid.hh:1358
void finalizeGridCreation()
Definition: grid_inline.hh:425
const DuneBoundaryProjectionType * bndPrj_
Definition: 3d/grid.hh:1361
ALU3dGridItemListType ghostLeafList_[3]
Definition: 3d/grid.hh:1346
Dune::Geometry< dim-cd, dimworld, const Grid, ALU3dGridGeometry > Geometry
Definition: 3d/grid.hh:370
ALU3dGridVertexList< Comm > VertexListType
Definition: 3d/grid.hh:632
MakeableInterfaceObject< typename Traits::template Codim< 0 >::Geometry > GeometryObject
Definition: 3d/grid.hh:543
Traits::template Codim< codim >::EntityImp EntityImp
Definition: 3d/grid.hh:536
Definition: alu3dinclude.hh:380
static const int dimensionworld
Definition: 3d/grid.hh:530
Definition: declaration.hh:78
DefaultIndexSet< GridImp, typename Codim< 0 >::LeafIterator > LeafIndexSetImp
Type of the leaf index set.
Definition: 3d/grid.hh:414
int hierSetSize(int cd) const
Definition: grid_inline.hh:100
Factory class for ALUGrids.
Definition: 3d/grid.hh:84
ALU3dGridCommunications< dim, dimworld, elType, Comm >::GlobalId GlobalIdType
type of ALU3dGrids global id
Definition: 3d/grid.hh:333
int coarsenMarked_
Definition: 3d/grid.hh:1320
const GlobalIdSet & globalIdSet() const
get global id set of grid
Definition: 3d/grid.hh:800
[ provides Dune::Grid ]
Definition: communication.hh:37
bool loadBalance(CommDataHandleIF< DataHandleImpl, Data > &dataHandleIF)
Calculates load of each process and repartition by using ALUGrid's default partitioning method....
Definition: 3d/grid.hh:940
ALU3dGridCommunications< dim, dimworld, elType, Comm >::GlobalIdSet GlobalIdSetImp
Type of the global id set.
Definition: 3d/grid.hh:330
ALU3dImplTraits< elType, Comm >::GitterImplType GitterImplType
Definition: 3d/grid.hh:612
Definition: 3d/grid.hh:318
void restore(std::istream &)
restore from istream
Definition: grid_imp.cc:577
LocalIdSetImp localIdSet_
Definition: 3d/grid.hh:1334
ALU3dGridLevelIntersectionIterator< const ThisType > LevelIntersectionIteratorImp
Definition: 3d/grid.hh:507
GridFamily::Traits Traits
Definition: 3d/grid.hh:527
bool up2Date() const
Definition: alu3dinclude.hh:394
Traits ::template Codim< EntitySeed ::codimension >::EntityPointer entityPointer(const EntitySeed &seed) const
Definition: 3d/grid.hh:1178
std::unique_ptr< Communications > communications_
Definition: 3d/grid.hh:1370
std::vector< VertexListType > vertexList_
Definition: 3d/grid.hh:1342
std::unique_ptr< const DuneBoundaryProjectionVector > bndVec_
Definition: 3d/grid.hh:1364
#define ALU3DSPACE
Definition: alu3dinclude.hh:24
LevelIntersectionIteratorWrapper< const ThisType > LvlInterItWrapperType
Definition: 3d/grid.hh:678
Dune::MacroGridView< const Grid, pitype > MacroGridView
Definition: 3d/grid.hh:403
TrivialTwists< GenericGeometry::SimplexTopology< dim >::type::id, dim > Type
Definition: 3d/grid.hh:279
Traits::template Codim< cd >::template Partition< pitype >::LevelIterator lbegin(int level) const
Iterator to first entity of given codim on level.
Definition: grid_inline.hh:127
size_t numBoundarySegments() const
number of boundary segments
Definition: grid_imp.cc:232
ALULevelCommunication< dim, dimworld, elType, Comm > LevelCommunication
Definition: 3d/grid.hh:586
use conforming bisection refinement
Definition: declaration.hh:25
static MPICommunicatorType defaultCommunicator()
Definition: 3d/grid.hh:1117
LeafIntersectionIteratorWrapper< const ThisType > LefInterItWrapperType
Definition: 3d/grid.hh:677
Partition< All_Partition >::LeafGridView LeafGridView
Definition: 3d/grid.hh:560
void setupVxList(const GridType &grid)
CollectiveCommunication ccobj_
Definition: 3d/grid.hh:192
hierarchic index set of ALU3dGrid
Definition: 3d/grid.hh:80
DuneBoundaryProjection< dimworld > DuneBoundaryProjectionType
Definition: 3d/grid.hh:358
IdSet< Grid, GlobalIdSetImp, GlobalIdType > GlobalIdSet
Definition: 3d/grid.hh:419
const ThisType & operator=(const ThisType &)
assignment operator should not be used
Definition: grid_imp.cc:194
TrivialTwists< 0u, 0 > Type
Definition: 3d/grid.hh:309
Types for GridView.
Definition: 3d/grid.hh:549
Definition: 3d/grid.hh:74
GridFamily::Traits::template Partition< pitype >::LevelGridView LevelGridView
Definition: 3d/grid.hh:552
GitterImplType & myGrid() const
Definition: grid_inline.hh:116
ALU3dGridHierarchicIndexSet< dim, dimworld, elType, Comm > HierarchicIndexSet
Type of the hierarchic index set.
Definition: 3d/grid.hh:564
ALU3dGridElementType
Definition: topology.hh:12
ObjectStreamType OutStreamType
Definition: 3d/grid.hh:524
int nlinks() const
Definition: 3d/grid.hh:1193
Class that wraps IntersectionIteratorImp of a grid and gets it's internal object from a object stack ...
Definition: intersectioniteratorwrapper.hh:250
IndexSet< Grid, LeafIndexSetImp > LeafIndexSet
Definition: 3d/grid.hh:417
void checkMacroGridFile(const std::string filename)
check whether macro grid format is of our type
Definition: grid_imp.cc:605
ALU3DSPACE GitterDuneImpl GitterImplType
Definition: 3d/grid.hh:147
Dune::EntityIterator< cd, const Grid, ALU3dGridLeafIterator< cd, pitype, const Grid > > LeafIterator
Definition: 3d/grid.hh:391
type of class for specialization of parallel ALUGrid (MPI_Comm as communicator)
Definition: declaration.hh:39
Definition: 3d/grid.hh:362
ALU3dGrid< dim, dimworld, elType, Comm > GridImp
Definition: 3d/grid.hh:323
ALUGrid boundary projection implementation DuneBndProjection has to fulfil the DuneBoundaryProjection...
Definition: bndprojection.hh:9
static int getRank(ALUGridNoComm comm)
Definition: 3d/grid.hh:176
Definition: indexsets.hh:172
int getMark(const typename Traits::template Codim< 0 >::Entity &e) const
Definition: grid_inline.hh:322
ObjectStreamType InStreamType
Definition: 3d/grid.hh:523
ALU3dGridLeafIterator< 0, All_Partition, const ThisType > LeafIteratorImp
Definition: 3d/grid.hh:606
bool repartition(LBDestinations &destinations, CommDataHandleIF< DataHandleImpl, Data > &dataHandleIF)
Distribute the grid based on a user defined partitioning.
Definition: 3d/grid.hh:1013
GridFamily::LocalIdType LocalIdType
type of ALU3dGrids local id
Definition: 3d/grid.hh:341
bool ghostCellsEnabled() const
Definition: 3d/grid.hh:1296
std::unique_ptr< GitterImplType > mygrid_
Definition: 3d/grid.hh:1314
const char * elType2Name(ALU3dGridElementType elType)
Definition: grid_imp.cc:664
virtual GitterImplType * createALUGrid(std::istream &stream)
Definition: 3d/grid.hh:1147
int nlinks() const
Definition: 3d/grid.hh:153
Dune::IntersectionIterator< const Grid, LevelIntersectionIteratorWrapper< const Grid >, LevelIntersectionWrapper< const Grid > > LevelIntersectionIterator
Definition: 3d/grid.hh:354
GridFamily::GlobalIdSetImp GlobalIdSetImp
Definition: 3d/grid.hh:596
void updateStatus()
Definition: grid_imp.cc:302
ALU3dGridEntityPointer< cd, const Grid > EntityPointerImpl
Definition: 3d/grid.hh:383
Traits::template Codim< cd >::template Partition< pitype >::LevelIterator lend(int level) const
one past the end on this level
Definition: grid_inline.hh:141
ALUTwists< dim==2 ? 2 :ElementTopologyMapping< elType >::numVerticesPerFace, dim-1 > Type
Definition: 3d/grid.hh:291
virtual GitterImplType * createALUGrid(const std::string ¯oName)
Definition: 3d/grid.hh:1141
std::enable_if< !IsDataHandle< LBWeights >::value, bool >::type loadBalance(LBWeights &weights)
Calculates load of each process and repartition by using ALUGrid's default partitioning method,...
Definition: 3d/grid.hh:979
Twists::Twist Twist
Definition: 3d/grid.hh:539
Dune::Intersection< const Grid, LeafIntersectionWrapper< const Grid > > LeafIntersection
Definition: 3d/grid.hh:348
static ALUGridNoComm defaultComm()
Definition: 3d/grid.hh:174
Dune::IntersectionIterator< const Grid, LeafIntersectionIteratorWrapper< const Grid >, LeafIntersectionWrapper< const Grid > > IntersectionIterator
Definition: 3d/grid.hh:351
std::unique_ptr< SizeCacheType > sizeCache_
Definition: 3d/grid.hh:1355
hierarchic index set of ALU3dGrid
Definition: 3d/grid.hh:78
HierarchicIndexSet hIndexSet_
Definition: 3d/grid.hh:1328
ALU3dGrid< dim, dimw, hexa, Comm > BaseGrid
Definition: 3d/grid.hh:108
int GlobalId
Definition: 3d/grid.hh:145
Class that wraps IntersectionIteratorImp of a grid and gets it's internal object from a object stack ...
Definition: intersectioniteratorwrapper.hh:354
ALU3dGridItemListType & getEdgeList(int level) const
Definition: 3d/grid.hh:1234
void makeGeometries()
Definition: grid_inline.hh:65
Traits::template Codim< codim >::Twists Twists
Definition: 3d/grid.hh:538
bool writeMacroGrid(const std::string path, const std::string filename, const ALU3DSPACE MacroFileHeader::Format format=ALU3DSPACE MacroFileHeader::defaultFormat) const
write macro grid in ALUGrid macro format to path/filename.rank
Definition: grid_imp.cc:547
Traits::CollectiveCommunication CollectiveCommunication
type of collective communication object
Definition: 3d/grid.hh:583
std::unique_ptr< GlobalIdSetImp > globalIdSet_
Definition: 3d/grid.hh:1331
Partition< All_Partition >::LeafIterator LeafIterator
Definition: 3d/grid.hh:395
Traits::GlobalIdSet GlobalIdSet
Type of the global id set.
Definition: 3d/grid.hh:600
const Communications & communications() const
Definition: 3d/grid.hh:1279
Partition< pitype >::MacroGridView macroView() const
View for te macro grid with some alu specific methods.
Definition: 3d/grid.hh:827
bool loadBalance(LBWeights &weights, CommDataHandleIF< DataHandleImpl, Data > &dataHandleIF)
Calculates load of each process and repartition by using ALUGrid's default partitioning method,...
Definition: 3d/grid.hh:960
Definition: 3d/grid.hh:518
ALU3dGridCommunications< dim, dimworld, elType, Comm > Communications
Definition: 3d/grid.hh:629
Twists::Twist Twist
Definition: 3d/grid.hh:365
ALU3dGridLocalIdSet< dim, dimworld, elType, Comm > LocalIdSetImp
Type of the local id set.
Definition: 3d/grid.hh:327
Dune::GridView< ALU3dLeafGridViewTraits< const Grid, pitype > > LeafGridView
Definition: 3d/grid.hh:402
std::vector< std::shared_ptr< LevelIndexSetImp > > levelIndexVec_
Definition: 3d/grid.hh:1337
int getLevel(const VertexType &vertex) const
Definition: alu3dinclude.hh:406
ALU3dGridItemListType & getGhostLevelList(int codim, int level) const
Definition: 3d/grid.hh:1223
Definition: alu3dinclude.hh:79
GridFamily::GlobalIdType GlobalIdType
type of ALU3dGrids global id
Definition: 3d/grid.hh:344
VertexListType & getVertexList(int level) const
Definition: 3d/grid.hh:1207
ALU3dGridGeometry< dim-cd, dimworld, const Grid > GeometryImpl
Definition: 3d/grid.hh:368
int getLevelOfLeafVertex(const typename ALU3dImplTraits< elType, Comm >::VertexType &vertex) const
Definition: 3d/grid.hh:1201
void backup(std::ostream &, const ALU3DSPACE MacroFileHeader::Format format) const
backup to ostream
Definition: grid_imp.cc:569
bool preAdapt()
returns if a least one entity was marked for coarsening
Definition: grid_imp.cc:434
static int thread()
return current thread number
Definition: 3d/grid.hh:1302
Definition: entity.hh:457
Tagging interface to indicate that Grid has HierarchicIndexSet.
Definition: interfaces.hh:49
std::vector< std::vector< GeometryType > > geomTypes_
Definition: 3d/grid.hh:1325
Dune::CollectiveCommunication< No_Comm > CollectiveCommunication
Definition: 3d/grid.hh:149
ALU3dGridLeafVertexList< Comm > LeafVertexListType
Definition: 3d/grid.hh:633
Traits::LevelIntersectionIterator ilevelend(const typename Traits::template Codim< 0 >::Entity &entity) const
Definition: 3d/grid.hh:705
void checkForConformingRefinement(GitterImpl *grid, const bool conformingRefinement)
Definition: 3d/grid.hh:124
const Traits ::LeafIndexSet & leafIndexSet() const
get leaf index set of the grid
Definition: grid_imp.cc:403
ALU3DSPACE GatherScatterType::ObjectStreamType ObjectStreamType
Definition: 3d/grid.hh:522
int global_size(int cd) const
number of grid entities on all levels for given codim
Definition: grid_inline.hh:90
Provides proxy classes for IntersectionsIterators.