15 #include <dune/common/fvector.hh>
16 #include <dune/common/typetraits.hh>
17 #include <dune/common/deprecated.hh>
20 #include <dune/geometry/type.hh>
33 #include <dune/common/bartonnackmanifcheck.hh>
336 template<
int mydim,
int cdim,
class Gr
idImp,
template<
int,
int,
class>
class GeometryImp>
class Geometry;
341 template<
int codim,
int dim,
class Gr
idImp,
template<
int,
int,
class>
class EntityImp>
class Entity;
342 template<
int codim,
class Gr
id,
class IteratorImp >
class EntityIterator;
343 template<
class Gr
idImp,
class EntitySeedImp>
class EntitySeed;
344 template<
class Gr
idImp,
class IntersectionImp >
class Intersection;
345 template<
class Gr
idImp,
class IntersectionIteratorImp,
class IntersectionImp >
class IntersectionIterator;
346 template<
class Gr
idImp,
class IndexSetImp,
class IndexTypeImp =
unsigned int,
class TypesImp = std::vector< GeometryType > >
class IndexSet;
347 template<
class Gr
idImp,
class IdSetImp,
class IdTypeImp>
class IdSet;
372 template<
int dim,
int dimworld,
class ct,
class Gr
idFamily>
374 typedef typename GridFamily::Traits::Grid GridImp;
429 template <PartitionIteratorType pitype>
538 return asImp().maxLevel();
542 int size (
int level,
int codim)
const
544 CHECK_INTERFACE_IMPLEMENTATION(
asImp().
size(level,codim));
545 return asImp().size(level,codim);
551 CHECK_INTERFACE_IMPLEMENTATION(
asImp().
size(codim));
552 return asImp().size(codim);
558 CHECK_INTERFACE_IMPLEMENTATION(
asImp().
size(level,type));
559 return asImp().size(level,type);
565 CHECK_INTERFACE_IMPLEMENTATION(
asImp().
size(type));
566 return asImp().size(type);
578 return asImp().numBoundarySegments();
590 return asImp().levelGridView(level);
596 return asImp().leafGridView();
612 return asImp().globalIdSet();
619 return asImp().localIdSet();
626 return asImp().levelIndexSet(level);
633 return asImp().leafIndexSet();
664 return asImp().mark(refCount,e);
675 return asImp().getMark(e);
686 return asImp().preAdapt();
705 return asImp().adapt();
714 return asImp().postAdapt();
728 CHECK_INTERFACE_IMPLEMENTATION(
asImp().
comm());
729 return asImp().comm();
739 return asImp().loadBalance();
749 template<
class DataHandle>
753 return asImp().loadBalance(data);
757 template <
class EntitySeed >
758 typename Codim< EntitySeed :: codimension >
:: Entity
762 return asImp().entity( seed );
766 GridImp&
asImp () {
return static_cast<GridImp &
> (*this);}
768 const GridImp&
asImp ()
const {
return static_cast<const GridImp &
>(*this);}
771 #undef CHECK_INTERFACE_IMPLEMENTATION
772 #undef CHECK_AND_CALL_INTERFACE_IMPLEMENTATION
790 template<
int dim,
int dimworld,
class ct,
class Gr
idFamily>
807 template<
int dim,
int dimworld,
class ct,
class Gr
idFamily>
856 typedef typename GridFamily::Traits::Grid GridImp;
864 typedef typename GridFamily::Traits
Traits;
869 typedef typename Traits::LevelGridView View;
870 typedef typename View::GridViewImp ViewImp;
871 return View(ViewImp(
asImp(),level));
877 typedef typename Traits::LeafGridView View;
878 typedef typename View::GridViewImp ViewImp;
879 return View(ViewImp(
asImp()));
947 template<
class DataHandle>
1006 template <
class InterfaceType>
1007 DUNE_DEPRECATED_MSG(
"use the facade class' `impl()` method instead")
1008 static typename std::conditional<
1012 typename std::add_lvalue_reference<
1013 typename ReturnImplementationType<
1014 typename std::remove_reference<
1017 >::ImplementationType
1019 typename std::remove_const<
1020 typename ReturnImplementationType<
1021 typename std::remove_reference<
1024 >::ImplementationType
1047 template <
int dim,
int dimw,
class GridImp,
1048 template<
int,
int,
class>
class GeometryImp,
1049 template<
int,
int,
class>
class EntityImp,
1050 template<
int,PartitionIteratorType,
class>
class LevelIteratorImp,
1051 template<
class>
class LeafIntersectionImp,
1052 template<
class>
class LevelIntersectionImp,
1053 template<
class>
class LeafIntersectionIteratorImp,
1054 template<
class>
class LevelIntersectionIteratorImp,
1055 template<
class>
class HierarchicIteratorImp,
1056 template<
int,PartitionIteratorType,
class>
class LeafIteratorImp,
1057 class LevelIndexSetImp,
class LeafIndexSetImp,
1058 class GlobalIdSetImp,
class GIDType,
class LocalIdSetImp,
class LIDType,
class CCType,
1059 template<
class>
class LevelGridViewTraits,
1060 template<
class>
class LeafGridViewTraits,
1061 template<
int,
class>
class EntitySeedImp,
1062 template<
int,
int,
class>
class LocalGeometryImp = GeometryImp
1107 template <PartitionIteratorType pitype>
1123 friend class Dune::Entity<cd, dim, const GridImp, EntityImp>;
1145 namespace Capabilities
1149 template<
int dim,
int dimworld,
typename ct,
class Gr
idFamily ,
int codim >
1156 template<
int dim,
int dimworld,
typename ct,
class Gr
idFamily ,
int cdim >
1171 template <
class InterfaceType>
Describes the parallel communication interface class for MessageBuffers and DataHandles.
Provides base classes for index and id sets.
InterfaceType
Parameter to be used for the communication functions.
Definition: gridenums.hh:84
Grid< dim, dimworld, ct, GridFamily >::LeafGridView leafGridView(const Grid< dim, dimworld, ct, GridFamily > &grid)
leaf grid view for the given grid
Definition: common/grid.hh:809
Grid< dim, dimworld, ct, GridFamily >::LevelGridView levelGridView(const Grid< dim, dimworld, ct, GridFamily > &grid, int level)
level grid view for the given grid and level.
Definition: common/grid.hh:792
Include standard header files.
Definition: agrid.hh:59
GeometryType
Type representing VTK's entity geometry types.
Definition: common.hh:180
Intersection of a mesh entity of codimension 0 ("element") with a "neighboring" element or with the d...
Definition: common/intersection.hh:162
Definition: geometryreference.hh:91
Specialize with 'true' for all codims that a grid implements entities for. (default=false)
Definition: common/capabilities.hh:56
static const bool v
Definition: common/capabilities.hh:57
Wrapper class for entities.
Definition: common/entity.hh:64
interface class for an iterator over grid entities
Definition: entityiterator.hh:30
Store a reference to an entity with a minimal memory footprint.
Definition: common/entityseed.hh:24
Definition: common/grid.hh:855
bool adapt()
Refine all positive marked leaf entities coarsen all negative marked entities if possible.
Definition: common/grid.hh:932
bool mark(int refCount, const typename Traits ::template Codim< 0 >::Entity &e)
Marks an entity to be refined/coarsened in a subsequent adapt.
Definition: common/grid.hh:908
static std::conditional< std::is_reference< InterfaceType >::value, typename std::add_lvalue_reference< typename ReturnImplementationType< typename std::remove_reference< InterfaceType >::type >::ImplementationType >::type, typename std::remove_const< typename ReturnImplementationType< typename std::remove_reference< InterfaceType >::type >::ImplementationType >::type >::type getRealImplementation(InterfaceType &&i)
return real implementation of interface class
Definition: common/grid.hh:1027
void postAdapt()
clean up some markers
Definition: common/grid.hh:938
int getMark(const typename Traits::template Codim< 0 >::Entity &e) const
returns adaptation mark for given entity, i.e. here the default implementation returns 0.
Definition: common/grid.hh:920
bool preAdapt()
returns true, if at least one entity is marked for adaption
Definition: common/grid.hh:935
bool loadBalance(DataHandle &data)
default implementation of load balance does nothing and returns false
Definition: common/grid.hh:948
Traits::LeafGridView leafGridView() const
View for the leaf grid for All_Partition.
Definition: common/grid.hh:875
bool loadBalance()
default implementation of load balance does nothing and returns false
Definition: common/grid.hh:941
Traits::LevelGridView levelGridView(int level) const
View for a grid level for All_Partition.
Definition: common/grid.hh:867
GridFamily::Traits Traits
The traits of this class.
Definition: common/grid.hh:864
Wrapper class for geometries.
Definition: common/geometry.hh:67
Definition: common/grid.hh:337
Mesh entities of codimension 0 ("elements") allow to visit all intersections with "neighboring" eleme...
Definition: common/intersectioniterator.hh:81
Index Set Interface base class.
Definition: indexidset.hh:76
Id Set Interface.
Definition: indexidset.hh:441
Grid abstract base class.
Definition: common/grid.hh:373
int size(int level, GeometryType type) const
Return number of entities per level and geometry type in this process.
Definition: common/grid.hh:556
GridFamily::Traits::LocalIdSet LocalIdSet
A type that is a model of Dune::IdSet which provides a unique and persistent numbering for all entiti...
Definition: common/grid.hh:513
GridFamily::Traits::LeafIntersectionIterator LeafIntersectionIterator
A type that is a model of Dune::IntersectionIterator which is an iterator that allows to examine,...
Definition: common/grid.hh:472
int size(int level, int codim) const
Return number of grid entities of a given codim on a given level in this process.
Definition: common/grid.hh:542
bool preAdapt()
To be called after entities have been marked and before adapt() is called.
Definition: common/grid.hh:684
GridFamily::Traits::LevelIndexSet LevelIndexSet
A type that is a model of Dune::IndexSet which provides a consecutive, but non persistent,...
Definition: common/grid.hh:492
GridFamily::Traits::CollectiveCommunication CollectiveCommunication
A type that is a model of Dune::CollectiveCommunication. It provides a portable way for collective co...
Definition: common/grid.hh:519
const GridImp & asImp() const
Barton-Nackman trick.
Definition: common/grid.hh:768
GridFamily::Traits::HierarchicIterator HierarchicIterator
A type that is a model of Dune::HierarchicIterator A type of iterator that allows to examine,...
Definition: common/grid.hh:486
GridFamily::Traits::LevelGridView LevelGridView
type of view for level grid
Definition: common/grid.hh:406
GridFamily::Traits::LeafIntersection LeafIntersection
A type that is a model of Dune::Intersection, an intersections of two codimension 1 of two codimensio...
Definition: common/grid.hh:460
GridFamily::Traits::LevelIntersectionIterator LevelIntersectionIterator
A type that is a model of Dune::IntersectionIterator which is an iterator that allows to examine,...
Definition: common/grid.hh:479
LeafGridView leafGridView() const
View for the leaf grid for All_Partition.
Definition: common/grid.hh:594
GridFamily::Traits::GlobalIdSet GlobalIdSet
A type that is a model of Dune::IdSet which provides a unique and persistent numbering for all entiti...
Definition: common/grid.hh:506
const LeafIndexSet & leafIndexSet() const
return const reference to the grids leaf index set
Definition: common/grid.hh:630
void postAdapt()
To be called after grid has been adapted and information left over by the adaptation has been process...
Definition: common/grid.hh:712
const GlobalIdSet & globalIdSet() const
return const reference to the grids global id set
Definition: common/grid.hh:609
bool mark(int refCount, const typename Codim< 0 >::Entity &e)
Marks an entity to be refined/coarsened in a subsequent adapt.
Definition: common/grid.hh:662
const CollectiveCommunication & comm() const
return const reference to a collective communication object. The return type is a model of Dune::Coll...
Definition: common/grid.hh:726
GridFamily::Traits::LeafIndexSet LeafIndexSet
A type that is a model of Dune::IndexSet which provides a consecutive, but non persistent,...
Definition: common/grid.hh:498
int maxLevel() const
Return maximum level defined in this grid. Levels are numbered 0 ... maxLevel with 0 the coarsest lev...
Definition: common/grid.hh:535
size_t numBoundarySegments() const
returns the number of boundary segments within the macro grid
Definition: common/grid.hh:575
int getMark(const typename Codim< 0 >::Entity &e) const
returns adaptation mark for given entity
Definition: common/grid.hh:673
Codim< EntitySeed ::codimension >::Entity entity(const EntitySeed &seed) const
obtain Entity from EntitySeed.
Definition: common/grid.hh:759
GridFamily::Traits::LevelIntersection LevelIntersection
A type that is a model of Dune::Intersection, an intersections of two codimension 1 of two codimensio...
Definition: common/grid.hh:465
@ dimensionworld
The dimension of the world the grid lives in.
Definition: common/grid.hh:393
LevelGridView levelGridView(int level) const
View for a grid level for All_Partition.
Definition: common/grid.hh:588
bool loadBalance(DataHandle &data)
Re-balances the load each process has to handle for a parallel grid and moves the data.
Definition: common/grid.hh:750
GridFamily::Traits::LeafGridView LeafGridView
type of view for leaf grid
Definition: common/grid.hh:404
@ dimension
The dimension of the grid.
Definition: common/grid.hh:387
bool loadBalance()
Re-balances the load each process has to handle for a parallel grid,.
Definition: common/grid.hh:736
bool adapt()
Refine all positive marked leaf entities, coarsen all negative marked entities if possible.
Definition: common/grid.hh:703
int size(int codim) const
Return number of leaf entities of a given codim in this process.
Definition: common/grid.hh:549
ct ctype
Define type used for coordinates in grid module.
Definition: common/grid.hh:522
const LevelIndexSet & levelIndexSet(int level) const
return const reference to the grids level index set for level level
Definition: common/grid.hh:623
GridImp & asImp()
Barton-Nackman trick.
Definition: common/grid.hh:766
const LocalIdSet & localIdSet() const
return const reference to the grids local id set
Definition: common/grid.hh:616
void globalRefine(int refCount)
Refine the grid refCount times using the default refinement rule.
Definition: common/grid.hh:649
int size(GeometryType type) const
Return number of leaf entities per geometry type in this process.
Definition: common/grid.hh:563
A Traits struct that collects all associated types of one implementation.
Definition: common/grid.hh:415
GridFamily::Traits::template Codim< cd >::Entity Entity
A type that is a model of a Dune::Entity<cd,dim,...>.
Definition: common/grid.hh:423
GridFamily::Traits::template Codim< cd >::LocalGeometry LocalGeometry
A type that is a model of Dune::Geometry<dim-cd,dim>.
Definition: common/grid.hh:420
GridFamily::Traits::template Codim< cd >::LevelIterator LevelIterator
A type that is a model of Dune::LevelIterator with partition type All_Partition.
Definition: common/grid.hh:450
GridFamily::Traits::template Codim< cd >::Geometry Geometry
A type that is a model of Dune::Geometry<dim-cd,dimworld>.
Definition: common/grid.hh:417
GridFamily::Traits::template Codim< cd >::EntitySeed EntitySeed
A type that is a model (not yet) of Dune::EntitySeed<cd,dim,...>.
Definition: common/grid.hh:426
GridFamily::Traits::template Codim< cd >::LeafIterator LeafIterator
A type that is a model of Dune::LeafIterator with partition type All_Partition.
Definition: common/grid.hh:454
A struct collecting all types depending on the partition iterator type.
Definition: common/grid.hh:431
GridFamily::Traits::template Codim< cd >::template Partition< pitype >::LevelIterator LevelIterator
A type that is a model of Dune::LevelIterator<cd,pitype,...> which is s type of iterator that may be ...
Definition: common/grid.hh:438
GridFamily::Traits::template Codim< cd >::template Partition< pitype >::LeafIterator LeafIterator
A type that is a model of Dune::LeafIterator<cd,pitype,...> which is a type of iterator that may be u...
Definition: common/grid.hh:445
Helper class to choose correct implementation return type for getRealImplementation.
Definition: common/grid.hh:963
T::Implementation ImplementationType
The correct type of the implementation to return.
Definition: common/grid.hh:966
const T::Implementation ImplementationType
Definition: common/grid.hh:977
A traits struct that collects all associated types of one grid model.
Definition: common/grid.hh:1065
Dune::IntersectionIterator< const GridImp, LeafIntersectionIteratorImp< const GridImp >, LeafIntersectionImp< const GridImp > > LeafIntersectionIterator
The type of the intersection iterator at the leafs of the grid.
Definition: common/grid.hh:1074
IdSet< const GridImp, LocalIdSetImp, LIDType > LocalIdSet
The type of the local id set.
Definition: common/grid.hh:1138
Dune::GridView< LeafGridViewTraits< const GridImp > > LeafGridView
type of view for leaf grid
Definition: common/grid.hh:1127
IdSet< const GridImp, GlobalIdSetImp, GIDType > GlobalIdSet
The type of the global id set.
Definition: common/grid.hh:1136
Dune::EntityIterator< 0, const GridImp, HierarchicIteratorImp< const GridImp > > HierarchicIterator
The type of the hierarchic iterator.
Definition: common/grid.hh:1079
IndexSet< const GridImp, LeafIndexSetImp > LeafIndexSet
The type of the leaf index set.
Definition: common/grid.hh:1134
Dune::Intersection< const GridImp, LeafIntersectionImp< const GridImp > > LeafIntersection
The type of the intersection at the leafs of the grid.
Definition: common/grid.hh:1070
IndexSet< const GridImp, LevelIndexSetImp > LevelIndexSet
The type of the level index set.
Definition: common/grid.hh:1132
Dune::GridView< LevelGridViewTraits< const GridImp > > LevelGridView
type of view for level grid
Definition: common/grid.hh:1129
Dune::IntersectionIterator< const GridImp, LevelIntersectionIteratorImp< const GridImp >, LevelIntersectionImp< const GridImp > > LevelIntersectionIterator
The type of the intersection iterator at the levels of the grid.
Definition: common/grid.hh:1076
Dune::Intersection< const GridImp, LevelIntersectionImp< const GridImp > > LevelIntersection
The type of the intersection at the levels of the grid.
Definition: common/grid.hh:1072
CCType CollectiveCommunication
The type of the collective communication.
Definition: common/grid.hh:1141
GridImp Grid
The type that implements the grid.
Definition: common/grid.hh:1067
Traits associated with a specific codim.
Definition: common/grid.hh:1087
Dune::EntitySeed< const GridImp, EntitySeedImp< cd, const GridImp > > EntitySeed
The type of the entity seed of this codim.
Definition: common/grid.hh:1101
Partition< All_Partition >::LeafIterator LeafIterator
The type of the iterator over all leaf entities of this codim.
Definition: common/grid.hh:1117
LocalGeometryImp< dim-cd, dim, const GridImp > LocalGeometryImpl
Definition: common/grid.hh:1090
GeometryImp< dim-cd, dimw, const GridImp > GeometryImpl
Definition: common/grid.hh:1089
Dune::Geometry< dim-cd, dim, const GridImp, LocalGeometryImp > LocalGeometry
The type of the local geometry associated with the entity.
Definition: common/grid.hh:1095
Dune::Geometry< dim-cd, dimw, const GridImp, GeometryImp > Geometry
IMPORTANT: Codim<codim>::Geometry == Geometry<dim-codim,dimw>
Definition: common/grid.hh:1093
Dune::Entity< cd, dim, const GridImp, EntityImp > Entity
The type of the entity.
Definition: common/grid.hh:1098
Partition< All_Partition >::LevelIterator LevelIterator
The type of the entity pointer for entities of this codim.
Definition: common/grid.hh:1120
Traits associated with a specific grid partition type.
Definition: common/grid.hh:1109
Dune::EntityIterator< cd, const GridImp, LevelIteratorImp< cd, pitype, const GridImp > > LevelIterator
The type of the iterator over the level entities of this codim on this partition.
Definition: common/grid.hh:1111
Dune::EntityIterator< cd, const GridImp, LeafIteratorImp< cd, pitype, const GridImp > > LeafIterator
The type of the iterator over the leaf entities of this codim on this partition.
Definition: common/grid.hh:1113
GridDefaultImplementation< dim, dimworld, ct, GridFamily > GridType
Definition: common/grid.hh:1159
GridType::Traits::Grid GridImp
Definition: common/grid.hh:1160
Definition: common/grid.hh:1173
InterfaceType::Implementation ImplementationType
Definition: common/grid.hh:1174
MakeableInterfaceObject(const ImplementationType &realImp)
create interface object by calling the contructor of the base class
Definition: common/grid.hh:1176
Grid view abstract base class.
Definition: common/gridview.hh:60
A set of traits classes to store static information about grid implementation.
Interface class EntitySeed.