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>
68 class ALU3dGridLevelIntersectionIterator;
69 template<
int codim, PartitionIteratorType pitype,
class Gr
idImp>
70 class ALU3dGridLeafIterator;
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 >
83 template <
class Gr
idImp,
class GeometryImp,
int nChild>
91 #if ALU3DGRID_PARALLEL
92 template<
int dim,
int dimworld, ALU3dGr
idElementType elType,
class Comm = ALUGr
idMPIComm >
95 template<
int dim,
int dimworld, ALU3dGr
idElementType elType,
class Comm = ALUGr
idNoComm >
103 template <
int dim,
int dimw,
class Comm >
109 template <
int dim,
int dimw,
class Comm >
121 template <
class GitterImpl >
123 const bool conformingRefinement )
125 if( grid && conformingRefinement )
127 grid->enableConformingClosure();
128 grid->disableGhostCells();
134 template<
int dim,
int dimworld, ALU3dGr
idElementType elType,
class Comm >
137 template<
int dim,
int dimworld, ALU3dGr
idElementType elType >
154 const bool conformingRefinement )
159 checkForConformingRefinement( grid, conformingRefinement );
164 const bool conformingRefinement )
168 checkForConformingRefinement( grid, conformingRefinement );
178 ALU3DSPACE Gitter::Geometric::BuilderIF* builder =
179 dynamic_cast< ALU3DSPACE Gitter::Geometric::BuilderIF*
>( &grid.container() );
181 DUNE_THROW(InvalidStateException,
"dynamic_cast of ALUGrid builder failed");
187 void print( std::ostream& out )
const
193 #if ALU3DGRID_PARALLEL
194 template<
int dim,
int dimworld, ALU3dGr
idElementType elType >
202 typedef ALU3DSPACE GitterDunePll GitterImplType;
204 typedef Dune::CollectiveCommunication< MPI_Comm > CollectiveCommunication;
207 : ccobj_( comm ), mpAccess_( comm )
210 int nlinks ()
const {
return mpAccess_.sendLinks(); }
212 GitterImplType *createALUGrid (
const std::string ¯oName,
ALU3DSPACE ProjectVertex *projection,
213 const bool conformingRefinement )
215 GitterImplType* grid =
new GitterImplType( dim, macroName.c_str(), mpAccess_, projection );
217 checkForConformingRefinement( grid, conformingRefinement );
221 GitterImplType *createALUGrid ( std::istream& stream,
ALU3DSPACE ProjectVertex *projection,
222 const bool conformingRefinement )
224 GitterImplType* grid =
new GitterImplType ( dim, stream, mpAccess_, projection );
226 checkForConformingRefinement( grid, conformingRefinement );
230 static MPI_Comm defaultComm () {
return MPI_COMM_WORLD; }
232 static int getRank ( MPI_Comm comm )
235 MPI_Comm_rank( comm, &rank );
239 void print( std::ostream& out )
const
241 mpAccess_.printLinkage( out );
244 static typename ALU3DSPACE Gitter::Geometric::BuilderIF &getBuilder ( GitterImplType &grid )
246 ALU3DSPACE Gitter::Geometric::BuilderIF* builder =
247 dynamic_cast< ALU3DSPACE Gitter::Geometric::BuilderIF*
>( &grid.containerPll() );
249 DUNE_THROW(InvalidStateException,
"dynamic_cast of ALUGrid builder failed");
253 static void completeGrid ( GitterImplType &grid )
256 grid.notifyMacroGridChanges();
258 grid.rebuildGhostCells();
261 CollectiveCommunication ccobj_;
271 template<
int dim, ALU3dGr
idElementType elType,
int codim >
286 template<
int dim, ALU3dGr
idElementType elType >
292 template< ALU3dGr
idElementType elType >
298 template< ALU3dGr
idElementType elType >
304 template<
int dim, ALU3dGr
idElementType elType >
315 template<
int dimG,
int dimW, ALU3dGr
idElementType elType,
class Comm >
318 static const int dim = dimG;
346 typedef Dune::Intersection< const Grid, LeafIntersectionWrapper< const Grid > >
LeafIntersection;
347 typedef Dune::Intersection< const Grid, LevelIntersectionWrapper< const Grid > >
LevelIntersection;
354 typedef Dune::EntityIterator< 0, const Grid, ALU3dGridHierarchicIterator< const Grid > >
HierarchicIterator;
363 typedef typename Twists::Twist
Twist;
372 typedef Dune::Entity< cd, dim, const Grid, ALU3dGridEntity >
Entity;
377 #if ! DUNE_VERSION_NEWER(DUNE_GRID,2,5)
382 template< PartitionIteratorType pitype >
385 typedef Dune::EntityIterator< cd, const Grid, ALU3dGridLevelIterator< cd, pitype, const Grid > >
LevelIterator;
386 typedef Dune::EntityIterator< cd, const Grid, ALU3dGridLeafIterator< cd, pitype, const Grid > >
LeafIterator;
393 template< PartitionIteratorType pitype >
396 typedef Dune::GridView< ALU3dLevelGridViewTraits< const Grid, pitype > >
LevelGridView;
397 typedef Dune::GridView< ALU3dLeafGridViewTraits< const Grid, pitype > >
LeafGridView;
413 typedef IdSet< Grid, LocalIdSetImp, LocalIdType >
LocalIdSet;
457 template<
int dim,
int dimworld, ALU3dGr
idElementType elType,
class Comm >
459 :
public GridDefaultImplementation< dim, dimworld, alu3d_ctype,
460 ALU3dGridFamily< dim, dimworld, elType, Comm > >,
465 typedef GridDefaultImplementation< dim, dimworld, alu3d_ctype, ALU3dGridFamily< dim, dimworld, elType, Comm > > BaseType;
527 template<
int codim >
529 :
public BaseType::template
Codim< codim >
533 typedef typename Twists::Twist
Twist;
535 #if ! DUNE_VERSION_NEWER(DUNE_GRID,2,5)
541 typedef MakeableInterfaceObject< typename Traits::template Codim< 0 >::Geometry >
GeometryObject;
546 template <PartitionIteratorType pitype>
575 typedef std::decay_t< decltype( ReferenceElementContainerType::general( std::declval< const Dune::GeometryType & >() ) ) >
ReferenceElementType;
577 typedef std::decay_t< decltype( ReferenceFaceContainerType::general( std::declval< const Dune::GeometryType & >() ) ) >
ReferenceFaceType;
645 ALU3dGrid (
const std::string ¯oTriangFilename,
655 static inline std::string
name ();
663 template<
int cd, PartitionIteratorType pitype>
668 template<
int cd, PartitionIteratorType pitype>
670 lend (
int level)
const;
682 lend (
int level)
const;
691 getRealImplementation(
entity ),
699 getRealImplementation(
entity ),
707 getRealImplementation(
entity ),
715 getRealImplementation(
entity ),
721 template <
int codim, PartitionIteratorType pitype>
722 typename Traits::template Codim<codim>::template Partition<pitype>::LeafIterator
723 leafbegin(
int level)
const;
726 template <
int codim, PartitionIteratorType pitype>
727 typename Traits::template Codim<codim>::template Partition<pitype>::LeafIterator
728 leafend(
int level)
const;
732 typename Traits::template Codim<codim>::LeafIterator
733 leafbegin(
int level)
const;
737 typename Traits::template Codim<codim>::LeafIterator
738 leafend(
int level)
const;
754 template <
int codim, PartitionIteratorType pitype>
755 typename Traits::template Codim<codim>::template Partition<pitype>::LeafIterator
759 template <
int codim, PartitionIteratorType pitype>
775 template <
int codim, PartitionIteratorType pitype>
777 createLeafIteratorBegin (
int level)
const;
780 template <
int codim, PartitionIteratorType pitype>
782 createLeafIteratorEnd(
int level)
const;
786 int size (
int level,
int cd)
const;
789 int size (
int codim)
const;
792 int size (
int level, GeometryType type)
const;
798 int size (GeometryType type)
const;
817 template<PartitionIteratorType pitype>
832 template<PartitionIteratorType pitype>
833 DUNE_DEPRECATED_MSG(
"macroView is deprecated, use macroGridView")
841 DUNE_DEPRECATED_MSG(
"macroView is deprecated, use macroGridView")
885 return std::shared_ptr< LevelIndexSetImp > (
new LevelIndexSetImp( *
this, lbegin< 0 >( level ), lend< 0 >( level ), level ) );
893 assert( elType ==
tetra ? type.isSimplex() : type.isCube() );
946 template<
class DataHandleImpl,
class Data >
947 bool loadBalance ( CommDataHandleIF< DataHandleImpl, Data > &dataHandleIF )
949 typedef ALU3DSPACE GatherScatterLoadBalanceDataHandle
951 DataHandleType dataHandle( *
this, dataHandleIF );
966 template<
class LBWeights,
class DataHandleImpl,
class Data >
968 CommDataHandleIF< DataHandleImpl, Data > &dataHandleIF )
970 typedef ALU3DSPACE GatherScatterLoadBalanceDataHandle
971 <
ThisType, LBWeights, DataHandleImpl, Data,
false > DataHandleType;
972 DataHandleType dataHandle( *
this, dataHandleIF, weights );
985 template<
class LBWeights >
986 typename std::enable_if< !IsDataHandle< LBWeights >::value,
bool >::type
loadBalance ( LBWeights &weights )
988 typedef ALU3DSPACE GatherScatterLoadBalance < ThisType, LBWeights, false > LoadBalanceHandleType;
989 LoadBalanceHandleType loadBalanceHandle( *
this, weights );
1001 template<
class LBDestinations >
1004 typedef ALU3DSPACE GatherScatterLoadBalance< ThisType, LBDestinations, true > LoadBalanceHandleType ;
1005 LoadBalanceHandleType loadBalanceHandle( *
this, destinations );
1019 template<
class LBDestinations,
class DataHandleImpl,
class Data >
1021 CommDataHandleIF< DataHandleImpl, Data > &dataHandleIF )
1023 typedef ALU3DSPACE GatherScatterLoadBalanceDataHandle< ThisType, LBDestinations, DataHandleImpl, Data, true > DataHandleType;
1024 DataHandleType dataHandle( *
this, dataHandleIF, destinations );
1032 int ghostSize (
int level,
int codim)
const;
1044 template<
class DataHandle,
class Data >
1046 InterfaceType iftype,
1047 CommunicationDirection dir,
1056 template<
class DataHandle,
class Data >
1058 InterfaceType iftype,
1059 CommunicationDirection dir )
const
1088 template<
class Gr
idImp,
class DataHandle >
1089 bool adapt ( AdaptDataHandleInterface< GridImp, DataHandle > &handle );
1094 template<
class Gr
idImp,
class DataHandle >
1095 void globalRefine (
int refCount, AdaptDataHandleInterface< GridImp, DataHandle > &handle );
1102 bool writeMacroGrid(
const std::string path,
const std::string filename,
1103 const ALU3DSPACE MacroFileHeader::Format format =
ALU3DSPACE MacroFileHeader::defaultFormat )
const ;
1106 void backup( std::ostream&,
const ALU3DSPACE MacroFileHeader::Format format )
const ;
1109 void restore( std::istream& ) ;
1118 bool mark(
int refCount ,
const typename Traits::template Codim<0>::Entity & e);
1121 int getMark(
const typename Traits::template Codim<0>::Entity & e)
const;
1126 return Communications::defaultComm();
1129 using BaseType :: getRealImplementation ;
1131 template<
class IntersectionType >
1132 static const typename BaseType
1133 :: template ReturnImplementationType< IntersectionType >
1134 :: ImplementationType &
1137 return getRealImplementation( intersection );
1165 return Communications::getBuilder(
myGrid() );
1171 Communications::completeGrid(
myGrid() );
1180 static const auto& refElem = ( elType ==
tetra ) ?
1189 static const auto& refElem = ( elType ==
tetra ) ?
1195 template <
class EntitySeed >
1196 typename Traits :: template Codim< EntitySeed :: codimension > :: EntityPointer
1199 enum { codim = EntitySeed :: codimension };
1203 template <
class EntitySeed >
1204 typename Traits :: template Codim< EntitySeed :: codimension > :: Entity
1294 return (*
bndVec_)[ segmentId ];
1317 return comm().size() > 1 &&
myGrid().ghostCellsEnabled();
1338 mutable std::unique_ptr< GitterImplType >
mygrid_;
1391 std::unique_ptr< const DuneBoundaryProjectionVector >
bndVec_;
1405 const std::string filename );
1408 namespace Capabilities
1411 template<
int dim,
int dimworld, ALU3dGr
idElementType elType,
class Comm,
int cdim >
1414 static const bool v =
true;
1417 #if !DUNE_VERSION_NEWER(DUNE_GRID,2,5)
1418 template<
int dim,
int dimworld, ALU3dGr
idElementType elType,
class Comm >
1419 struct isParallel<
ALU3dGrid< dim, dimworld, elType, Comm > >
1421 static const bool v =
true;
1425 template<
int dim,
int dimworld, ALU3dGr
idElementType elType,
class Comm >
1426 struct isLevelwiseConforming<
ALU3dGrid< dim, dimworld, elType, Comm > >
1428 static const bool v =
true;
1431 template<
int dim,
int dimworld, ALU3dGr
idElementType elType,
class Comm >
1432 struct hasBackupRestoreFacilities<
ALU3dGrid< dim, dimworld, elType, Comm > >
1434 static const bool v =
true;
1442 #if COMPILE_ALUGRID_INLINE
#define ALU3DSPACE
Definition: alu3dinclude.hh:24
#define alugrid_assert(EX)
Definition: alugrid_assert.hh:20
Provides default index set implementations for Level- and LeafIndexsets used by ALUGrid.
Provides a Interfaces for detection of specific behavior.
Provides proxy classes for IntersectionsIterators.
Definition: alu3dinclude.hh:80
ALU3dGridElementType
Definition: topology.hh:12
@ hexa
Definition: topology.hh:12
@ tetra
Definition: topology.hh:12
@ simplex
use only simplex elements (i.e., triangles or tetrahedra)
Definition: declaration.hh:18
@ cube
use only cube elements (i.e., quadrilaterals or hexahedra)
Definition: declaration.hh:19
bool checkMacroGrid(ALU3dGridElementType elType, const std::string filename)
double alu3d_ctype
Definition: alu3dinclude.hh:85
const char * elType2Name(ALU3dGridElementType elType)
Definition: grid_imp.cc:651
ALUGridRefinementType
available refinement types for ALUGrid
Definition: declaration.hh:24
@ conforming
use conforming bisection refinement
Definition: declaration.hh:25
Definition: alu3dinclude.hh:259
Definition: alu3dinclude.hh:345
bool up2Date() const
Definition: alu3dinclude.hh:357
void setupVxList(const GridType &grid, int level)
Definition: alu3dinclude.hh:381
void setupVxList(const GridType &grid)
int getLevel(const VertexType &vertex) const
Definition: alu3dinclude.hh:406
bool up2Date() const
Definition: alu3dinclude.hh:394
Definition: alu3dinclude.hh:426
Definition: communication.hh:26
Definition: communication.hh:29
[ provides Dune::Grid ]
Definition: alugrid/3d/grid.hh:463
int ghostSize(int level, int codim) const
ghostSize is one for codim 0 and zero otherwise for this grid
Definition: grid_imp.cc:281
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:534
bool repartition(LBDestinations &destinations, CommDataHandleIF< DataHandleImpl, Data > &dataHandleIF)
Distribute the grid based on a user defined partitioning.
Definition: alugrid/3d/grid.hh:1020
int getLevelOfLeafVertex(const typename ALU3dImplTraits< elType, Comm >::VertexType &vertex) const
Definition: alugrid/3d/grid.hh:1220
ALUGridBoundaryProjection< ThisType, alu3d_ctype > ALUGridBoundaryProjectionType
Definition: alugrid/3d/grid.hh:596
MakeableInterfaceObject< typename Traits::template Codim< 0 >::Geometry > GeometryObject
Definition: alugrid/3d/grid.hh:541
Traits::template Codim< codim >::template Partition< pitype >::LeafIterator leafbegin() const
General definiton for a leaf iterator.
const HierarchicIndexSet & hierarchicIndexSet() const
Definition: alugrid/3d/grid.hh:1112
Traits::CollectiveCommunication CollectiveCommunication
type of collective communication object
Definition: alugrid/3d/grid.hh:588
ALU3dGridIntersectionIterator< const ThisType > IntersectionIteratorImp
Definition: alugrid/3d/grid.hh:498
void globalRefine(int refCount)
uses the interface, mark on entity and refineLocal
Definition: grid_imp.cc:405
void calcExtras()
reset size and global size, update Level- and LeafIndexSet, if they exist
Definition: grid_imp.cc:331
static const int dimensionworld
Definition: alugrid/3d/grid.hh:525
bool mark(int refCount, const typename Traits::template Codim< 0 >::Entity &e)
Definition: grid_inline.hh:306
LevelCommunication communicate(CommDataHandleIF< DataHandle, Data > &data, InterfaceType iftype, CommunicationDirection dir, int level) const
Definition: alugrid/3d/grid.hh:1045
int overlapSize(int level, int codim) const
overlapSize is zero for this grid
Definition: alugrid/3d/grid.hh:1035
bool preAdapt()
returns if a least one entity was marked for coarsening
Definition: grid_imp.cc:421
bool loadBalance()
Calculates load of each process and repartition by using ALUGrid's default partitioning method....
Definition: alugrid/3d/grid.hh:935
int coarsenMarked_
Definition: alugrid/3d/grid.hh:1344
std::unique_ptr< Communications > communications_
Definition: alugrid/3d/grid.hh:1397
Partition< pitype >::MacroGridView macroGridView() const
View for te macro grid with some alu specific methods.
Definition: alugrid/3d/grid.hh:818
Traits::template Codim< codim >::template Partition< pitype >::LeafIterator leafend() const
General definition for an end iterator on leaf level.
ALU3dGridLevelIntersectionIterator< const ThisType > LevelIntersectionIteratorImp
Definition: alugrid/3d/grid.hh:502
ALU3dGrid(const ThisType &)
Copy constructor should not be used.
Traits ::template Codim< EntitySeed ::codimension >::EntityPointer entityPointer(const EntitySeed &seed) const
Definition: alugrid/3d/grid.hh:1197
ALUGridVertexProjectionType * vertexProjection()
Definition: alugrid/3d/grid.hh:1160
Traits::template Codim< codim >::LeafIterator leafend() const
General definition for an end iterator on leaf level.
virtual ALU3DSPACE Gitter::Geometric::BuilderIF & getBuilder() const
Definition: alugrid/3d/grid.hh:1163
static const ReferenceFaceType & faceReferenceElement()
return reference to Dune face reference element according to elType
Definition: alugrid/3d/grid.hh:1187
HierarchicIndexSet hIndexSet_
Definition: alugrid/3d/grid.hh:1352
Traits::LeafIntersectionIterator ileafend(const typename Traits::template Codim< 0 >::Entity &entity) const
Definition: alugrid/3d/grid.hh:696
std::unique_ptr< const DuneBoundaryProjectionVector > bndVec_
Definition: alugrid/3d/grid.hh:1391
Traits::template Codim< 0 >::LeafIterator LeafIterator
Definition: alugrid/3d/grid.hh:613
std::vector< std::shared_ptr< LevelIndexSetImp > > levelIndexVec_
Definition: alugrid/3d/grid.hh:1361
int maxLevel() const
Return maximum level defined in this grid. Levels are numbered maxLevel with 0 the coarsest level.
Definition: grid_inline.hh:107
ALULeafCommunication< dim, dimworld, elType, Comm > LeafCommunication
Definition: alugrid/3d/grid.hh:590
GridFamily::Traits Traits
Definition: alugrid/3d/grid.hh:522
Traits::DuneBoundaryProjectionType DuneBoundaryProjectionType
boundary projection type
Definition: alugrid/3d/grid.hh:580
ALU3dGridCommunications< dim, dimworld, elType, Comm > Communications
Definition: alugrid/3d/grid.hh:634
int hierSetSize(int cd) const
Definition: grid_inline.hh:99
static const ReferenceElementType & referenceElement()
return reference to Dune reference element according to elType
Definition: alugrid/3d/grid.hh:1178
GitterImplType & myGrid() const
Definition: grid_inline.hh:115
Traits::LocalIdSet LocalIdSet
Type of the local id set.
Definition: alugrid/3d/grid.hh:608
void finalizeGridCreation()
Definition: grid_inline.hh:428
std::shared_ptr< LevelIndexSetImp > createLevelIndexSet(int level) const
Definition: alugrid/3d/grid.hh:883
const Communications & communications() const
Definition: alugrid/3d/grid.hh:1298
static MPICommunicatorType defaultCommunicator()
Definition: alugrid/3d/grid.hh:1124
ALULevelCommunication< dim, dimworld, elType, Comm > LevelCommunication
Definition: alugrid/3d/grid.hh:591
Partition< pitype >::MacroGridView macroView() const
View for te macro grid with some alu specific methods.
Definition: alugrid/3d/grid.hh:834
std::decay_t< decltype(ReferenceElementContainerType::general(std::declval< const Dune::GeometryType & >))) > ReferenceElementType
Definition: alugrid/3d/grid.hh:575
const Traits ::LevelIndexSet & levelIndexSet(int level) const
get level index set of the grid
Definition: alugrid/3d/grid.hh:855
ALU3DSPACE GatherScatterType::ObjectStreamType ObjectStreamType
Definition: alugrid/3d/grid.hh:517
bool adapt()
Definition: grid_imp.cc:430
void checkMacroGridFile(const std::string filename)
check whether macro grid format is of our type
Definition: grid_imp.cc:592
bool loadBalance(LBWeights &weights, CommDataHandleIF< DataHandleImpl, Data > &dataHandleIF)
Calculates load of each process and repartition by using ALUGrid's default partitioning method,...
Definition: alugrid/3d/grid.hh:967
const GlobalIdSet & globalIdSet() const
get global id set of grid
Definition: alugrid/3d/grid.hh:807
std::unique_ptr< ALUGridBoundaryProjectionType > vertexProjection_
Definition: alugrid/3d/grid.hh:1394
int maxlevel_
Definition: alugrid/3d/grid.hh:1341
BoundarySegmentIndexSetType macroBoundarySegmentIndexSet_
Definition: alugrid/3d/grid.hh:1382
Traits::template Codim< codim >::LeafIterator leafbegin() const
General definiton for a leaf iterator.
ALU3dGridIntersectionIterator< const ThisType > LeafIntersectionIteratorImp
Definition: alugrid/3d/grid.hh:500
ALU3DSPACE ProjectVertex ALUGridVertexProjectionType
type of ALUGrid Vertex Projection Interface
Definition: alugrid/3d/grid.hh:585
bool repartition(LBDestinations &destinations)
Distribute the grid based on a user defined partitioning.
Definition: alugrid/3d/grid.hh:1002
bool ghostCellsEnabled() const
Definition: alugrid/3d/grid.hh:1315
ALU3dGridLeafIterator< 0, All_Partition, const ThisType > LeafIteratorImp
Definition: alugrid/3d/grid.hh:611
static std::string name()
for grid identification
Definition: grid_inline.hh:446
bool lockPostAdapt_
Definition: alugrid/3d/grid.hh:1385
const ThisType & operator=(const ThisType &)
assignment operator should not be used
Definition: grid_imp.cc:194
const DuneBoundaryProjectionType * boundaryProjection(const int segmentId) const
return boudanry projection for given segment Id
Definition: alugrid/3d/grid.hh:1283
static const int dimension
Definition: alugrid/3d/grid.hh:524
LeafIntersectionIteratorWrapper< const ThisType > LefInterItWrapperType
Definition: alugrid/3d/grid.hh:684
std::shared_ptr< LevelIndexSetImp > accessLevelIndexSet(int level) const
return instance of level index set
Definition: alugrid/3d/grid.hh:869
std::unique_ptr< GlobalIdSetImp > globalIdSet_
Definition: alugrid/3d/grid.hh:1355
Traits ::template Codim< EntitySeed ::codimension >::Entity entity(const EntitySeed &seed) const
Definition: alugrid/3d/grid.hh:1205
ALU3dGridHierarchicIterator< const ThisType > HierarchicIteratorImp
Definition: alugrid/3d/grid.hh:615
int nlinks() const
Definition: alugrid/3d/grid.hh:1212
ALU3dGridItemListType & getGhostLevelList(int codim, int level) const
Definition: alugrid/3d/grid.hh:1242
Traits::LeafIntersectionIterator ileafbegin(const typename Traits::template Codim< 0 >::Entity &entity) const
Definition: alugrid/3d/grid.hh:688
int refineMarked_
Definition: alugrid/3d/grid.hh:1345
GridFamily::LevelIndexSetImp LevelIndexSetImp
Type of the level index set, needed by data handle.
Definition: alugrid/3d/grid.hh:565
ALU3dGrid(const std::string ¯oTriangFilename, const MPICommunicatorType mpiComm, const DuneBoundaryProjectionType *bndPrj, const DuneBoundaryProjectionVector *bndVec, const ALUGridRefinementType refinementType)
Definition: grid_inline.hh:22
GridFamily::LocalIdSetImp LocalIdSetImp
Type of the local id set.
Definition: alugrid/3d/grid.hh:599
ALU3dGridItemListType & getGhostLeafList(int codim) const
Definition: alugrid/3d/grid.hh:1235
std::unique_ptr< SizeCacheType > sizeCache_
Definition: alugrid/3d/grid.hh:1379
Partition< All_Partition >::MacroGridView MacroGridView
Definition: alugrid/3d/grid.hh:559
void recalcGlobalSize()
make grid walkthrough and calc global size
static const ALU3dGridElementType elementType
Definition: alugrid/3d/grid.hh:515
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: alugrid/3d/grid.hh:1057
Codim< cd >::Twists twists(GeometryType type) const
Definition: alugrid/3d/grid.hh:890
void backup(std::ostream &, const ALU3DSPACE MacroFileHeader::Format format) const
backup to ostream
Definition: grid_imp.cc:556
void clearIsNewMarkers()
clear all entity new markers
Definition: grid_imp.cc:478
ObjectStreamType InStreamType
Definition: alugrid/3d/grid.hh:518
void makeGeometries()
Definition: grid_inline.hh:65
ReferenceElements< alu3d_ctype, dim-1 > ReferenceFaceContainerType
Definition: alugrid/3d/grid.hh:572
void updateStatus()
Definition: grid_imp.cc:289
const ALUGridRefinementType refinementType_
Definition: alugrid/3d/grid.hh:1400
@ refineEstimate_
if one element is refined then it causes apporximately not more than this number of new elements
Definition: alugrid/3d/grid.hh:629
Partition< All_Partition >::LevelGridView LevelGridView
View types for All_Partition.
Definition: alugrid/3d/grid.hh:557
void postAdapt()
clear all entity new markers if lockPostAdapt_ is set
Definition: grid_imp.cc:520
void restore(std::istream &)
restore from istream
Definition: grid_imp.cc:564
@ numberOfGeomTypes
Definition: alugrid/3d/grid.hh:1348
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:126
std::vector< std::vector< GeometryType > > geomTypes_
Definition: alugrid/3d/grid.hh:1349
ALU3dGridItemListType & getEdgeList(int level) const
Definition: alugrid/3d/grid.hh:1253
void calcMaxLevel()
calculate maxlevel
Definition: grid_imp.cc:298
bool conformingRefinement() const
Definition: alugrid/3d/grid.hh:1309
std::vector< ALU3dGridItemListType > levelEdgeList_
Definition: alugrid/3d/grid.hh:1373
ObjectStreamType OutStreamType
Definition: alugrid/3d/grid.hh:519
ALU3dGridFamily< dim, dimworld, elType, Comm > GridFamily
Definition: alugrid/3d/grid.hh:521
VertexListType & getVertexList(int level) const
Definition: alugrid/3d/grid.hh:1226
std::unique_ptr< GitterImplType > mygrid_
Definition: alugrid/3d/grid.hh:1338
ALU3dGridLeafVertexList< Comm > LeafVertexListType
Definition: alugrid/3d/grid.hh:638
SizeCache< MyType > SizeCacheType
Definition: alugrid/3d/grid.hh:1378
virtual ~ALU3dGrid()
Desctructor.
Definition: grid_imp.cc:203
int size(int level, int cd) const
number of grid entities per level and codim
Definition: grid_imp.cc:218
ALU3dGridVertexList< Comm > VertexListType
Definition: alugrid/3d/grid.hh:637
ALU3dGridItemListType ghostLeafList_[3]
Definition: alugrid/3d/grid.hh:1370
const DuneBoundaryProjectionType * bndPrj_
Definition: alugrid/3d/grid.hh:1388
GridFamily::LeafIndexSetImp LeafIndexSetImp
Type of the leaf index set, needed by data handle.
Definition: alugrid/3d/grid.hh:567
virtual void completeGrid()
Definition: alugrid/3d/grid.hh:1169
Comm MPICommunicatorType
Definition: alugrid/3d/grid.hh:632
ALU3DSPACE GatherScatter GatherScatterType
Definition: alugrid/3d/grid.hh:898
const CollectiveCommunication & comm() const
Definition: alugrid/3d/grid.hh:1073
LeafVertexListType & getLeafVertexList() const
Definition: alugrid/3d/grid.hh:1214
int getMark(const typename Traits::template Codim< 0 >::Entity &e) const
Definition: grid_inline.hh:321
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: alugrid/3d/grid.hh:986
virtual GitterImplType * createALUGrid(std::istream &stream)
Definition: alugrid/3d/grid.hh:1154
virtual GitterImplType * createALUGrid(const std::string ¯oName)
Definition: alugrid/3d/grid.hh:1148
Partition< All_Partition >::LeafGridView LeafGridView
Definition: alugrid/3d/grid.hh:558
@ refineStepsForHalf
Definition: alugrid/3d/grid.hh:513
const LocalIdSet & localIdSet() const
get global id set of grid
Definition: alugrid/3d/grid.hh:849
std::vector< VertexListType > vertexList_
Definition: alugrid/3d/grid.hh:1366
ALU3dImplTraits< elType, Comm >::GitterImplType GitterImplType
Definition: alugrid/3d/grid.hh:617
static const BaseType ::template ReturnImplementationType< IntersectionType >::ImplementationType & getRealIntersection(const IntersectionType &intersection)
Definition: alugrid/3d/grid.hh:1135
std::decay_t< decltype(ReferenceFaceContainerType::general(std::declval< const Dune::GeometryType & >))) > ReferenceFaceType
Definition: alugrid/3d/grid.hh:577
MacroGridView macroGridView() const
View for te macro grid with some alu specific methods (All_Partition)
Definition: alugrid/3d/grid.hh:825
Traits::LevelIntersectionIterator ilevelbegin(const typename Traits::template Codim< 0 >::Entity &entity) const
Definition: alugrid/3d/grid.hh:704
LeafVertexListType leafVertexList_
Definition: alugrid/3d/grid.hh:1375
Traits::template Codim< cd >::template Partition< pitype >::LevelIterator lend(int level) const
one past the end on this level
Definition: grid_inline.hh:140
@ newElementsChunk_
normal default number of new elements for new adapt method
Definition: alugrid/3d/grid.hh:622
std::vector< ALU3dGridItemListType > ghostLevelList_[3]
Definition: alugrid/3d/grid.hh:1371
GridFamily::GlobalIdSetImp GlobalIdSetImp
Definition: alugrid/3d/grid.hh:601
bool loadBalance(CommDataHandleIF< DataHandleImpl, Data > &dataHandleIF)
Calculates load of each process and repartition by using ALUGrid's default partitioning method....
Definition: alugrid/3d/grid.hh:947
const BoundarySegmentIndexSetType & macroBoundarySegmentIndexSet() const
Definition: alugrid/3d/grid.hh:1320
Traits::DuneBoundaryProjectionVector DuneBoundaryProjectionVector
boundary projection type
Definition: alugrid/3d/grid.hh:582
int global_size(int cd) const
number of grid entities on all levels for given codim
Definition: grid_inline.hh:89
Traits::template Codim< 0 >::LeafIterator LeafIteratorType
Definition: alugrid/3d/grid.hh:612
Traits::LevelIntersectionIterator ilevelend(const typename Traits::template Codim< 0 >::Entity &entity) const
Definition: alugrid/3d/grid.hh:712
size_t numBoundarySegments() const
number of boundary segments
Definition: grid_imp.cc:232
void checkMacroGrid()
check whether macro grid has the right element type
Definition: grid_imp.cc:631
Traits::GlobalIdSet GlobalIdSet
Type of the global id set.
Definition: alugrid/3d/grid.hh:605
const Traits ::LeafIndexSet & leafIndexSet() const
get leaf index set of the grid
Definition: grid_imp.cc:390
std::unique_ptr< LeafIndexSetImp > leafIndexSet_
Definition: alugrid/3d/grid.hh:1364
DefaultBoundarySegmentIndexSet< ThisType > BoundarySegmentIndexSetType
Definition: alugrid/3d/grid.hh:640
LevelIntersectionIteratorWrapper< const ThisType > LvlInterItWrapperType
Definition: alugrid/3d/grid.hh:685
const std::vector< GeometryType > & geomTypes(int codim) const
deliver all geometry types used in this grid
Definition: alugrid/3d/grid.hh:1141
ALU3dGridHierarchicIndexSet< dim, dimworld, elType, Comm > HierarchicIndexSet
Type of the hierarchic index set.
Definition: alugrid/3d/grid.hh:562
LocalIdSetImp localIdSet_
Definition: alugrid/3d/grid.hh:1358
ReferenceElements< alu3d_ctype, dim > ReferenceElementContainerType
Definition: alugrid/3d/grid.hh:570
int overlapSize(int codim) const
overlapSize is zero for this grid
Definition: alugrid/3d/grid.hh:1041
Definition: entity.hh:629
Definition: geometry.hh:632
Definition: iterator.hh:713
Definition: iterator.hh:56
Leaf iterator.
Definition: iterator.hh:639
Definition: entity.hh:463
Definition: entityseed.hh:212
Definition: iterator.hh:297
Definition: alugrid/3d/grid.hh:72
Definition: alugrid/3d/grid.hh:74
Definition: alugrid/3d/grid.hh:76
Definition: alugrid/3d/grid.hh:78
hierarchic index set of ALU3dGrid
Definition: indexsets.hh:38
Factory class for ALUGrids.
Definition: gridfactory.hh:30
Definition: geostorage.hh:23
ALU3dGrid< dim, dimw, hexa, Comm > BaseGrid
Definition: alugrid/3d/grid.hh:106
ALU3dGrid< dim, dimw, tetra, Comm > BaseGrid
Definition: alugrid/3d/grid.hh:112
Definition: alugrid/3d/grid.hh:120
void checkForConformingRefinement(GitterImpl *grid, const bool conformingRefinement)
Definition: alugrid/3d/grid.hh:122
Definition: alugrid/3d/grid.hh:135
static int getRank(ALUGridNoComm comm)
Definition: alugrid/3d/grid.hh:174
CollectiveCommunication ccobj_
Definition: alugrid/3d/grid.hh:190
static ALU3DSPACE Gitter::Geometric::BuilderIF & getBuilder(GitterImplType &grid)
Definition: alugrid/3d/grid.hh:176
int nlinks() const
Definition: alugrid/3d/grid.hh:151
void print(std::ostream &out) const
Definition: alugrid/3d/grid.hh:187
GitterImplType * createALUGrid(std::istream &stream, ALU3DSPACE ProjectVertex *projection, const bool conformingRefinement)
Definition: alugrid/3d/grid.hh:163
Dune::CollectiveCommunication< No_Comm > CollectiveCommunication
Definition: alugrid/3d/grid.hh:147
GitterImplType * createALUGrid(const std::string ¯oName, ALU3DSPACE ProjectVertex *projection, const bool conformingRefinement)
Definition: alugrid/3d/grid.hh:153
static void completeGrid(GitterImplType &grid)
Definition: alugrid/3d/grid.hh:185
ALU3dGridCommunications(ALUGridNoComm comm)
Definition: alugrid/3d/grid.hh:149
ALU3DSPACE GitterDuneImpl GitterImplType
Definition: alugrid/3d/grid.hh:145
ALU3dGridLocalIdSet< dim, dimworld, elType, ALUGridNoComm > GlobalIdSet
Definition: alugrid/3d/grid.hh:142
int GlobalId
Definition: alugrid/3d/grid.hh:143
static ALUGridNoComm defaultComm()
Definition: alugrid/3d/grid.hh:172
Definition: alugrid/3d/grid.hh:272
TrivialTwists< Impl::SimplexTopology< dim >::type::id, dim > Type
Definition: alugrid/3d/grid.hh:277
TrivialTwists< Impl::CubeTopology< dim >::type::id, dim > Type
Definition: alugrid/3d/grid.hh:283
ALUTwists< dim==2 ? 2 :ElementTopologyMapping< elType >::numVerticesPerFace, dim-1 > Type
Definition: alugrid/3d/grid.hh:289
ALUTwists< 2, 1 > Type
Definition: alugrid/3d/grid.hh:295
TrivialTwists< 0u, 0 > Type
Definition: alugrid/3d/grid.hh:301
TrivialTwists< 0u, 0 > Type
Definition: alugrid/3d/grid.hh:307
Definition: alugrid/3d/grid.hh:317
ALU3dGridCommunications< dim, dimworld, elType, Comm >::GlobalIdSet GlobalIdSetImp
Type of the global id set.
Definition: alugrid/3d/grid.hh:328
ALU3dGridCommunications< dim, dimworld, elType, Comm >::GlobalId GlobalIdType
type of ALU3dGrids global id
Definition: alugrid/3d/grid.hh:331
ALU3dGridLocalIdSet< dim, dimworld, elType, Comm > LocalIdSetImp
Type of the local id set.
Definition: alugrid/3d/grid.hh:325
static const int dimworld
Definition: alugrid/3d/grid.hh:319
ALU3dGridFamily< dim, dimworld, elType, Comm > GridFamily
Definition: alugrid/3d/grid.hh:322
Traits ::LevelIndexSetImp LevelIndexSetImp
Type of the level index set implementation.
Definition: alugrid/3d/grid.hh:421
ALU3dGrid< dim, dimworld, elType, Comm > GridImp
Definition: alugrid/3d/grid.hh:321
Traits ::LeafIndexSetImp LeafIndexSetImp
Type of the leaf index set implementation.
Definition: alugrid/3d/grid.hh:424
int LocalIdType
type of ALU3dGrids local id
Definition: alugrid/3d/grid.hh:334
static const int dim
Definition: alugrid/3d/grid.hh:318
Definition: alugrid/3d/grid.hh:337
IndexSet< Grid, LeafIndexSetImp > LeafIndexSet
Definition: alugrid/3d/grid.hh:412
GridFamily::LocalIdType LocalIdType
type of ALU3dGrids local id
Definition: alugrid/3d/grid.hh:339
Partition< All_Partition >::MacroGridView MacroGridView
Definition: alugrid/3d/grid.hh:401
DefaultIndexSet< GridImp, typename Codim< 0 >::LeafIterator > LeafIndexSetImp
Type of the leaf index set.
Definition: alugrid/3d/grid.hh:409
DefaultIndexSet< GridImp, typename Codim< 0 >::LevelIterator > LevelIndexSetImp
Type of the level index set.
Definition: alugrid/3d/grid.hh:406
ALU3dGridCommunications< dim, dimworld, elType, Comm >::CollectiveCommunication CollectiveCommunication
Type of the communication class.
Definition: alugrid/3d/grid.hh:417
Dune::EntityIterator< 0, const Grid, ALU3dGridHierarchicIterator< const Grid > > HierarchicIterator
Definition: alugrid/3d/grid.hh:354
IdSet< Grid, GlobalIdSetImp, GlobalIdType > GlobalIdSet
Definition: alugrid/3d/grid.hh:414
Dune::IntersectionIterator< const Grid, LevelIntersectionIteratorWrapper< const Grid >, LevelIntersectionWrapper< const Grid > > LevelIntersectionIterator
Definition: alugrid/3d/grid.hh:352
Dune::IntersectionIterator< const Grid, LeafIntersectionIteratorWrapper< const Grid >, LeafIntersectionWrapper< const Grid > > LeafIntersectionIterator
Definition: alugrid/3d/grid.hh:351
GridFamily::GridImp Grid
Definition: alugrid/3d/grid.hh:344
IdSet< Grid, LocalIdSetImp, LocalIdType > LocalIdSet
Definition: alugrid/3d/grid.hh:413
GridFamily::GlobalIdType GlobalIdType
type of ALU3dGrids global id
Definition: alugrid/3d/grid.hh:342
IndexSet< Grid, LevelIndexSetImp > LevelIndexSet
Definition: alugrid/3d/grid.hh:411
Partition< All_Partition >::LeafGridView LeafGridView
Definition: alugrid/3d/grid.hh:402
Dune::IntersectionIterator< const Grid, LeafIntersectionIteratorWrapper< const Grid >, LeafIntersectionWrapper< const Grid > > IntersectionIterator
Definition: alugrid/3d/grid.hh:349
Partition< All_Partition >::LevelGridView LevelGridView
Definition: alugrid/3d/grid.hh:403
Dune::Intersection< const Grid, LevelIntersectionWrapper< const Grid > > LevelIntersection
Definition: alugrid/3d/grid.hh:347
DuneBoundaryProjection< dimworld > DuneBoundaryProjectionType
Definition: alugrid/3d/grid.hh:356
Dune::Intersection< const Grid, LeafIntersectionWrapper< const Grid > > LeafIntersection
Definition: alugrid/3d/grid.hh:346
std::vector< const DuneBoundaryProjectionType * > DuneBoundaryProjectionVector
Definition: alugrid/3d/grid.hh:357
Definition: alugrid/3d/grid.hh:361
ALU3dGridTwists< dim, elType, cd >::Type Twists
Definition: alugrid/3d/grid.hh:362
Dune::Geometry< dim-cd, dimworld, const Grid, ALU3dGridGeometry > Geometry
Definition: alugrid/3d/grid.hh:368
ALU3dGridGeometry< dim-cd, dim, const Grid > LocalGeometryImpl
Definition: alugrid/3d/grid.hh:367
Twists::Twist Twist
Definition: alugrid/3d/grid.hh:363
ALU3dGridGeometry< dim-cd, dimworld, const Grid > GeometryImpl
Definition: alugrid/3d/grid.hh:366
ALU3dGridEntitySeed< cd, const Grid > EntitySeed
Definition: alugrid/3d/grid.hh:375
ALU3dGridEntity< cd, dim, const Grid > EntityImp
Definition: alugrid/3d/grid.hh:371
Dune::Geometry< dim-cd, dim, const Grid, ALU3dGridGeometry > LocalGeometry
Definition: alugrid/3d/grid.hh:369
Dune::Entity< cd, dim, const Grid, ALU3dGridEntity > Entity
Definition: alugrid/3d/grid.hh:372
Partition< All_Partition >::LevelIterator LevelIterator
Definition: alugrid/3d/grid.hh:389
EntityImp EntityPointerImpl
Definition: alugrid/3d/grid.hh:378
Partition< All_Partition >::LeafIterator LeafIterator
Definition: alugrid/3d/grid.hh:390
Entity EntityPointer
Definition: alugrid/3d/grid.hh:379
Definition: alugrid/3d/grid.hh:384
Dune::EntityIterator< cd, const Grid, ALU3dGridLeafIterator< cd, pitype, const Grid > > LeafIterator
Definition: alugrid/3d/grid.hh:386
Dune::EntityIterator< cd, const Grid, ALU3dGridLevelIterator< cd, pitype, const Grid > > LevelIterator
Definition: alugrid/3d/grid.hh:385
Definition: alugrid/3d/grid.hh:395
Dune::GridView< ALU3dLeafGridViewTraits< const Grid, pitype > > LeafGridView
Definition: alugrid/3d/grid.hh:397
Dune::GridView< ALU3dLevelGridViewTraits< const Grid, pitype > > LevelGridView
Definition: alugrid/3d/grid.hh:396
Dune::MacroGridView< const Grid, pitype > MacroGridView
Definition: alugrid/3d/grid.hh:398
Definition: alugrid/3d/grid.hh:530
Traits::template Codim< codim >::Twists Twists
Definition: alugrid/3d/grid.hh:532
Traits::template Codim< codim >::EntityPointerImpl EntityPointerImpl
Definition: alugrid/3d/grid.hh:536
Traits::template Codim< codim >::EntityImp EntityImp
Definition: alugrid/3d/grid.hh:531
Twists::Twist Twist
Definition: alugrid/3d/grid.hh:533
Types for GridView.
Definition: alugrid/3d/grid.hh:548
GridFamily::Traits::template Partition< pitype >::LeafGridView LeafGridView
Definition: alugrid/3d/grid.hh:552
GridFamily::Traits::template Partition< pitype >::MacroGridView MacroGridView
Definition: alugrid/3d/grid.hh:554
GridFamily::Traits::template Partition< pitype >::LevelGridView LevelGridView
Definition: alugrid/3d/grid.hh:550
Definition: indexsets.hh:177
ALUGrid boundary projection implementation DuneBndProjection has to fulfil the DuneBoundaryProjection...
Definition: bndprojection.hh:11
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
Definition: declaration.hh:78
DefaultIndexSet creates an index set by using the grids persistent container an a given pair of itera...
Definition: defaultindexsets.hh:65
void invalidate()
Definition: defaultindexsets.hh:432
void update(const GridViewType &gridView)
Definition: defaultindexsets.hh:397
bool valid() const
Definition: defaultindexsets.hh:431
Tagging interface to indicate that Grid provides typedef ObjectStreamType.
Definition: interfaces.hh:14
Tagging interface to indicate that Grid has HierarchicIndexSet.
Definition: interfaces.hh:49
Class that wraps IntersectionIteratorImp of a grid and gets it's internal object from a object stack ...
Definition: intersectioniteratorwrapper.hh:26
Definition: intersectioniteratorwrapper.hh:228
Class that wraps IntersectionIteratorImp of a grid and gets it's internal object from a object stack ...
Definition: intersectioniteratorwrapper.hh:253
Class that wraps IntersectionIteratorImp of a grid and gets it's internal object from a object stack ...
Definition: intersectioniteratorwrapper.hh:333
Class that wraps IntersectionIteratorImp of a grid and gets it's internal object from a object stack ...
Definition: intersectioniteratorwrapper.hh:357
Definition: macrogridview.hh:76
Definition: twists.hh:440
Definition: twists.hh:595