5 #ifndef DUNE_ONE_D_GRID_HH 6 #define DUNE_ONE_D_GRID_HH 12 #include <dune/common/parallel/communication.hh> 18 #include <dune/geometry/axisalignedcubegeometry.hh> 19 #include <dune/geometry/type.hh> 25 #include "onedgrid/onedgridlist.hh" 26 #include "onedgrid/nulliteratorfactory.hh" 27 #include "onedgrid/onedgridentity.hh" 28 #include "onedgrid/onedgridentityseed.hh" 29 #include "onedgrid/onedgridintersections.hh" 30 #include "onedgrid/onedgridintersectioniterators.hh" 31 #include "onedgrid/onedgridleafiterator.hh" 32 #include "onedgrid/onedgridviews.hh" 33 #include "onedgrid/onedgridleveliterator.hh" 34 #include "onedgrid/onedgridhieriterator.hh" 35 #include "onedgrid/onedgridindexsets.hh" 46 template <
int mydim,
int coorddim,
class Gr
idImp>
56 OneDGridLevelIterator,
57 OneDGridLeafIntersection,
58 OneDGridLevelIntersection,
59 OneDGridLeafIntersectionIterator,
60 OneDGridLevelIntersectionIterator,
61 OneDGridHierarchicIterator,
63 OneDGridLevelIndexSet<const OneDGrid>,
64 OneDGridLeafIndexSet<const OneDGrid>,
65 OneDGridIdSet<const OneDGrid>,
67 OneDGridIdSet<const OneDGrid>,
69 Communication<No_Comm>,
70 OneDGridLevelGridViewTraits,
71 OneDGridLeafGridViewTraits,
75 std::array<GeometryType,1> >
99 constexpr
static int dim = 1;
100 constexpr
static int dimworld = 1;
102 template <
int , PartitionIteratorType,
class >
105 friend class OneDGridHierarchicIterator<const
OneDGrid>;
107 template <
int codim_,
int dim_,
class Gr
idImp_>
110 friend class OneDGridLeafIntersection<const
OneDGrid>;
111 friend class OneDGridLevelIntersection<const
OneDGrid>;
112 friend class OneDGridLeafIntersectionIterator<const
OneDGrid>;
113 friend class OneDGridLevelIntersectionIterator<const
OneDGrid>;
115 friend class OneDGridLevelIndexSet<const
OneDGrid>;
119 template <
int codim_, PartitionIteratorType PiType_,
class Gr
idImp_>
123 friend class OneDGridLevelGridView<const
OneDGrid>;
125 template <
class Gr
idType_>
128 template<
int codim_,
int dim_,
class Gr
idImp_,
template<
int,
int,
class>
class EntityImp_>
151 OneDGrid(
const std::vector<ctype>& coords);
163 int maxLevel()
const {
return entityImps_.size()-1;}
166 template <
typename Seed>
170 const int codim = Seed::codimension;
171 return typename Traits::template
Codim<codim>::Entity(OneDGridEntity<codim,dim,const OneDGrid>(seed.impl().target()));
177 int size (
int level,
int codim)
const {
181 return elements(level).size();
183 return vertices(level).size();
201 return size(level,1-type.dim());
235 if (! levelIndexSets_[level]) {
236 levelIndexSets_[level] =
238 levelIndexSets_[level]->update();
241 return * levelIndexSets_[level];
247 return leafIndexSet_;
291 refinementType_ = type;
310 template <
class DataHandle>
314 DUNE_THROW(Dune::NotImplemented,
"communicate() for OneDGrid not implemented");
318 template <
class DataHandle>
322 DUNE_THROW(Dune::NotImplemented,
"communicate() for OneDGrid not implemented");
329 OneDGridList<OneDEntityImp<0> >& vertices(
int level) {
330 return std::get<0>(entityImps_[level]);
334 const OneDGridList<OneDEntityImp<0> >& vertices(
int level)
const {
335 return std::get<0>(entityImps_[level]);
339 OneDGridList<OneDEntityImp<1> >& elements(
int level) {
340 return std::get<1>(entityImps_[level]);
344 const OneDGridList<OneDEntityImp<1> >& elements(
int level)
const {
345 return std::get<1>(entityImps_[level]);
355 unsigned int getNextFreeId()
357 return freeIdCounter_++;
363 OneDGridList<OneDEntityImp<0> >::iterator getLeftUpperVertex(
const OneDEntityImp<1>* eIt);
365 OneDGridList<OneDEntityImp<0> >::iterator getRightUpperVertex(
const OneDEntityImp<1>* eIt);
370 OneDGridList<OneDEntityImp<1> >::iterator getLeftNeighborWithSon(OneDGridList<OneDEntityImp<1> >::iterator eIt);
373 std::vector<std::tuple<OneDGridList<OneDEntityImp<0> >,
374 OneDGridList<OneDEntityImp<1> > > > entityImps_;
377 mutable std::vector<OneDGridLevelIndexSet<const OneDGrid>* > levelIndexSets_;
385 unsigned int freeIdCounter_;
390 bool reversedBoundarySegmentNumbering_;
394 namespace Capabilities
410 static const bool v =
true;
411 static const unsigned int topologyId = GeometryTypes::cube(1).id();
421 static const bool v =
true;
431 static const bool v =
true;
440 static const bool v =
true;
449 static const bool v =
true;
461 #include <dune/grid/onedgrid/onedgridfactory.hh> int maxLevel() const
Return maximum level defined in this grid.
Definition: onedgrid.hh:163
bool mark(int refCount, const Traits::Codim< 0 >::Entity &e)
Mark entity for refinement.
One-dimensional adaptive grid.
Definition: onedgrid.hh:96
RefinementType
The different forms of grid refinement supported by OneDGrid.
Definition: onedgrid.hh:282
int getMark(const Traits::Codim< 0 >::Entity &e) const
return current adaptation marker of given entity
bool adapt()
Triggers the grid refinement process.
auto size(GeometryType type) const
Return total number of entities of given geometry type in entity set .
Definition: common/indexidset.hh:223
typename GridFamily::Traits::Communication Communication
A type that is a model of Dune::Communication. It provides a portable way for communication on the se...
Definition: common/grid.hh:515
Index Set Interface base class.
Definition: common/grid.hh:348
int size(int level, GeometryType type) const
number of entities per level and geometry type in this process
Definition: onedgrid.hh:198
friend class OneDGridLeafIterator
Definition: onedgrid.hh:120
Definition: onedgrid.hh:49
int size(GeometryType type) const
number of leaf entities per geometry type in this process
Definition: onedgrid.hh:205
int size(int level, int codim) const
Number of grid entities per level and codim.
Definition: onedgrid.hh:177
New level consists only of the refined elements.
Definition: onedgrid.hh:284
void setRefinementType(RefinementType type)
Sets the type of grid refinement.
Definition: onedgrid.hh:290
Specialize with 'true' for if the codimension 0 entity of the grid has only one possible geometry typ...
Definition: common/capabilities.hh:26
friend class OneDGridLevelIndexSet< const OneDGrid >
Definition: onedgrid.hh:115
static const bool v
Definition: common/capabilities.hh:116
const Communication & comm() const
Definition: onedgrid.hh:303
New level consists of the refined elements and the unrefined ones, too.
Definition: onedgrid.hh:286
Specialize with 'true' for all codims that a grid implements entities for. (default=false) ...
Definition: common/capabilities.hh:57
void postAdapt()
Adaptation post-processing: Reset all adaptation state flags.
Provide a generic factory class for unstructured grids.
friend class OneDGridLevelIterator
Definition: onedgrid.hh:103
OneDGridFamily::Traits Traits
Definition: onedgrid.hh:148
Different resources needed by all grid implementations.
void communicate(DataHandle &, InterfaceType, CommunicationDirection) const
Communicate data of leaf gridView.
Definition: onedgrid.hh:319
Specialize with 'true' if implementation guarantees a conforming leaf grid. (default=false) ...
Definition: common/capabilities.hh:114
AxisAlignedCubeGeometry< double, mydim, coorddim > OneDGridGeometry
The type used to for OneDGrid geometries.
Definition: onedgrid.hh:47
static Traits::template Codim< Seed::codimension >::Entity entity(const Seed &seed)
Create an Entity from an EntitySeed.
Definition: onedgrid.hh:168
OneDGridFamily GridFamily
GridFamily of OneDGrid.
Definition: onedgrid.hh:145
CommunicationDirection
Define a type for communication direction parameter.
Definition: gridenums.hh:170
friend class OneDGridEntity
Definition: onedgrid.hh:108
Definition: common/geometry.hh:28
const Traits::GlobalIdSet & globalIdSet() const
Get the set of global ids.
Definition: onedgrid.hh:221
Include standard header files.
Definition: agrid.hh:59
int size(int codim) const
number of leaf entities per codim in this process
Definition: onedgrid.hh:192
static const bool v
Definition: common/capabilities.hh:75
InterfaceType
Parameter to be used for the communication functions.
Definition: gridenums.hh:86
Specialize with 'true' if implementation guarantees conforming level grids. (default=false) ...
Definition: common/capabilities.hh:105
static const bool v
Definition: common/capabilities.hh:107
static const bool v
Definition: common/capabilities.hh:28
specialize with 'true' for all codims that a grid provides an iterator for (default=hasEntity<codim>:...
Definition: common/capabilities.hh:73
A traits struct that collects all associated types of one grid model.
Definition: common/grid.hh:1012
static const bool v
Definition: common/capabilities.hh:59
static const unsigned int topologyId
Definition: common/capabilities.hh:31
void communicate(DataHandle &, InterfaceType, CommunicationDirection, int) const
Communicate data of level gridView.
Definition: onedgrid.hh:311
Provide a generic factory class for unstructured grids.
Definition: common/gridfactory.hh:275
ct ctype
Define type used for coordinates in grid module.
Definition: common/grid.hh:518
Wrapper class for entities.
Definition: common/entity.hh:65
void globalRefine(int refCount)
Does one uniform refinement step.
friend class OneDGridLeafIndexSet< const OneDGrid >
Definition: onedgrid.hh:116
size_t numBoundarySegments() const
Return the number of coarse grid boundary segments.
Definition: onedgrid.hh:215
const Traits::LevelIndexSet & levelIndexSet(int level) const
Get an index set for the given level.
Definition: onedgrid.hh:233
GeometryType
Type representing VTK's entity geometry types.
Definition: common.hh:132
Dune::Entity< cd, dim, const GridImp, EntityImp > Entity
The type of the entity.
Definition: common/grid.hh:1046
A set of traits classes to store static information about grid implementation.
friend class OneDGridIdSet< const OneDGrid >
Definition: onedgrid.hh:117
GridFamily::Traits::template Codim< cd >::Entity Entity
A type that is a model of a Dune::Entity<cd,dim,...>.
Definition: common/grid.hh:419
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, Communication< No_Comm >, OneDGridLevelGridViewTraits, OneDGridLeafGridViewTraits, OneDGridEntitySeed, OneDGridGeometry, unsigned int, std::array< GeometryType, 1 > > Traits
Definition: onedgrid.hh:76
OneDGridGeometry< 0, 1, OneDGrid >::ctype ctype
The type used to store coordinates.
Definition: onedgrid.hh:142
const Traits::LeafIndexSet & leafIndexSet() const
Get an index set for the leaf level.
Definition: onedgrid.hh:245
Id Set Interface.
Definition: common/grid.hh:349
const Traits::LocalIdSet & localIdSet() const
Get the set of local ids.
Definition: onedgrid.hh:227
bool preAdapt()
Does nothing except return true if some element has been marked for refinement.