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>
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 >
81 template <
class EntityImp>
85 template <
class Gr
idImp,
class GeometryImp,
int nChild>
94 template<
int dim,
int dimworld, ALU3dGr
idElementType elType,
class Comm = ALUGr
idMPIComm >
97 template<
int dim,
int dimworld, ALU3dGr
idElementType elType,
class Comm = ALUGr
idNoComm >
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_;
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;
346 typedef typename GridFamily::GridImp
Grid;
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;
527 typedef typename GridFamily::Traits
Traits;
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")
845 const typename Traits :: LeafIndexSet &
leafIndexSet ()
const;
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 ) ?
1172 ReferenceElements< alu3d_ctype, dimension > :: simplex()
1173 : ReferenceElements< alu3d_ctype, dimension > :: cube();
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
1212 if(!vxList.up2Date()) vxList.setupVxList(*
this,level);
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;
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
#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:664
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
Definition alu3dinclude.hh:381
Definition alu3dinclude.hh:426
Definition communication.hh:26
Definition communication.hh:29
[ provides Dune::Grid ]
Definition 3d/grid.hh:468
int ghostSize(int level, int codim) const
ghostSize is one for codim 0 and zero otherwise for this grid
Definition grid_imp.cc:294
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
bool repartition(LBDestinations &destinations, CommDataHandleIF< DataHandleImpl, Data > &dataHandleIF)
Distribute the grid based on a user defined partitioning.
Definition 3d/grid.hh:1013
static int thread()
return current thread number
Definition 3d/grid.hh:1302
int getLevelOfLeafVertex(const typename ALU3dImplTraits< elType, Comm >::VertexType &vertex) const
Definition 3d/grid.hh:1201
static const ReferenceElementType & referenceElement()
return reference to Dune reference element according to elType
Definition 3d/grid.hh:1169
const DuneBoundaryProjectionType * boundaryProjection(const int segmentIndex) const
return boudanry projection for given segment Id
Definition 3d/grid.hh:1264
ALUGridBoundaryProjection< ThisType, alu3d_ctype > ALUGridBoundaryProjectionType
Definition 3d/grid.hh:591
MakeableInterfaceObject< typename Traits::template Codim< 0 >::Geometry > GeometryObject
Definition 3d/grid.hh:543
Traits::CollectiveCommunication CollectiveCommunication
type of collective communication object
Definition 3d/grid.hh:583
ALU3dGridIntersectionIterator< const ThisType > IntersectionIteratorImp
Definition 3d/grid.hh:503
void globalRefine(int refCount)
uses the interface, mark on entity and refineLocal
Definition grid_imp.cc:418
void calcExtras()
reset size and global size, update Level- and LeafIndexSet, if they exist
Definition grid_imp.cc:344
static const int dimensionworld
Definition 3d/grid.hh:530
bool mark(int refCount, const typename Traits::template Codim< 0 >::Entity &e)
Definition grid_inline.hh:307
virtual ALU3DSPACE Gitter::Geometric::BuilderIF & getBuilder() const
Definition 3d/grid.hh:1156
LevelCommunication communicate(CommDataHandleIF< DataHandle, Data > &data, InterfaceType iftype, CommunicationDirection dir, int level) const
Definition 3d/grid.hh:1038
int overlapSize(int level, int codim) const
overlapSize is zero for this grid
Definition 3d/grid.hh:1028
bool preAdapt()
returns if a least one entity was marked for coarsening
Definition grid_imp.cc:434
bool loadBalance()
Calculates load of each process and repartition by using ALUGrid's default partitioning method....
Definition 3d/grid.hh:928
int coarsenMarked_
Definition 3d/grid.hh:1320
std::unique_ptr< Communications > communications_
Definition 3d/grid.hh:1370
Traits::template Codim< EntitySeed::codimension >::Entity entity(const EntitySeed &seed) const
Definition 3d/grid.hh:1186
ALU3dGridLevelIntersectionIterator< const ThisType > LevelIntersectionIteratorImp
Definition 3d/grid.hh:507
ALU3dGrid(const ThisType &)
Copy constructor should not be used.
const CollectiveCommunication & comm() const
Definition 3d/grid.hh:1066
Traits::template Codim< 0 >::LeafIterator LeafIterator
Definition 3d/grid.hh:608
HierarchicIndexSet hIndexSet_
Definition 3d/grid.hh:1328
friend class LeafIntersectionIteratorWrapper< const ThisType >
Definition 3d/grid.hh:511
Traits::LeafIntersectionIterator ileafend(const typename Traits::template Codim< 0 >::Entity &entity) const
Definition 3d/grid.hh:689
std::unique_ptr< const DuneBoundaryProjectionVector > bndVec_
Definition 3d/grid.hh:1364
std::vector< std::shared_ptr< LevelIndexSetImp > > levelIndexVec_
Definition 3d/grid.hh:1337
int maxLevel() const
Return maximum level defined in this grid. Levels are numbered maxLevel with 0 the coarsest level.
Definition grid_inline.hh:108
ALULeafCommunication< dim, dimworld, elType, Comm > LeafCommunication
Definition 3d/grid.hh:585
GridFamily::Traits Traits
Definition 3d/grid.hh:527
const Traits::LevelIndexSet & levelIndexSet(int level) const
get level index set of the grid
Definition 3d/grid.hh:848
Traits::DuneBoundaryProjectionType DuneBoundaryProjectionType
boundary projection type
Definition 3d/grid.hh:575
ALU3dGridCommunications< dim, dimworld, elType, Comm > Communications
Definition 3d/grid.hh:629
int hierSetSize(int cd) const
Definition grid_inline.hh:100
GitterImplType & myGrid() const
Definition grid_inline.hh:116
Traits::LocalIdSet LocalIdSet
Type of the local id set.
Definition 3d/grid.hh:603
void finalizeGridCreation()
Definition grid_inline.hh:425
std::shared_ptr< LevelIndexSetImp > createLevelIndexSet(int level) const
Definition 3d/grid.hh:876
static MPICommunicatorType defaultCommunicator()
Definition 3d/grid.hh:1117
ALULevelCommunication< dim, dimworld, elType, Comm > LevelCommunication
Definition 3d/grid.hh:586
ALU3DSPACE GatherScatterType::ObjectStreamType ObjectStreamType
Definition 3d/grid.hh:522
bool adapt()
Definition grid_imp.cc:443
void checkMacroGridFile(const std::string filename)
check whether macro grid format is of our type
Definition grid_imp.cc:605
VertexListType & getVertexList(int level) const
Definition 3d/grid.hh:1207
friend class LevelIntersectionIteratorWrapper< const ThisType >
Definition 3d/grid.hh:512
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
const LocalIdSet & localIdSet() const
get global id set of grid
Definition 3d/grid.hh:842
std::unique_ptr< ALUGridBoundaryProjectionType > vertexProjection_
Definition 3d/grid.hh:1367
int maxlevel_
Definition 3d/grid.hh:1317
const std::vector< GeometryType > & geomTypes(int codim) const
deliver all geometry types used in this grid
Definition 3d/grid.hh:1134
const Communications & communications() const
Definition 3d/grid.hh:1279
ALU3dGridIntersectionIterator< const ThisType > LeafIntersectionIteratorImp
Definition 3d/grid.hh:505
ALU3DSPACE ProjectVertex ALUGridVertexProjectionType
type of ALUGrid Vertex Projection Interface
Definition 3d/grid.hh:580
virtual GitterImplType * createALUGrid(const std::string ¯oName)
Definition 3d/grid.hh:1141
bool repartition(LBDestinations &destinations)
Distribute the grid based on a user defined partitioning.
Definition 3d/grid.hh:995
bool ghostCellsEnabled() const
Definition 3d/grid.hh:1296
ALU3dGridLeafIterator< 0, All_Partition, const ThisType > LeafIteratorImp
Definition 3d/grid.hh:606
static std::string name()
for grid identification
Definition grid_inline.hh:443
bool lockPostAdapt_
Definition 3d/grid.hh:1358
const ThisType & operator=(const ThisType &)
assignment operator should not be used
Definition grid_imp.cc:194
static int maxThreads()
return max number of threads
Definition 3d/grid.hh:1305
static const int dimension
Definition 3d/grid.hh:529
Partition< pitype >::MacroGridView macroView() const
View for te macro grid with some alu specific methods.
Definition 3d/grid.hh:827
LeafIntersectionIteratorWrapper< const ThisType > LefInterItWrapperType
Definition 3d/grid.hh:677
std::shared_ptr< LevelIndexSetImp > accessLevelIndexSet(int level) const
return instance of level index set
Definition 3d/grid.hh:862
std::unique_ptr< GlobalIdSetImp > globalIdSet_
Definition 3d/grid.hh:1331
ALU3dGridHierarchicIterator< const ThisType > HierarchicIteratorImp
Definition 3d/grid.hh:610
int nlinks() const
Definition 3d/grid.hh:1193
Traits::LeafIntersectionIterator ileafbegin(const typename Traits::template Codim< 0 >::Entity &entity) const
Definition 3d/grid.hh:681
int refineMarked_
Definition 3d/grid.hh:1321
GridFamily::LevelIndexSetImp LevelIndexSetImp
Type of the level index set, needed by data handle.
Definition 3d/grid.hh:567
GridFamily::LocalIdSetImp LocalIdSetImp
Type of the local id set.
Definition 3d/grid.hh:594
std::unique_ptr< SizeCacheType > sizeCache_
Definition 3d/grid.hh:1355
void recalcGlobalSize()
make grid walkthrough and calc global size
Traits::template Codim< 0 >::LeafIterator LeafIteratorType
Definition 3d/grid.hh:607
static const ALU3dGridElementType elementType
Definition 3d/grid.hh:520
Partition< All_Partition >::LevelGridView LevelGridView
View types for All_Partition.
Definition 3d/grid.hh:559
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
Codim< cd >::Twists twists(GeometryType type) const
Definition 3d/grid.hh:883
void backup(std::ostream &, const ALU3DSPACE MacroFileHeader::Format format) const
backup to ostream
Definition grid_imp.cc:569
void clearIsNewMarkers()
clear all entity new markers
Definition grid_imp.cc:491
ObjectStreamType InStreamType
Definition 3d/grid.hh:523
void makeGeometries()
Definition grid_inline.hh:65
void updateStatus()
Definition grid_imp.cc:302
const ALUGridRefinementType refinementType_
Definition 3d/grid.hh:1373
Partition< All_Partition >::MacroGridView MacroGridView
Definition 3d/grid.hh:561
@ refineEstimate_
if one element is refined then it causes apporximately not more than this number of new elements
Definition 3d/grid.hh:624
void postAdapt()
clear all entity new markers if lockPostAdapt_ is set
Definition grid_imp.cc:533
void restore(std::istream &)
restore from istream
Definition grid_imp.cc:577
@ numberOfGeomTypes
Definition 3d/grid.hh:1324
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
std::vector< std::vector< GeometryType > > geomTypes_
Definition 3d/grid.hh:1325
void calcMaxLevel()
calculate maxlevel
Definition grid_imp.cc:311
bool conformingRefinement() const
Definition 3d/grid.hh:1290
std::vector< ALU3dGridItemListType > levelEdgeList_
Definition 3d/grid.hh:1349
const GlobalIdSet & globalIdSet() const
get global id set of grid
Definition 3d/grid.hh:800
ObjectStreamType OutStreamType
Definition 3d/grid.hh:524
const HierarchicIndexSet & hierarchicIndexSet() const
Definition 3d/grid.hh:1105
ALU3dGridFamily< dim, dimworld, elType, Comm > GridFamily
Definition 3d/grid.hh:526
std::unique_ptr< GitterImplType > mygrid_
Definition 3d/grid.hh:1314
ALU3dGridLeafVertexList< Comm > LeafVertexListType
Definition 3d/grid.hh:633
SizeCache< MyType > SizeCacheType
Definition 3d/grid.hh:1354
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 3d/grid.hh:632
ALU3dGridItemListType ghostLeafList_[3]
Definition 3d/grid.hh:1346
ReferenceElement< alu3d_ctype, dimension > ReferenceElementType
reference element type
Definition 3d/grid.hh:572
const DuneBoundaryProjectionType * bndPrj_
Definition 3d/grid.hh:1361
GridFamily::LeafIndexSetImp LeafIndexSetImp
Type of the leaf index set, needed by data handle.
Definition 3d/grid.hh:569
virtual void completeGrid()
Definition 3d/grid.hh:1162
Comm MPICommunicatorType
Definition 3d/grid.hh:627
ALU3DSPACE GatherScatter GatherScatterType
Definition 3d/grid.hh:891
int getMark(const typename Traits::template Codim< 0 >::Entity &e) const
Definition grid_inline.hh:322
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
Traits::template Codim< EntitySeed::codimension >::EntityPointer entityPointer(const EntitySeed &seed) const
Definition 3d/grid.hh:1178
@ refineStepsForHalf
Definition 3d/grid.hh:518
virtual GitterImplType * createALUGrid(std::istream &stream)
Definition 3d/grid.hh:1147
std::vector< VertexListType > vertexList_
Definition 3d/grid.hh:1342
ALU3dGridItemListType & getGhostLeafList(int codim) const
Definition 3d/grid.hh:1216
MacroGridView macroGridView() const
View for te macro grid with some alu specific methods (All_Partition)
Definition 3d/grid.hh:818
Traits::LevelIntersectionIterator ilevelbegin(const typename Traits::template Codim< 0 >::Entity &entity) const
Definition 3d/grid.hh:697
LeafVertexListType leafVertexList_
Definition 3d/grid.hh:1351
Traits::template Codim< cd >::template Partition< pitype >::LevelIterator lend(int level) const
one past the end on this level
Definition grid_inline.hh:141
LeafVertexListType & getLeafVertexList() const
Definition 3d/grid.hh:1195
@ newElementsChunk_
normal default number of new elements for new adapt method
Definition 3d/grid.hh:617
ALU3dImplTraits< elType, Comm >::GitterImplType GitterImplType
Definition 3d/grid.hh:612
std::vector< ALU3dGridItemListType > ghostLevelList_[3]
Definition 3d/grid.hh:1347
ALU3dGridItemListType & getGhostLevelList(int codim, int level) const
Definition 3d/grid.hh:1223
GridFamily::GlobalIdSetImp GlobalIdSetImp
Definition 3d/grid.hh:596
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
Traits::DuneBoundaryProjectionVector DuneBoundaryProjectionVector
boundary projection type
Definition 3d/grid.hh:577
int global_size(int cd) const
number of grid entities on all levels for given codim
Definition grid_inline.hh:90
ALU3dGridItemListType & getEdgeList(int level) const
Definition 3d/grid.hh:1234
Traits::LevelIntersectionIterator ilevelend(const typename Traits::template Codim< 0 >::Entity &entity) const
Definition 3d/grid.hh:705
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:644
Traits::GlobalIdSet GlobalIdSet
Type of the global id set.
Definition 3d/grid.hh:600
Partition< pitype >::MacroGridView macroGridView() const
View for te macro grid with some alu specific methods.
Definition 3d/grid.hh:811
const Traits::LeafIndexSet & leafIndexSet() const
get leaf index set of the grid
Definition grid_imp.cc:403
ALUGridVertexProjectionType * vertexProjection()
Definition 3d/grid.hh:1153
std::unique_ptr< LeafIndexSetImp > leafIndexSet_
Definition 3d/grid.hh:1340
LevelIntersectionIteratorWrapper< const ThisType > LvlInterItWrapperType
Definition 3d/grid.hh:678
Partition< All_Partition >::LeafGridView LeafGridView
Definition 3d/grid.hh:560
ALU3dGridHierarchicIndexSet< dim, dimworld, elType, Comm > HierarchicIndexSet
Type of the hierarchic index set.
Definition 3d/grid.hh:564
LocalIdSetImp localIdSet_
Definition 3d/grid.hh:1334
int overlapSize(int codim) const
overlapSize is zero for this grid
Definition 3d/grid.hh:1034
static const BaseType::template ReturnImplementationType< IntersectionType >::ImplementationType & getRealIntersection(const IntersectionType &intersection)
Definition 3d/grid.hh:1128
Definition geometry.hh:632
Definition iterator.hh:709
Definition iterator.hh:56
Leaf iterator.
Definition iterator.hh:635
Definition entityseed.hh:212
Definition iterator.hh:292
Definition indexsets.hh:326
hierarchic index set of ALU3dGrid
Definition indexsets.hh:944
hierarchic index set of ALU3dGrid
Definition indexsets.hh:38
Factory class for ALUGrids.
Definition gridfactory.hh:28
Definition geostorage.hh:23
ALU3dGrid< dim, dimw, hexa, Comm > BaseGrid
Definition 3d/grid.hh:108
ALU3dGrid< dim, dimw, tetra, Comm > BaseGrid
Definition 3d/grid.hh:114
Definition 3d/grid.hh:122
void checkForConformingRefinement(GitterImpl *grid, const bool conformingRefinement)
Definition 3d/grid.hh:124
Definition 3d/grid.hh:137
static int getRank(ALUGridNoComm comm)
Definition 3d/grid.hh:176
GitterImplType * createALUGrid(const std::string ¯oName, ALU3DSPACE ProjectVertex *projection, const bool conformingRefinement)
Definition 3d/grid.hh:155
static ALU3DSPACE Gitter::Geometric::BuilderIF & getBuilder(GitterImplType &grid)
Definition 3d/grid.hh:178
CollectiveCommunication ccobj_
Definition 3d/grid.hh:192
int nlinks() const
Definition 3d/grid.hh:153
void print(std::ostream &out) const
Definition 3d/grid.hh:189
Dune::CollectiveCommunication< No_Comm > CollectiveCommunication
Definition 3d/grid.hh:149
GitterImplType * createALUGrid(std::istream &stream, ALU3DSPACE ProjectVertex *projection, const bool conformingRefinement)
Definition 3d/grid.hh:165
static void completeGrid(GitterImplType &grid)
Definition 3d/grid.hh:187
ALU3dGridCommunications(ALUGridNoComm comm)
Definition 3d/grid.hh:151
ALU3DSPACE GitterDuneImpl GitterImplType
Definition 3d/grid.hh:147
ALU3dGridLocalIdSet< dim, dimworld, elType, ALUGridNoComm > GlobalIdSet
Definition 3d/grid.hh:144
int GlobalId
Definition 3d/grid.hh:145
static ALUGridNoComm defaultComm()
Definition 3d/grid.hh:174
Definition 3d/grid.hh:274
TrivialTwists< GenericGeometry::SimplexTopology< dim >::type::id, dim > Type
Definition 3d/grid.hh:279
TrivialTwists< GenericGeometry::CubeTopology< dim >::type::id, dim > Type
Definition 3d/grid.hh:285
ALUTwists< dim==2 ? 2 :ElementTopologyMapping< elType >::numVerticesPerFace, dim-1 > Type
Definition 3d/grid.hh:291
ALUTwists< 2, 1 > Type
Definition 3d/grid.hh:297
TrivialTwists< 0u, 0 > Type
Definition 3d/grid.hh:303
TrivialTwists< 0u, 0 > Type
Definition 3d/grid.hh:309
Definition 3d/grid.hh:319
ALU3dGridLocalIdSet< dim, dimworld, elType, Comm > LocalIdSetImp
Type of the local id set.
Definition 3d/grid.hh:327
static const int dimworld
Definition 3d/grid.hh:321
ALU3dGridFamily< dim, dimworld, elType, Comm > GridFamily
Definition 3d/grid.hh:324
ALU3dGridCommunications< dim, dimworld, elType, Comm >::GlobalId GlobalIdType
type of ALU3dGrids global id
Definition 3d/grid.hh:333
ALU3dGrid< dim, dimworld, elType, Comm > GridImp
Definition 3d/grid.hh:323
Traits::LeafIndexSetImp LeafIndexSetImp
Type of the leaf index set implementation.
Definition 3d/grid.hh:429
ALU3dGridCommunications< dim, dimworld, elType, Comm >::GlobalIdSet GlobalIdSetImp
Type of the global id set.
Definition 3d/grid.hh:330
int LocalIdType
type of ALU3dGrids local id
Definition 3d/grid.hh:336
static const int dim
Definition 3d/grid.hh:320
Traits::LevelIndexSetImp LevelIndexSetImp
Type of the level index set implementation.
Definition 3d/grid.hh:426
Definition 3d/grid.hh:339
IndexSet< Grid, LeafIndexSetImp > LeafIndexSet
Definition 3d/grid.hh:417
GridFamily::LocalIdType LocalIdType
type of ALU3dGrids local id
Definition 3d/grid.hh:341
DefaultIndexSet< GridImp, typename Codim< 0 >::LeafIterator > LeafIndexSetImp
Type of the leaf index set.
Definition 3d/grid.hh:414
Partition< All_Partition >::LeafGridView LeafGridView
Definition 3d/grid.hh:407
DefaultIndexSet< GridImp, typename Codim< 0 >::LevelIterator > LevelIndexSetImp
Type of the level index set.
Definition 3d/grid.hh:411
Partition< All_Partition >::LevelGridView LevelGridView
Definition 3d/grid.hh:408
Dune::EntityIterator< 0, const Grid, ALU3dGridHierarchicIterator< const Grid > > HierarchicIterator
Definition 3d/grid.hh:356
ALU3dGridCommunications< dim, dimworld, elType, Comm >::CollectiveCommunication CollectiveCommunication
Type of the communication class.
Definition 3d/grid.hh:422
IdSet< Grid, GlobalIdSetImp, GlobalIdType > GlobalIdSet
Definition 3d/grid.hh:419
Dune::IntersectionIterator< const Grid, LevelIntersectionIteratorWrapper< const Grid >, LevelIntersectionWrapper< const Grid > > LevelIntersectionIterator
Definition 3d/grid.hh:354
Dune::IntersectionIterator< const Grid, LeafIntersectionIteratorWrapper< const Grid >, LeafIntersectionWrapper< const Grid > > LeafIntersectionIterator
Definition 3d/grid.hh:353
GridFamily::GridImp Grid
Definition 3d/grid.hh:346
IdSet< Grid, LocalIdSetImp, LocalIdType > LocalIdSet
Definition 3d/grid.hh:418
GridFamily::GlobalIdType GlobalIdType
type of ALU3dGrids global id
Definition 3d/grid.hh:344
IndexSet< Grid, LevelIndexSetImp > LevelIndexSet
Definition 3d/grid.hh:416
Partition< All_Partition >::MacroGridView MacroGridView
Definition 3d/grid.hh:406
Dune::IntersectionIterator< const Grid, LeafIntersectionIteratorWrapper< const Grid >, LeafIntersectionWrapper< const Grid > > IntersectionIterator
Definition 3d/grid.hh:351
Dune::Intersection< const Grid, LevelIntersectionWrapper< const Grid > > LevelIntersection
Definition 3d/grid.hh:349
DuneBoundaryProjection< dimworld > DuneBoundaryProjectionType
Definition 3d/grid.hh:358
Dune::Intersection< const Grid, LeafIntersectionWrapper< const Grid > > LeafIntersection
Definition 3d/grid.hh:348
std::vector< const DuneBoundaryProjectionType * > DuneBoundaryProjectionVector
Definition 3d/grid.hh:359
Definition 3d/grid.hh:363
Dune::EntityPointer< const Grid, EntityPointerImpl > EntityPointer
Definition 3d/grid.hh:384
Dune::Geometry< dim-cd, dimworld, const Grid, ALU3dGridGeometry > Geometry
Definition 3d/grid.hh:370
ALU3dGridGeometry< dim-cd, dim, const Grid > LocalGeometryImpl
Definition 3d/grid.hh:369
Partition< All_Partition >::LevelIterator LevelIterator
Definition 3d/grid.hh:394
ALU3dGridTwists< dim, elType, cd >::Type Twists
Definition 3d/grid.hh:364
Twists::Twist Twist
Definition 3d/grid.hh:365
ALU3dGridGeometry< dim-cd, dimworld, const Grid > GeometryImpl
Definition 3d/grid.hh:368
ALU3dGridEntitySeed< cd, const Grid > EntitySeed
Definition 3d/grid.hh:377
Partition< All_Partition >::LeafIterator LeafIterator
Definition 3d/grid.hh:395
ALU3dGridEntity< cd, dim, const Grid > EntityImp
Definition 3d/grid.hh:373
Dune::Geometry< dim-cd, dim, const Grid, ALU3dGridGeometry > LocalGeometry
Definition 3d/grid.hh:371
ALU3dGridEntityPointer< cd, const Grid > EntityPointerImpl
Definition 3d/grid.hh:383
Dune::Entity< cd, dim, const Grid, ALU3dGridEntity > Entity
Definition 3d/grid.hh:374
Definition 3d/grid.hh:389
Dune::EntityIterator< cd, const Grid, ALU3dGridLeafIterator< cd, pitype, const Grid > > LeafIterator
Definition 3d/grid.hh:391
Dune::EntityIterator< cd, const Grid, ALU3dGridLevelIterator< cd, pitype, const Grid > > LevelIterator
Definition 3d/grid.hh:390
Definition 3d/grid.hh:400
Dune::GridView< ALU3dLeafGridViewTraits< const Grid, pitype > > LeafGridView
Definition 3d/grid.hh:402
Dune::GridView< ALU3dLevelGridViewTraits< const Grid, pitype > > LevelGridView
Definition 3d/grid.hh:401
Dune::MacroGridView< const Grid, pitype > MacroGridView
Definition 3d/grid.hh:403
Definition 3d/grid.hh:535
Traits::template Codim< codim >::EntityImp EntityImp
Definition 3d/grid.hh:536
Traits::template Codim< codim >::Twists Twists
Definition 3d/grid.hh:538
Twists::Twist Twist
Definition 3d/grid.hh:539
Traits::template Codim< codim >::EntityPointerImpl EntityPointerImpl
Definition 3d/grid.hh:537
Types for GridView.
Definition 3d/grid.hh:550
GridFamily::Traits::template Partition< pitype >::LeafGridView LeafGridView
Definition 3d/grid.hh:554
GridFamily::Traits::template Partition< pitype >::MacroGridView MacroGridView
Definition 3d/grid.hh:556
GridFamily::Traits::template Partition< pitype >::LevelGridView LevelGridView
Definition 3d/grid.hh:552
Definition indexsets.hh:173
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:71
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:226
Class that wraps IntersectionIteratorImp of a grid and gets it's internal object from a object stack ...
Definition intersectioniteratorwrapper.hh:251
Class that wraps IntersectionIteratorImp of a grid and gets it's internal object from a object stack ...
Definition intersectioniteratorwrapper.hh:331
Class that wraps IntersectionIteratorImp of a grid and gets it's internal object from a object stack ...
Definition intersectioniteratorwrapper.hh:355
Definition macrogridview.hh:72