3#ifndef DUNE_ONE_D_GRID_HH
4#define DUNE_ONE_D_GRID_HH
10#include <dune/common/parallel/communication.hh>
16#include <dune/geometry/axisalignedcubegeometry.hh>
17#include <dune/geometry/type.hh>
23#include "onedgrid/onedgridlist.hh"
24#include "onedgrid/nulliteratorfactory.hh"
25#include "onedgrid/onedgridentity.hh"
26#include "onedgrid/onedgridentityseed.hh"
27#include "onedgrid/onedgridintersections.hh"
28#include "onedgrid/onedgridintersectioniterators.hh"
29#include "onedgrid/onedgridleafiterator.hh"
30#include "onedgrid/onedgridviews.hh"
31#include "onedgrid/onedgridleveliterator.hh"
32#include "onedgrid/onedgridhieriterator.hh"
33#include "onedgrid/onedgridindexsets.hh"
44 template <
int mydim,
int coorddim,
class Gr
idImp>
54 OneDGridLevelIterator,
55 OneDGridLeafIntersection,
56 OneDGridLevelIntersection,
57 OneDGridLeafIntersectionIterator,
58 OneDGridLevelIntersectionIterator,
59 OneDGridHierarchicIterator,
61 OneDGridLevelIndexSet<const OneDGrid>,
62 OneDGridLeafIndexSet<const OneDGrid>,
63 OneDGridIdSet<const OneDGrid>,
65 OneDGridIdSet<const OneDGrid>,
67 CollectiveCommunication<No_Comm>,
68 OneDGridLevelGridViewTraits,
69 OneDGridLeafGridViewTraits,
97 template <
int , PartitionIteratorType,
class >
100 friend class OneDGridHierarchicIterator<const
OneDGrid>;
102 template <
int codim_,
int dim_,
class Gr
idImp_>
104 friend class OneDGridHierarchicIterator<
OneDGrid>;
105 friend class OneDGridLeafIntersection<const
OneDGrid>;
106 friend class OneDGridLevelIntersection<const
OneDGrid>;
107 friend class OneDGridLeafIntersectionIterator<const
OneDGrid>;
108 friend class OneDGridLevelIntersectionIterator<const
OneDGrid>;
110 friend class OneDGridLevelIndexSet<const
OneDGrid>;
111 friend class OneDGridLeafIndexSet<const
OneDGrid>;
112 friend class OneDGridIdSet<const
OneDGrid>;
114 template <
int codim_, PartitionIteratorType PiType_,
class Gr
idImp_>
117 friend class OneDGridLeafGridView<const
OneDGrid>;
118 friend class OneDGridLevelGridView<const
OneDGrid>;
120 template <
class Gr
idType_>
123 template<
int codim_,
int dim_,
class Gr
idImp_,
template<
int,
int,
class>
class EntityImp_>
158 int maxLevel()
const {
return entityImps_.size()-1;}
161 template <
typename Seed>
162 static typename Traits::template Codim<Seed::codimension>::Entity
165 const int codim = Seed::codimension;
166 return typename Traits::template
Codim<codim>::Entity(OneDGridEntity<codim,dim,const OneDGrid>(seed.impl().target()));
172 int size (
int level,
int codim)
const {
176 return elements(level).size();
178 return vertices(level).size();
193 int size (
int level, GeometryType type)
const
196 return size(level,1-type.dim());
200 int size (GeometryType type)
const
230 if (! levelIndexSets_[level]) {
231 levelIndexSets_[level] =
233 levelIndexSets_[level]->update();
236 return * levelIndexSets_[level];
242 return leafIndexSet_;
286 refinementType_ = type;
307 OneDGridList<OneDEntityImp<0> >& vertices(
int level) {
308 return std::get<0>(entityImps_[level]);
312 const OneDGridList<OneDEntityImp<0> >& vertices(
int level)
const {
313 return std::get<0>(entityImps_[level]);
317 OneDGridList<OneDEntityImp<1> >& elements(
int level) {
318 return std::get<1>(entityImps_[level]);
322 const OneDGridList<OneDEntityImp<1> >& elements(
int level)
const {
323 return std::get<1>(entityImps_[level]);
333 unsigned int getNextFreeId()
335 return freeIdCounter_++;
341 OneDGridList<OneDEntityImp<0> >::iterator getLeftUpperVertex(
const OneDEntityImp<1>* eIt);
343 OneDGridList<OneDEntityImp<0> >::iterator getRightUpperVertex(
const OneDEntityImp<1>* eIt);
348 OneDGridList<OneDEntityImp<1> >::iterator getLeftNeighborWithSon(OneDGridList<OneDEntityImp<1> >::iterator eIt);
351 std::vector<std::tuple<OneDGridList<OneDEntityImp<0> >,
352 OneDGridList<OneDEntityImp<1> > > > entityImps_;
355 mutable std::vector<OneDGridLevelIndexSet<const OneDGrid>* > levelIndexSets_;
363 unsigned int freeIdCounter_;
368 bool reversedBoundarySegmentNumbering_;
372 namespace Capabilities
388 static const bool v =
true;
389 static const unsigned int topologyId = GeometryTypes::cube(1).id();
399 static const bool v =
true;
409 static const bool v =
true;
418 static const bool v =
true;
427 static const bool v =
true;
439#include <dune/grid/onedgrid/onedgridfactory.hh>
Include standard header files.
Definition: agrid.hh:58
AxisAlignedCubeGeometry< double, mydim, coorddim > OneDGridGeometry
The type used to for OneDGrid geometries.
Definition: onedgrid.hh:45
Specialize with 'true' for if the codimension 0 entity of the grid has only one possible geometry typ...
Definition: common/capabilities.hh:25
static const bool v
Definition: common/capabilities.hh:26
static const unsigned int topologyId
Definition: common/capabilities.hh:29
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
specialize with 'true' for all codims that a grid provides an iterator for (default=hasEntity<codim>:...
Definition: common/capabilities.hh:72
static const bool v
Definition: common/capabilities.hh:73
Specialize with 'true' if implementation guarantees conforming level grids. (default=false)
Definition: common/capabilities.hh:104
static const bool v
Definition: common/capabilities.hh:105
Specialize with 'true' if implementation guarantees a conforming leaf grid. (default=false)
Definition: common/capabilities.hh:113
static const bool v
Definition: common/capabilities.hh:114
Wrapper class for entities.
Definition: common/entity.hh:64
Definition: common/grid.hh:851
Index Set Interface base class.
Definition: indexidset.hh:76
auto size(GeometryType type) const
Return total number of entities of given geometry type in entity set .
Definition: indexidset.hh:221
Id Set Interface.
Definition: indexidset.hh:450
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:518
A Traits struct that collects all associated types of one implementation.
Definition: common/grid.hh:414
A traits struct that collects all associated types of one grid model.
Definition: common/grid.hh:984
Traits associated with a specific codim.
Definition: common/grid.hh:1006
Provide a generic factory class for unstructured grids.
Definition: common/gridfactory.hh:312
Definition: onedgrid.hh:48
GridTraits< 1, 1, Dune::OneDGrid, OneDGridGeometry, OneDGridEntity, OneDGridLevelIterator, OneDGridLeafIntersection, OneDGridLevelIntersection, OneDGridLeafIntersectionIterator, OneDGridLevelIntersectionIterator, OneDGridHierarchicIterator, OneDGridLeafIterator, OneDGridLevelIndexSet< const OneDGrid >, OneDGridLeafIndexSet< const OneDGrid >, OneDGridIdSet< const OneDGrid >, unsigned int, OneDGridIdSet< const OneDGrid >, unsigned int, CollectiveCommunication< No_Comm >, OneDGridLevelGridViewTraits, OneDGridLeafGridViewTraits, OneDGridEntitySeed > Traits
Definition: onedgrid.hh:71
One-dimensional adaptive grid.
Definition: onedgrid.hh:92
OneDGridGeometry< 0, 1, OneDGrid >::ctype ctype
The type used to store coordinates.
Definition: onedgrid.hh:137
const Traits::LevelIndexSet & levelIndexSet(int level) const
Get an index set for the given level.
Definition: onedgrid.hh:228
friend class OneDGridLeafIterator
Definition: onedgrid.hh:115
bool preAdapt()
Does nothing except return true if some element has been marked for refinement.
const Traits::LocalIdSet & localIdSet() const
Get the set of local ids.
Definition: onedgrid.hh:222
int size(GeometryType type) const
number of leaf entities per geometry type in this process
Definition: onedgrid.hh:200
OneDGrid(const std::vector< ctype > &coords)
Constructor with an explicit set of coordinates.
void postAdapt()
Adaptation post-processing: Reset all adaptation state flags.
bool adapt()
Triggers the grid refinement process.
RefinementType
The different forms of grid refinement supported by OneDGrid.
Definition: onedgrid.hh:277
@ COPY
New level consists of the refined elements and the unrefined ones, too.
Definition: onedgrid.hh:281
@ LOCAL
New level consists only of the refined elements.
Definition: onedgrid.hh:279
size_t numBoundarySegments() const
Return the number of coarse grid boundary segments.
Definition: onedgrid.hh:210
const CollectiveCommunication & comm() const
Definition: onedgrid.hh:298
OneDGridFamily::Traits Traits
Definition: onedgrid.hh:143
bool mark(int refCount, const Traits::Codim< 0 >::Entity &e)
Mark entity for refinement.
void setRefinementType(RefinementType type)
Sets the type of grid refinement.
Definition: onedgrid.hh:285
int size(int level, GeometryType type) const
number of entities per level and geometry type in this process
Definition: onedgrid.hh:193
int size(int level, int codim) const
Number of grid entities per level and codim.
Definition: onedgrid.hh:172
friend class OneDGridLeafIndexSet< const OneDGrid >
Definition: onedgrid.hh:111
OneDGrid(int numElements, const ctype &leftBoundary, const ctype &rightBoundary)
Constructor for a uniform grid.
friend class OneDGridEntity
Definition: onedgrid.hh:103
const Traits::LeafIndexSet & leafIndexSet() const
Get an index set for the leaf level.
Definition: onedgrid.hh:240
const Traits::GlobalIdSet & globalIdSet() const
Get the set of global ids.
Definition: onedgrid.hh:216
static Traits::template Codim< Seed::codimension >::Entity entity(const Seed &seed)
Create an Entity from an EntitySeed.
Definition: onedgrid.hh:163
int size(int codim) const
number of leaf entities per codim in this process
Definition: onedgrid.hh:187
OneDGridFamily GridFamily
GridFamily of OneDGrid.
Definition: onedgrid.hh:140
friend class OneDGridLevelIndexSet< const OneDGrid >
Definition: onedgrid.hh:110
int maxLevel() const
Return maximum level defined in this grid.
Definition: onedgrid.hh:158
int getMark(const Traits::Codim< 0 >::Entity &e) const
return current adaptation marker of given entity
friend class OneDGridLevelIterator
Definition: onedgrid.hh:98
void globalRefine(int refCount)
Does one uniform refinement step.
friend class OneDGridIdSet< const OneDGrid >
Definition: onedgrid.hh:112
A set of traits classes to store static information about grid implementation.
Provide a generic factory class for unstructured grids.
Different resources needed by all grid implementations.