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/mpicommunication.hh>
45 #include <dune/common/parallel/communication.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 >
116 template<
int dim,
int dimworld, ALU3dGr
idElementType elType,
class Comm >
119 template<
int dim,
int dimworld, ALU3dGr
idElementType elType >
134 const bool conformingRefinement )
142 const bool conformingRefinement )
144 return new GitterImplType ( dim, conformingRefinement, stream, projection );
154 ALU3DSPACE Gitter::Geometric::BuilderIF* builder =
155 dynamic_cast< ALU3DSPACE Gitter::Geometric::BuilderIF*
>( &grid.container() );
157 DUNE_THROW(InvalidStateException,
"dynamic_cast of ALUGrid builder failed");
163 void print( std::ostream& out )
const
169 #if ALU3DGRID_PARALLEL
170 template<
int dim,
int dimworld, ALU3dGr
idElementType elType >
176 typedef ALU3DSPACE GitterDunePll GitterImplType;
178 typedef Dune::CollectiveCommunication< MPI_Comm > CollectiveCommunication;
181 : ccobj_( comm ), mpAccess_( comm )
184 int nlinks ()
const {
return mpAccess_.sendLinks(); }
186 GitterImplType *createALUGrid (
const std::string ¯oName,
const ALU3DSPACE ProjectVertexPtrPair& projections,
187 const bool conformingRefinement )
189 return new GitterImplType( dim, conformingRefinement, macroName.c_str(), mpAccess_, projections );
192 GitterImplType *createALUGrid ( std::istream& stream,
const ALU3DSPACE ProjectVertexPtrPair& projections,
193 const bool conformingRefinement )
195 return new GitterImplType ( dim, conformingRefinement, stream, mpAccess_, projections );
199 static ALUGridMPIComm defaultComm () {
return ALUGridMPIComm(); }
201 static int getRank ( MPI_Comm comm )
204 MPI_Comm_rank( comm, &rank );
208 void print( std::ostream& out )
const
210 mpAccess_.printLinkage( out );
213 static typename ALU3DSPACE Gitter::Geometric::BuilderIF &getBuilder ( GitterImplType &grid )
215 ALU3DSPACE Gitter::Geometric::BuilderIF* builder =
216 dynamic_cast< ALU3DSPACE Gitter::Geometric::BuilderIF*
>( &grid.containerPll() );
218 DUNE_THROW(InvalidStateException,
"dynamic_cast of ALUGrid builder failed");
222 static void completeGrid ( GitterImplType &grid )
225 grid.notifyMacroGridChanges();
227 grid.rebuildGhostCells();
230 CollectiveCommunication ccobj_;
240 template<
int dim, ALU3dGr
idElementType elType,
int codim >
257 template<
int dim, ALU3dGr
idElementType elType >
263 template< ALU3dGr
idElementType elType >
269 template< ALU3dGr
idElementType elType >
275 template<
int dim, ALU3dGr
idElementType elType >
286 template<
int dimG,
int dimW, ALU3dGr
idElementType elType,
class Comm >
289 static const int dim = dimG;
317 typedef Dune::Intersection< const Grid, LeafIntersectionWrapper< const Grid > >
LeafIntersection;
318 typedef Dune::Intersection< const Grid, LevelIntersectionWrapper< const Grid > >
LevelIntersection;
325 typedef Dune::EntityIterator< 0, const Grid, ALU3dGridHierarchicIterator< const Grid > >
HierarchicIterator;
334 typedef typename Twists::Twist
Twist;
343 typedef Dune::Entity< cd, dim, const Grid, ALU3dGridEntity >
Entity;
348 template< PartitionIteratorType pitype >
351 typedef Dune::EntityIterator< cd, const Grid, ALU3dGridLevelIterator< cd, pitype, const Grid > >
LevelIterator;
352 typedef Dune::EntityIterator< cd, const Grid, ALU3dGridLeafIterator< cd, pitype, const Grid > >
LeafIterator;
359 template< PartitionIteratorType pitype >
362 typedef Dune::GridView< ALU3dLevelGridViewTraits< const Grid, pitype > >
LevelGridView;
363 typedef Dune::GridView< ALU3dLeafGridViewTraits< const Grid, pitype > >
LeafGridView;
379 typedef IdSet< Grid, LocalIdSetImp, LocalIdType >
LocalIdSet;
423 template<
int dim,
int dimworld, ALU3dGr
idElementType elType,
class Comm >
425 :
public GridDefaultImplementation< dim, dimworld, alu3d_ctype,
426 ALU3dGridFamily< dim, dimworld, elType, Comm > >,
431 typedef GridDefaultImplementation< dim, dimworld, alu3d_ctype, ALU3dGridFamily< dim, dimworld, elType, Comm > > BaseType;
493 template<
int codim >
495 :
public BaseType::template
Codim< codim >
499 typedef typename Twists::Twist
Twist;
503 typedef MakeableInterfaceObject< typename Traits::template Codim< 0 >::Geometry >
GeometryObject;
508 template <PartitionIteratorType pitype>
537 typedef std::decay_t< decltype( ReferenceElementContainerType::general( std::declval< const Dune::GeometryType & >() ) ) >
ReferenceElementType;
539 typedef std::decay_t< decltype( ReferenceFaceContainerType::general( std::declval< const Dune::GeometryType & >() ) ) >
ReferenceFaceType;
605 ALU3dGrid (
const std::string ¯oTriangFilename,
614 static inline std::string
name ();
622 template<
int cd, PartitionIteratorType pitype>
623 typename Traits::template Codim<cd>::template Partition<pitype>::LevelIterator
627 template<
int cd, PartitionIteratorType pitype>
628 typename Traits::template Codim<cd>::template Partition<pitype>::LevelIterator
629 lend (
int level)
const;
633 typename Traits::template Codim<cd>::
634 template Partition<All_Partition>::LevelIterator
639 typename Traits::template Codim<cd>::
640 template Partition<All_Partition>::LevelIterator
641 lend (
int level)
const;
680 template <
int codim, PartitionIteratorType pitype>
681 typename Traits::template Codim<codim>::template Partition<pitype>::LeafIterator
685 template <
int codim, PartitionIteratorType pitype>
686 typename Traits::template Codim<codim>::template Partition<pitype>::LeafIterator
691 typename Traits::template Codim<codim>::LeafIterator
696 typename Traits::template Codim<codim>::LeafIterator
701 int size (
int level,
int cd)
const;
704 int size (
int codim)
const;
707 int size (
int level, GeometryType type)
const;
713 int size (GeometryType type)
const;
732 template<PartitionIteratorType pitype>
769 assert( elType ==
tetra ? type.isSimplex() : type.isCube() );
845 const double ldbUnder = 0.0,
846 const double ldbOver = 1.2 )
848 using DataBase =
ALU3DSPACE LoadBalancer::DataBase ;
849 if( mthd <
int( DataBase::NONE ) && mthd > DataBase::ZOLTAN_LB_PARMETIS )
851 DUNE_THROW(InvalidStateException,
"ALUGrid::setLoadBalanceMethod: wrong method passed, check documentation for correect values");
854 ALU3DSPACE ALUGridExternalParameters::setLoadBalanceParameters( mthd, ldbUnder, ldbOver );
874 template<
class DataHandleImpl,
class Data >
875 bool loadBalance ( CommDataHandleIF< DataHandleImpl, Data > &dataHandleIF )
877 typedef ALU3DSPACE GatherScatterLoadBalanceDataHandle
879 DataHandleType dataHandle( *
this, dataHandleIF );
894 template<
class LBWeights,
class DataHandleImpl,
class Data >
896 CommDataHandleIF< DataHandleImpl, Data > &dataHandleIF )
898 typedef ALU3DSPACE GatherScatterLoadBalanceDataHandle
899 <
ThisType, LBWeights, DataHandleImpl, Data,
false > DataHandleType;
900 DataHandleType dataHandle( *
this, dataHandleIF, weights );
913 template<
class LBWeights >
914 typename std::enable_if< !IsDataHandle< LBWeights >::value,
bool >::type
loadBalance ( LBWeights &weights )
916 typedef ALU3DSPACE GatherScatterLoadBalance < ThisType, LBWeights, false > LoadBalanceHandleType;
917 LoadBalanceHandleType loadBalanceHandle( *
this, weights );
929 template<
class LBDestinations >
932 typedef ALU3DSPACE GatherScatterLoadBalance< ThisType, LBDestinations, true > LoadBalanceHandleType ;
933 LoadBalanceHandleType loadBalanceHandle( *
this, destinations );
947 template<
class LBDestinations,
class DataHandleImpl,
class Data >
949 CommDataHandleIF< DataHandleImpl, Data > &dataHandleIF )
951 typedef ALU3DSPACE GatherScatterLoadBalanceDataHandle< ThisType, LBDestinations, DataHandleImpl, Data, true > DataHandleType;
952 DataHandleType dataHandle( *
this, dataHandleIF, destinations );
960 int ghostSize (
int level,
int codim)
const;
972 template<
class DataHandle,
class Data >
974 InterfaceType iftype,
975 CommunicationDirection dir,
984 template<
class DataHandle,
class Data >
986 InterfaceType iftype,
987 CommunicationDirection dir )
const
1016 template<
class Gr
idImp,
class DataHandle >
1017 bool adapt ( AdaptDataHandleInterface< GridImp, DataHandle > &handle );
1022 template<
class Gr
idImp,
class DataHandle >
1023 void globalRefine (
int refCount, AdaptDataHandleInterface< GridImp, DataHandle > &handle );
1030 bool writeMacroGrid(
const std::string path,
const std::string filename,
1031 const ALU3DSPACE MacroFileHeader::Format format =
ALU3DSPACE MacroFileHeader::defaultFormat )
const ;
1034 void backup( std::ostream&,
const ALU3DSPACE MacroFileHeader::Format format )
const ;
1037 void restore( std::istream& ) ;
1046 bool mark(
int refCount ,
const typename Traits::template Codim<0>::Entity & e);
1049 int getMark(
const typename Traits::template Codim<0>::Entity & e)
const;
1054 return Communications::defaultComm();
1085 return Communications::getBuilder(
myGrid() );
1091 Communications::completeGrid(
myGrid() );
1100 static const auto& refElem = ( elType ==
tetra ) ?
1109 static const auto& refElem = ( elType ==
tetra ) ?
1115 template <
class EntitySeed >
1116 typename Traits :: template Codim< EntitySeed :: codimension > :: EntityPointer
1119 enum { codim = EntitySeed :: codimension };
1123 template <
class EntitySeed >
1124 typename Traits :: template Codim< EntitySeed :: codimension > :: Entity
1221 return comm().size() > 1 &&
myGrid().ghostCellsEnabled();
1242 mutable std::unique_ptr< GitterImplType >
mygrid_;
1305 const std::string filename );
1308 namespace Capabilities
1311 template<
int dim,
int dimworld, ALU3dGr
idElementType elType,
class Comm,
int cdim >
1314 static const bool v =
true;
1317 template<
int dim,
int dimworld, ALU3dGr
idElementType elType,
class Comm >
1318 struct isLevelwiseConforming<
ALU3dGrid< dim, dimworld, elType, Comm > >
1320 static const bool v =
true;
1323 template<
int dim,
int dimworld, ALU3dGr
idElementType elType,
class Comm >
1324 struct hasBackupRestoreFacilities<
ALU3dGrid< dim, dimworld, elType, Comm > >
1326 static const bool v =
true;
1334 #if COMPILE_ALUGRID_INLINE
#define ALU3DSPACE
Definition: alu3dinclude.hh:7
#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:63
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:68
const char * elType2Name(ALU3dGridElementType elType)
Definition: grid_imp.cc:363
ALUGridRefinementType
available refinement types for ALUGrid
Definition: declaration.hh:24
@ conforming
use conforming bisection refinement
Definition: declaration.hh:25
Definition: alu3dinclude.hh:242
Definition: alu3dinclude.hh:328
bool up2Date() const
Definition: alu3dinclude.hh:340
void setupVxList(const GridType &grid, int level)
Definition: alu3dinclude.hh:364
void setupVxList(const GridType &grid)
int getLevel(const VertexType &vertex) const
Definition: alu3dinclude.hh:389
bool up2Date() const
Definition: alu3dinclude.hh:377
Definition: alu3dinclude.hh:409
Definition: communication.hh:27
Definition: communication.hh:30
[ provides Dune::Grid ]
Definition: 3d/grid.hh:429
bool repartition(LBDestinations &destinations, CommDataHandleIF< DataHandleImpl, Data > &dataHandleIF)
Distribute the grid based on a user defined partitioning.
Definition: 3d/grid.hh:948
int getLevelOfLeafVertex(const typename ALU3dImplTraits< elType, Comm >::VertexType &vertex) const
Definition: 3d/grid.hh:1140
MakeableInterfaceObject< typename Traits::template Codim< 0 >::Geometry > GeometryObject
Definition: 3d/grid.hh:503
const HierarchicIndexSet & hierarchicIndexSet() const
Definition: 3d/grid.hh:1040
ALU3dGrid(const std::string ¯oTriangFilename, const MPICommunicatorType mpiComm, const ALUGridVertexProjectionPairType &bndPrj, const ALUGridRefinementType refinementType)
Definition: grid_inline.hh:24
const Traits ::LeafIndexSet & leafIndexSet() const
get leaf index set of the grid
Definition: grid_inline.hh:431
Traits::CollectiveCommunication CollectiveCommunication
type of collective communication object
Definition: 3d/grid.hh:552
ALU3dGridIntersectionIterator< const ThisType > IntersectionIteratorImp
Definition: 3d/grid.hh:464
static const int dimensionworld
Definition: 3d/grid.hh:491
bool mark(int refCount, const typename Traits::template Codim< 0 >::Entity &e)
Definition: grid_inline.hh:190
LevelCommunication communicate(CommDataHandleIF< DataHandle, Data > &data, InterfaceType iftype, CommunicationDirection dir, int level) const
Definition: 3d/grid.hh:973
int overlapSize(int level, int codim) const
overlapSize is zero for this grid
Definition: 3d/grid.hh:963
bool loadBalance()
Calculates load of each process and repartition by using ALUGrid's default partitioning method....
Definition: 3d/grid.hh:863
int coarsenMarked_
Definition: 3d/grid.hh:1248
std::unique_ptr< Communications > communications_
Definition: 3d/grid.hh:1297
Partition< pitype >::MacroGridView macroGridView() const
View for te macro grid with some alu specific methods.
Definition: 3d/grid.hh:733
void updateStatus()
Definition: grid_inline.hh:361
static void setLoadBalanceMethod(const int mthd, const double ldbUnder=0.0, const double ldbOver=1.2)
Set load balancing method and lower and upper bound for decision on whether to load balance or not.
Definition: 3d/grid.hh:844
ALU3dGridLevelIntersectionIterator< const ThisType > LevelIntersectionIteratorImp
Definition: 3d/grid.hh:468
ALU3dGrid(const ThisType &)
Copy constructor should not be used.
Traits ::template Codim< EntitySeed ::codimension >::EntityPointer entityPointer(const EntitySeed &seed) const
Definition: 3d/grid.hh:1117
virtual ALU3DSPACE Gitter::Geometric::BuilderIF & getBuilder() const
Definition: 3d/grid.hh:1083
static const ReferenceFaceType & faceReferenceElement()
return reference to Dune face reference element according to elType
Definition: 3d/grid.hh:1107
HierarchicIndexSet hIndexSet_
Definition: 3d/grid.hh:1256
Traits::LeafIntersectionIterator ileafend(const typename Traits::template Codim< 0 >::Entity &entity) const
Definition: 3d/grid.hh:655
Traits::template Codim< 0 >::LeafIterator LeafIterator
Definition: 3d/grid.hh:573
std::vector< std::shared_ptr< LevelIndexSetImp > > levelIndexVec_
Definition: 3d/grid.hh:1265
int maxLevel() const
Return maximum level defined in this grid. Levels are numbered maxLevel with 0 the coarsest level.
Definition: grid_inline.hh:81
ALULeafCommunication< dim, dimworld, elType, Comm > LeafCommunication
Definition: 3d/grid.hh:554
Traits::template Codim< codim >::template Partition< pitype >::LeafIterator leafend() const
General definition for an end iterator on leaf level.
Definition: grid_inline.hh:171
GridFamily::Traits Traits
Definition: 3d/grid.hh:488
Traits::DuneBoundaryProjectionType DuneBoundaryProjectionType
boundary projection type
Definition: 3d/grid.hh:542
const Traits ::LevelIndexSet & levelIndexSet(int level) const
get level index set of the grid
Definition: grid_inline.hh:446
ALU3dGridCommunications< dim, dimworld, elType, Comm > Communications
Definition: 3d/grid.hh:594
int hierSetSize(int cd) const
Definition: grid_inline.hh:73
static const ReferenceElementType & referenceElement()
return reference to Dune reference element according to elType
Definition: 3d/grid.hh:1098
GitterImplType & myGrid() const
Definition: grid_inline.hh:89
Traits::LocalIdSet LocalIdSet
Type of the local id set.
Definition: 3d/grid.hh:568
const Communications & communications() const
Definition: 3d/grid.hh:1202
static MPICommunicatorType defaultCommunicator()
Definition: 3d/grid.hh:1052
ALULevelCommunication< dim, dimworld, elType, Comm > LevelCommunication
Definition: 3d/grid.hh:555
std::decay_t< decltype(ReferenceElementContainerType::general(std::declval< const Dune::GeometryType & >))) > ReferenceElementType
Definition: 3d/grid.hh:537
ALU3DSPACE GatherScatterType::ObjectStreamType ObjectStreamType
Definition: 3d/grid.hh:483
void checkMacroGridFile(const std::string filename)
check whether macro grid format is of our type
Definition: grid_imp.cc:304
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:895
const GlobalIdSet & globalIdSet() const
get global id set of grid
Definition: 3d/grid.hh:722
std::shared_ptr< LevelIndexSetImp > createLevelIndexSet(int level) const
Definition: grid_inline.hh:479
virtual ~ALU3dGrid()
Desctructor.
Definition: 3d/grid.hh:611
int maxlevel_
Definition: 3d/grid.hh:1245
void globalRefine(int refCount)
uses the interface, mark on entity and refineLocal
Definition: grid_inline.hh:488
BoundarySegmentIndexSetType macroBoundarySegmentIndexSet_
Definition: 3d/grid.hh:1286
bool adapt()
Definition: grid_inline.hh:516
ALU3dGridIntersectionIterator< const ThisType > LeafIntersectionIteratorImp
Definition: 3d/grid.hh:466
ALU3DSPACE ProjectVertex ALUGridVertexProjectionType
type of vertex projection
Definition: 3d/grid.hh:545
bool repartition(LBDestinations &destinations)
Distribute the grid based on a user defined partitioning.
Definition: 3d/grid.hh:930
bool ghostCellsEnabled() const
Definition: 3d/grid.hh:1219
void makeGeometries()
Definition: grid_imp.cc:178
ALU3dGridLeafIterator< 0, All_Partition, const ThisType > LeafIteratorImp
Definition: 3d/grid.hh:571
static std::string name()
for grid identification
Definition: grid_inline.hh:278
bool lockPostAdapt_
Definition: 3d/grid.hh:1289
const ThisType & operator=(const ThisType &)
assignment operator should not be used
Definition: grid_imp.cc:205
static const int dimension
Definition: 3d/grid.hh:490
LeafIntersectionIteratorWrapper< const ThisType > LefInterItWrapperType
Definition: 3d/grid.hh:643
std::unique_ptr< GlobalIdSetImp > globalIdSet_
Definition: 3d/grid.hh:1259
std::shared_ptr< LevelIndexSetImp > accessLevelIndexSet(int level) const
return instance of level index set
Definition: grid_inline.hh:463
Traits ::template Codim< EntitySeed ::codimension >::Entity entity(const EntitySeed &seed) const
Definition: 3d/grid.hh:1125
ALU3dGridHierarchicIterator< const ThisType > HierarchicIteratorImp
Definition: 3d/grid.hh:575
int nlinks() const
Definition: 3d/grid.hh:1132
ALU3dGridItemListType & getGhostLevelList(int codim, int level) const
Definition: 3d/grid.hh:1162
Traits::LeafIntersectionIterator ileafbegin(const typename Traits::template Codim< 0 >::Entity &entity) const
Definition: 3d/grid.hh:647
int refineMarked_
Definition: 3d/grid.hh:1249
GridFamily::LevelIndexSetImp LevelIndexSetImp
Type of the level index set, needed by data handle.
Definition: 3d/grid.hh:527
GridFamily::LocalIdSetImp LocalIdSetImp
Type of the local id set.
Definition: 3d/grid.hh:559
ALU3dGridItemListType & getGhostLeafList(int codim) const
Definition: 3d/grid.hh:1155
std::unique_ptr< SizeCacheType > sizeCache_
Definition: 3d/grid.hh:1283
Partition< All_Partition >::MacroGridView MacroGridView
Definition: 3d/grid.hh:521
ALU3DSPACE ProjectVertexPtr ALUGridVertexProjectionPointerType
type of ALUGrid Vertex Projection Interface (shared_ptr)
Definition: 3d/grid.hh:548
void finalizeGridCreation()
Definition: grid_imp.cc:376
void recalcGlobalSize()
make grid walkthrough and calc global size
static const ALU3dGridElementType elementType
Definition: 3d/grid.hh:481
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:985
Codim< cd >::Twists twists(GeometryType type) const
Definition: 3d/grid.hh:766
void backup(std::ostream &, const ALU3DSPACE MacroFileHeader::Format format) const
backup to ostream
Definition: grid_imp.cc:268
void clearIsNewMarkers()
clear all entity new markers
Definition: grid_imp.cc:444
ObjectStreamType InStreamType
Definition: 3d/grid.hh:484
ReferenceElements< alu3d_ctype, dim-1 > ReferenceFaceContainerType
Definition: 3d/grid.hh:534
ALU3DSPACE ProjectVertexPtrPair ALUGridVertexProjectionPairType
Definition: 3d/grid.hh:549
const ALUGridRefinementType refinementType_
Definition: 3d/grid.hh:1300
@ refineEstimate_
if one element is refined then it causes apporximately not more than this number of new elements
Definition: 3d/grid.hh:589
Partition< All_Partition >::LevelGridView LevelGridView
View types for All_Partition.
Definition: 3d/grid.hh:519
void postAdapt()
clear all entity new markers if lockPostAdapt_ is set
Definition: grid_imp.cc:429
void restore(std::istream &)
restore from istream
Definition: grid_imp.cc:276
@ numberOfGeomTypes
Definition: 3d/grid.hh:1252
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:99
std::vector< std::vector< GeometryType > > geomTypes_
Definition: 3d/grid.hh:1253
ALU3dGridItemListType & getEdgeList(int level) const
Definition: 3d/grid.hh:1173
void calcMaxLevel()
calculate maxlevel
Definition: grid_imp.cc:214
bool conformingRefinement() const
Definition: 3d/grid.hh:1213
std::vector< ALU3dGridItemListType > levelEdgeList_
Definition: 3d/grid.hh:1277
ALUGridVertexProjectionPairType vertexProjections_
Definition: 3d/grid.hh:1294
ObjectStreamType OutStreamType
Definition: 3d/grid.hh:485
ALU3dGridFamily< dim, dimworld, elType, Comm > GridFamily
Definition: 3d/grid.hh:487
bool preAdapt()
returns if a least one entity was marked for coarsening
Definition: grid_inline.hh:507
void calcExtras()
reset size and global size, update Level- and LeafIndexSet, if they exist
Definition: grid_inline.hh:371
VertexListType & getVertexList(int level) const
Definition: 3d/grid.hh:1146
std::unique_ptr< GitterImplType > mygrid_
Definition: 3d/grid.hh:1242
ALU3dGridLeafVertexList< Comm > LeafVertexListType
Definition: 3d/grid.hh:598
SizeCache< MyType > SizeCacheType
Definition: 3d/grid.hh:1282
ALU3dGridVertexList< Comm > VertexListType
Definition: 3d/grid.hh:597
ALU3dGridItemListType ghostLeafList_[3]
Definition: 3d/grid.hh:1274
GridFamily::LeafIndexSetImp LeafIndexSetImp
Type of the leaf index set, needed by data handle.
Definition: 3d/grid.hh:529
virtual void completeGrid()
Definition: 3d/grid.hh:1089
Comm MPICommunicatorType
Definition: 3d/grid.hh:592
ALU3DSPACE GatherScatter GatherScatterType
Definition: 3d/grid.hh:774
const CollectiveCommunication & comm() const
Definition: 3d/grid.hh:1001
LeafVertexListType & getLeafVertexList() const
Definition: 3d/grid.hh:1134
int getMark(const typename Traits::template Codim< 0 >::Entity &e) const
Definition: grid_inline.hh:205
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:914
virtual GitterImplType * createALUGrid(std::istream &stream)
Definition: 3d/grid.hh:1071
virtual GitterImplType * createALUGrid(const std::string ¯oName)
Definition: 3d/grid.hh:1065
Partition< All_Partition >::LeafGridView LeafGridView
Definition: 3d/grid.hh:520
@ refineStepsForHalf
Definition: 3d/grid.hh:479
const LocalIdSet & localIdSet() const
get global id set of grid
Definition: 3d/grid.hh:747
std::vector< VertexListType > vertexList_
Definition: 3d/grid.hh:1270
ALU3dImplTraits< elType, Comm >::GitterImplType GitterImplType
Definition: 3d/grid.hh:577
std::decay_t< decltype(ReferenceFaceContainerType::general(std::declval< const Dune::GeometryType & >))) > ReferenceFaceType
Definition: 3d/grid.hh:539
Traits::template Codim< codim >::template Partition< pitype >::LeafIterator leafbegin() const
General definiton for a leaf iterator.
Definition: grid_inline.hh:148
MacroGridView macroGridView() const
View for te macro grid with some alu specific methods (All_Partition)
Definition: 3d/grid.hh:740
Traits::LevelIntersectionIterator ilevelbegin(const typename Traits::template Codim< 0 >::Entity &entity) const
Definition: 3d/grid.hh:663
LeafVertexListType leafVertexList_
Definition: 3d/grid.hh:1279
Traits::template Codim< cd >::template Partition< pitype >::LevelIterator lend(int level) const
one past the end on this level
Definition: grid_inline.hh:113
ALUGridVertexProjectionPairType vertexProjections() const
Definition: 3d/grid.hh:1077
@ newElementsChunk_
normal default number of new elements for new adapt method
Definition: 3d/grid.hh:582
std::vector< ALU3dGridItemListType > ghostLevelList_[3]
Definition: 3d/grid.hh:1275
GridFamily::GlobalIdSetImp GlobalIdSetImp
Definition: 3d/grid.hh:561
bool loadBalance(CommDataHandleIF< DataHandleImpl, Data > &dataHandleIF)
Calculates load of each process and repartition by using ALUGrid's default partitioning method....
Definition: 3d/grid.hh:875
const BoundarySegmentIndexSetType & macroBoundarySegmentIndexSet() const
Definition: 3d/grid.hh:1224
int global_size(int cd) const
number of grid entities on all levels for given codim
Definition: grid_inline.hh:63
Traits::template Codim< 0 >::LeafIterator LeafIteratorType
Definition: 3d/grid.hh:572
int ghostSize(int level, int codim) const
ghostSize is one for codim 0 and zero otherwise for this grid
Definition: grid_inline.hh:352
int size(int level, int cd) const
number of grid entities per level and codim
Definition: grid_inline.hh:289
Traits::LevelIntersectionIterator ilevelend(const typename Traits::template Codim< 0 >::Entity &entity) const
Definition: 3d/grid.hh:671
size_t numBoundarySegments() const
number of boundary segments
Definition: grid_inline.hh:303
void checkMacroGrid()
check whether macro grid has the right element type
Definition: grid_imp.cc:343
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:246
Traits::GlobalIdSet GlobalIdSet
Type of the global id set.
Definition: 3d/grid.hh:565
std::unique_ptr< LeafIndexSetImp > leafIndexSet_
Definition: 3d/grid.hh:1268
DefaultBoundarySegmentIndexSet< ThisType > BoundarySegmentIndexSetType
Definition: 3d/grid.hh:600
LevelIntersectionIteratorWrapper< const ThisType > LvlInterItWrapperType
Definition: 3d/grid.hh:644
const std::vector< GeometryType > & geomTypes(int codim) const
deliver all geometry types used in this grid
Definition: 3d/grid.hh:1058
ALU3dGridHierarchicIndexSet< dim, dimworld, elType, Comm > HierarchicIndexSet
Type of the hierarchic index set.
Definition: 3d/grid.hh:524
LocalIdSetImp localIdSet_
Definition: 3d/grid.hh:1262
ReferenceElements< alu3d_ctype, dim > ReferenceElementContainerType
Definition: 3d/grid.hh:532
int overlapSize(int codim) const
overlapSize is zero for this grid
Definition: 3d/grid.hh:969
Definition: entity.hh:620
Definition: geometry.hh:632
Definition: iterator.hh:722
Definition: iterator.hh:56
Leaf iterator.
Definition: iterator.hh:648
Definition: entity.hh:454
Definition: entityseed.hh:212
Definition: iterator.hh:296
Definition: 3d/grid.hh:72
Definition: 3d/grid.hh:74
Definition: 3d/grid.hh:76
Definition: 3d/grid.hh:78
hierarchic index set of ALU3dGrid
Definition: indexsets.hh:39
Factory class for ALUGrids.
Definition: gridfactory.hh:30
Definition: geostorage.hh:23
ALU3dGrid< dim, dimw, hexa, Comm > BaseGrid
Definition: 3d/grid.hh:106
ALU3dGrid< dim, dimw, tetra, Comm > BaseGrid
Definition: 3d/grid.hh:112
Definition: 3d/grid.hh:117
static int getRank(ALUGridNoComm comm)
Definition: 3d/grid.hh:150
CollectiveCommunication ccobj_
Definition: 3d/grid.hh:166
GitterImplType * createALUGrid(std::istream &stream, const ALU3DSPACE ProjectVertexPtrPair &projection, const bool conformingRefinement)
Definition: 3d/grid.hh:141
static ALU3DSPACE Gitter::Geometric::BuilderIF & getBuilder(GitterImplType &grid)
Definition: 3d/grid.hh:152
int nlinks() const
Definition: 3d/grid.hh:131
void print(std::ostream &out) const
Definition: 3d/grid.hh:163
Dune::CollectiveCommunication< No_Comm > CollectiveCommunication
Definition: 3d/grid.hh:127
GitterImplType * createALUGrid(const std::string ¯oName, const ALU3DSPACE ProjectVertexPtrPair &projections, const bool conformingRefinement)
Definition: 3d/grid.hh:133
static void completeGrid(GitterImplType &grid)
Definition: 3d/grid.hh:161
ALU3dGridCommunications(ALUGridNoComm comm)
Definition: 3d/grid.hh:129
ALU3DSPACE GitterDuneImpl GitterImplType
Definition: 3d/grid.hh:125
ALU3dGridLocalIdSet< dim, dimworld, elType, ALUGridNoComm > GlobalIdSet
Definition: 3d/grid.hh:122
int GlobalId
Definition: 3d/grid.hh:123
static ALUGridNoComm defaultComm()
Definition: 3d/grid.hh:148
Definition: 3d/grid.hh:241
TrivialTwists< topoId, dim > Type
Definition: 3d/grid.hh:247
TrivialTwists< topoId, dim > Type
Definition: 3d/grid.hh:254
ALUTwists< dim==2 ? 2 :ElementTopologyMapping< elType >::numVerticesPerFace, dim-1 > Type
Definition: 3d/grid.hh:260
ALUTwists< 2, 1 > Type
Definition: 3d/grid.hh:266
TrivialTwists< 0u, 0 > Type
Definition: 3d/grid.hh:272
TrivialTwists< 0u, 0 > Type
Definition: 3d/grid.hh:278
Definition: 3d/grid.hh:288
ALU3dGridCommunications< dim, dimworld, elType, Comm >::GlobalIdSet GlobalIdSetImp
Type of the global id set.
Definition: 3d/grid.hh:299
ALU3dGridCommunications< dim, dimworld, elType, Comm >::GlobalId GlobalIdType
type of ALU3dGrids global id
Definition: 3d/grid.hh:302
ALU3dGridLocalIdSet< dim, dimworld, elType, Comm > LocalIdSetImp
Type of the local id set.
Definition: 3d/grid.hh:296
static const int dimworld
Definition: 3d/grid.hh:290
ALU3dGridFamily< dim, dimworld, elType, Comm > GridFamily
Definition: 3d/grid.hh:293
Traits ::LevelIndexSetImp LevelIndexSetImp
Type of the level index set implementation.
Definition: 3d/grid.hh:387
ALU3dGrid< dim, dimworld, elType, Comm > GridImp
Definition: 3d/grid.hh:292
Traits ::LeafIndexSetImp LeafIndexSetImp
Type of the leaf index set implementation.
Definition: 3d/grid.hh:390
int LocalIdType
type of ALU3dGrids local id
Definition: 3d/grid.hh:305
static const int dim
Definition: 3d/grid.hh:289
Definition: 3d/grid.hh:308
IndexSet< Grid, LeafIndexSetImp > LeafIndexSet
Definition: 3d/grid.hh:378
DefaultIndexSet< Grid, typename Codim< 0 >::LevelIterator > LevelIndexSetImp
Type of the level index set.
Definition: 3d/grid.hh:372
GridFamily::LocalIdType LocalIdType
type of ALU3dGrids local id
Definition: 3d/grid.hh:310
Partition< All_Partition >::MacroGridView MacroGridView
Definition: 3d/grid.hh:367
ALU3dGridCommunications< dim, dimworld, elType, Comm >::CollectiveCommunication CollectiveCommunication
Type of the communication class.
Definition: 3d/grid.hh:383
Dune::EntityIterator< 0, const Grid, ALU3dGridHierarchicIterator< const Grid > > HierarchicIterator
Definition: 3d/grid.hh:325
IdSet< Grid, GlobalIdSetImp, GlobalIdType > GlobalIdSet
Definition: 3d/grid.hh:380
Dune::IntersectionIterator< const Grid, LevelIntersectionIteratorWrapper< const Grid >, LevelIntersectionWrapper< const Grid > > LevelIntersectionIterator
Definition: 3d/grid.hh:323
Dune::IntersectionIterator< const Grid, LeafIntersectionIteratorWrapper< const Grid >, LeafIntersectionWrapper< const Grid > > LeafIntersectionIterator
Definition: 3d/grid.hh:322
GridFamily::GridImp Grid
Definition: 3d/grid.hh:315
IdSet< Grid, LocalIdSetImp, LocalIdType > LocalIdSet
Definition: 3d/grid.hh:379
GridFamily::GlobalIdType GlobalIdType
type of ALU3dGrids global id
Definition: 3d/grid.hh:313
IndexSet< Grid, LevelIndexSetImp > LevelIndexSet
Definition: 3d/grid.hh:377
Partition< All_Partition >::LeafGridView LeafGridView
Definition: 3d/grid.hh:368
Dune::IntersectionIterator< const Grid, LeafIntersectionIteratorWrapper< const Grid >, LeafIntersectionWrapper< const Grid > > IntersectionIterator
Definition: 3d/grid.hh:320
Partition< All_Partition >::LevelGridView LevelGridView
Definition: 3d/grid.hh:369
Dune::Intersection< const Grid, LevelIntersectionWrapper< const Grid > > LevelIntersection
Definition: 3d/grid.hh:318
DuneBoundaryProjection< dimworld > DuneBoundaryProjectionType
Definition: 3d/grid.hh:327
Dune::Intersection< const Grid, LeafIntersectionWrapper< const Grid > > LeafIntersection
Definition: 3d/grid.hh:317
DefaultIndexSet< Grid, typename Codim< 0 >::LeafIterator > LeafIndexSetImp
Type of the leaf index set.
Definition: 3d/grid.hh:375
std::vector< const DuneBoundaryProjectionType * > DuneBoundaryProjectionVector
Definition: 3d/grid.hh:328
Definition: 3d/grid.hh:332
ALU3dGridTwists< dim, elType, cd >::Type Twists
Definition: 3d/grid.hh:333
Dune::Geometry< dim-cd, dimworld, const Grid, ALU3dGridGeometry > Geometry
Definition: 3d/grid.hh:339
ALU3dGridGeometry< dim-cd, dim, const Grid > LocalGeometryImpl
Definition: 3d/grid.hh:338
Twists::Twist Twist
Definition: 3d/grid.hh:334
ALU3dGridGeometry< dim-cd, dimworld, const Grid > GeometryImpl
Definition: 3d/grid.hh:337
ALU3dGridEntitySeed< cd, const Grid > EntitySeed
Definition: 3d/grid.hh:346
ALU3dGridEntity< cd, dim, const Grid > EntityImp
Definition: 3d/grid.hh:342
Dune::Geometry< dim-cd, dim, const Grid, ALU3dGridGeometry > LocalGeometry
Definition: 3d/grid.hh:340
Dune::Entity< cd, dim, const Grid, ALU3dGridEntity > Entity
Definition: 3d/grid.hh:343
Partition< All_Partition >::LevelIterator LevelIterator
Definition: 3d/grid.hh:355
Partition< All_Partition >::LeafIterator LeafIterator
Definition: 3d/grid.hh:356
Definition: 3d/grid.hh:350
Dune::EntityIterator< cd, const Grid, ALU3dGridLeafIterator< cd, pitype, const Grid > > LeafIterator
Definition: 3d/grid.hh:352
Dune::EntityIterator< cd, const Grid, ALU3dGridLevelIterator< cd, pitype, const Grid > > LevelIterator
Definition: 3d/grid.hh:351
Definition: 3d/grid.hh:361
Dune::GridView< ALU3dLeafGridViewTraits< const Grid, pitype > > LeafGridView
Definition: 3d/grid.hh:363
Dune::GridView< ALU3dLevelGridViewTraits< const Grid, pitype > > LevelGridView
Definition: 3d/grid.hh:362
Dune::MacroGridView< const Grid, pitype > MacroGridView
Definition: 3d/grid.hh:364
Definition: 3d/grid.hh:496
Traits::template Codim< codim >::Twists Twists
Definition: 3d/grid.hh:498
Traits::template Codim< codim >::EntityImp EntityImp
Definition: 3d/grid.hh:497
Twists::Twist Twist
Definition: 3d/grid.hh:499
Types for GridView.
Definition: 3d/grid.hh:510
GridFamily::Traits::template Partition< pitype >::LeafGridView LeafGridView
Definition: 3d/grid.hh:514
GridFamily::Traits::template Partition< pitype >::MacroGridView MacroGridView
Definition: 3d/grid.hh:516
GridFamily::Traits::template Partition< pitype >::LevelGridView LevelGridView
Definition: 3d/grid.hh:512
Definition: indexsets.hh:186
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:43
Definition: declaration.hh:82
DefaultIndexSet creates an index set by using the grids persistent container an a given pair of itera...
Definition: defaultindexsets.hh:68
void invalidate()
Definition: defaultindexsets.hh:434
void update(const GridViewType &gridView)
Definition: defaultindexsets.hh:399
bool valid() const
Definition: defaultindexsets.hh:433
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:23
Definition: intersectioniteratorwrapper.hh:221
Class that wraps IntersectionIteratorImp of a grid and gets it's internal object from a object stack ...
Definition: intersectioniteratorwrapper.hh:246
Class that wraps IntersectionIteratorImp of a grid and gets it's internal object from a object stack ...
Definition: intersectioniteratorwrapper.hh:322
Class that wraps IntersectionIteratorImp of a grid and gets it's internal object from a object stack ...
Definition: intersectioniteratorwrapper.hh:346
Definition: macrogridview.hh:71
Definition: twists.hh:440
Definition: twists.hh:595