6 #ifndef DUNE_AVOID_SGRID_DEPRE_WARNING_BECAUSE_I_KNOW_WHAT_IM_DOING
7 #warning The SGrid grid manager has been deprecated, and will be removed after the dune-grid-2.4 release. \
8 Please use YaspGrid instead.
15 #include <dune/common/fvector.hh>
16 #include <dune/common/fmatrix.hh>
17 #include <dune/common/bigunsignedint.hh>
18 #include <dune/common/parallel/collectivecommunication.hh>
19 #include <dune/common/reservedvector.hh>
20 #include <dune/geometry/genericgeometry/topologytypes.hh>
21 #include <dune/geometry/axisalignedcubegeometry.hh>
24 #include <dune/grid/sgrid/numbering.hh>
49 template<
int dim,
int dimworld,
class Gr
idImp>
class SGeometry;
50 template<
int codim,
int dim,
class Gr
idImp>
class SEntity;
53 template<
int codim, PartitionIteratorType,
class Gr
idImp>
class SLevelIterator;
54 template<
int dim,
int dimworld,
class ctype>
class SGrid;
90 template<
int mydim,
int cdim,
class Gr
idImp>
92 :
public AxisAlignedCubeGeometry<typename GridImp::ctype,mydim,cdim>
96 typedef typename GridImp::ctype
ctype;
105 void make (
const FieldVector<ctype,cdim>& lower,
106 const FieldMatrix<ctype,mydim,cdim>& A)
110 static_cast< AxisAlignedCubeGeometry<ctype,mydim,cdim> &
>( *this ) = AxisAlignedCubeGeometry<ctype,mydim,cdim>(lower);
115 FieldVector<ctype, cdim> upper = lower;
116 for (
int i=0; i<mydim; i++)
120 std::bitset<cdim> axes;
122 for (
size_t i=0; i<cdim; i++)
123 if ((upper[i] - lower[i]) > 1e-10)
127 static_cast< AxisAlignedCubeGeometry<ctype,mydim,cdim> &
>( *this ) = AxisAlignedCubeGeometry<ctype,mydim,cdim>(lower, upper, axes);
132 : AxisAlignedCubeGeometry<ctype,mydim,cdim>(FieldVector<ctype,cdim>(0),FieldVector<ctype,cdim>(0))
142 template<
int codim,
int dim,
class Gr
idImp,
template<
int,
int,
class>
class EntityImp>
148 enum { dimworld = GridImp::dimensionworld };
150 typedef typename GridImp::Traits::template Codim< codim >::GeometryImpl GeometryImpl;
153 typedef typename GridImp::ctype
ctype;
154 typedef typename GridImp::template Codim<codim>::Geometry
Geometry;
223 void make (GridImp* _grid,
int _l,
int _id);
226 void make (
int _l,
int _id);
234 return grid->persistentIndex(
l, codim,
z);
248 if (codim<dim || l==grid->maxLevel())
253 array<int,dim> coord;
254 for (
int k=0; k<dim; k++)
255 coord[k] =
z[k]*(1<<(
grid->maxLevel()-
l));
258 return grid->n(
grid->maxLevel(),coord);
264 DUNE_THROW(NotImplemented,
"subIndex for entities with codimension > 0 is not implemented");
271 DUNE_THROW(NotImplemented,
"subIndex for entities with codimension > 0 is not implemented");
291 template<
int codim,
int dim,
class Gr
idImp>
300 SEntityBase(_grid,_l,_id) {}
332 template<
int dim,
class Gr
idImp>
335 enum { dimworld = GridImp::dimensionworld };
342 typedef typename GridImp::Traits::template Codim< 0 >::GeometryImpl GeometryImpl;
343 typedef typename GridImp::Traits::template Codim< 0 >::LocalGeometryImpl LocalGeometryImpl;
350 typedef typename GridImp::ctype
ctype;
351 typedef typename GridImp::template Codim<0>::Geometry
Geometry;
372 template<
int cc>
int count ()
const;
376 unsigned int subEntities (
unsigned int codim)
const;
389 return (this->
grid)->n(this->
l, this->
grid->subz(this->z,i,codim));
399 assert(this->
l == this->
grid->maxLevel());
401 return (this->
grid)->n(this->
l, this->
grid->subz(this->z,i,codim));
409 return this->
grid->persistentIndex(this->
l, codim, this->
grid->subz(this->z,i,codim));
419 IntersectionIterator ibegin ()
const;
420 IntersectionIterator ileafbegin ()
const;
421 IntersectionIterator ilevelbegin ()
const;
423 IntersectionIterator iend ()
const;
424 IntersectionIterator ileafend ()
const;
425 IntersectionIterator ilevelend ()
const;
432 Entity father ()
const;
437 return (this->
level()>0);
443 return ( this->
grid->maxLevel() == this->
level() );
457 LocalGeometry geometryInFather ()
const;
465 HierarchicIterator hbegin (
int maxLevel)
const;
468 HierarchicIterator hend (
int maxLevel)
const;
475 SEntity (GridImp* _grid,
int _l,
int _index) :
476 SEntityBase(_grid,_l,_index),
481 SEntityBase(other.
grid, other.
l, other.
index ),
486 void make (GridImp* _grid,
int _l,
int _id)
489 built_father =
false;
496 built_father =
false;
502 mutable bool built_father;
503 mutable int father_index;
504 mutable LocalGeometryImpl in_father_local;
505 void make_father()
const;
526 template<
class Gr
idImp>
527 class SHierarchicIterator :
531 enum { dim = GridImp::dimension };
532 enum { dimworld = GridImp::dimensionworld };
539 typedef typename GridImp::template Codim<0>::Entity
Entity;
540 typedef typename GridImp::ctype
ctype;
553 int _maxLevel,
bool makeend) :
554 SEntityPointer(_grid,_e.
level(),_e.compressedIndex())
561 orig_l = this->
entity().level();
562 orig_index = _grid->getRealImplementation(this->
entity()).compressedIndex();
566 stack.push(originalElement);
572 push_sons(orig_l,orig_index);
580 int orig_l, orig_index;
583 std::stack<SHierarchicStackElem, Dune::ReservedVector<SHierarchicStackElem,GridImp::MAXL> > stack;
585 void push_sons (
int level,
int fatherid);
595 template<
class Gr
idImp>
596 class SIntersectionIterator
598 enum { dim=GridImp::dimension };
599 enum { dimworld=GridImp::dimensionworld };
605 typedef typename GridImp::template Codim<0>::Entity
Entity;
607 typedef typename GridImp::template Codim<1>::Geometry
Geometry;
616 typedef typename GridImp::ctype
ctype;
621 return intersection == i.intersection;
637 intersection(IntersectionImp(_grid,_self,_count))
641 Intersection intersection;
644 template<
class Gr
idImp>
647 enum { dim=GridImp::dimension };
648 enum { dimworld=GridImp::dimensionworld };
652 typedef typename GridImp::Traits::template Codim< 1 >::GeometryImpl GeometryImpl;
653 typedef typename GridImp::Traits::template Codim< 1 >::LocalGeometryImpl LocalGeometryImpl;
656 typedef typename GridImp::template Codim<0>::Entity
Entity;
658 typedef typename GridImp::template Codim<1>::Geometry
Geometry;
668 typedef typename GridImp::ctype
ctype;
690 return grid->boundarySegmentIndex(
self.level(), count, zred);
727 , is_on_boundary(false)
728 , built_intersections(false)
733 self(*_self), ne(self), grid(_grid),
734 partition(_grid->partition(grid->getRealImplementation(ne).level(),_self->z)),
735 zred(_grid->compress(grid->getRealImplementation(ne).level(),_self->z))
742 self(other.self), ne(other.ne), grid(other.grid),
743 partition(other.partition), zred(other.zred),
744 count(other.count), valid_count(other.valid_count),
745 valid_nb(other.valid_nb), is_on_boundary(other.is_on_boundary),
746 built_intersections(false)
756 partition = other.partition;
759 valid_count = other.valid_count;
760 valid_nb = other.valid_nb;
761 is_on_boundary = other.is_on_boundary;
764 built_intersections =
false;
785 n *=
geometry().integrationElement(local);
798 FieldVector<ctype, dimworld> normal(0.0);
799 normal[count/2] = (count%2) ? 1.0 : -1.0;
805 void make (
int _count)
const;
806 void makeintersections ()
const;
809 const GridImp * grid;
813 mutable bool valid_count;
814 mutable bool valid_nb;
815 mutable bool is_on_boundary;
816 mutable bool built_intersections;
817 mutable LocalGeometryImpl is_self_local;
818 mutable GeometryImpl is_global;
819 mutable LocalGeometryImpl is_nb_local;
834 while(! this->empty())
845 template<
int codim,
class Gr
idImp>
848 enum { dim = GridImp::dimension };
852 typedef typename GridImp::template Codim<codim>::Entity
Entity;
924 static EntityStackType eStack;
928 inline Entity*
getEntity(GridImp* _grid,
int _l,
int _id )
const
931 EntityStackType& enSt =
enStack();
939 Entity*
e = enSt.top();
941 grid->getRealImplementation(*e).make(_grid, _l,_id);
954 template<
int codim,
class Gr
idImp>
957 enum { dim = GridImp::dimension };
977 int level ()
const {
return this->_l; }
978 int index ()
const {
return this->_index; }
990 template<
int codim, PartitionIteratorType pitype,
class Gr
idImp>
991 class SLevelIterator :
995 enum { dim = GridImp::dimension };
1001 typedef typename GridImp::template Codim<codim>::Entity
Entity;
1008 SEntityPointer(_grid,_l,_id) {}
1019 template<
class Gr
idImp>
1025 enum { dim = GridImp::dimension };
1036 for (
int codim=0; codim<=GridImp::dimension; codim++)
1042 int index (
const typename GridImp::Traits::template Codim<cd>::Entity& e)
const
1044 return grid.getRealImplementation(e).compressedIndex();
1048 int subIndex (
const typename GridImp::Traits::template Codim< cc >::Entity &e,
1049 int i,
unsigned int codim )
const
1052 return grid.getRealImplementation(e).subCompressedIndex(codim, i);
1054 DUNE_THROW( NotImplemented,
"subIndex for higher codimension entity not implemented for SGrid." );
1058 template<
class EntityType >
1061 return (e.level() == level);
1067 return grid.size( level, type );
1073 return grid.size( level, codim );
1077 const std::vector<GeometryType>&
geomTypes (
int codim)
const
1079 return mytypes[codim];
1083 const std::vector<GeometryType>&
types (
int codim)
const
1089 const GridImp& grid;
1091 std::vector<GeometryType> mytypes[GridImp::dimension+1];
1103 template<
class Gr
idImp>
1105 public IdSet<GridImp,SGridGlobalIdSet<GridImp>, typename remove_const<GridImp>::type::PersistentIndexType>
1120 typedef typename remove_const<GridImp>::type::PersistentIndexType
IdType;
1128 IdType
id (
const typename remove_const<GridImp>::type::Traits::template Codim<cd>::Entity& e)
const
1130 return GridImp::getRealImplementation(e).persistentIndex();
1138 IdType
subId (
const typename remove_const< GridImp >::type::Traits::template Codim< 0 >::Entity &e,
1139 int i,
unsigned int codim )
const
1141 return GridImp::getRealImplementation(e).subPersistentIndex(codim, i);
1146 template<
int dim,
int dimworld,
class ctype>
1155 SIntersectionIterator,
1159 SGridLevelIndexSet<const SGrid<dim,dimworld,ctype> >,
1161 bigunsignedint<dim*sgrid_dim_bits+sgrid_level_bits+sgrid_codim_bits>,
1162 SGridGlobalIdSet<const SGrid<dim,dimworld,ctype> >,
1163 bigunsignedint<dim*sgrid_dim_bits+sgrid_level_bits+sgrid_codim_bits>,
1164 CollectiveCommunication<Dune::SGrid<dim,dimworld,ctype> >,
1226 template<
int dim,
int dimworld,
typename _ctype = sgr
id_ctype>
1255 SGrid (
const int *
const N_,
const ctype *
const H_);
1264 SGrid (
const int *
const N_,
const ctype *
const L_,
const ctype *
const H_);
1275 SGrid (FieldVector<int,dim> N_, FieldVector<ctype,dim> L_, FieldVector<ctype,dim> H_);
1288 template<
int cd, PartitionIteratorType pitype>
1292 template<
int cd, PartitionIteratorType pitype>
1299 return lbegin<cd,All_Partition>(level);
1306 return lend<cd,All_Partition>(level);
1310 template<
int cd, PartitionIteratorType pitype>
1311 typename Traits::template Codim<cd>::template Partition<pitype>::LeafIterator
leafbegin ()
const;
1314 template<
int cd, PartitionIteratorType pitype>
1315 typename Traits::template Codim<cd>::template Partition<pitype>::LeafIterator
leafend ()
const;
1321 return leafbegin<cd,All_Partition>();
1328 return leafend<cd,All_Partition>();
1332 template <
typename Seed>
1333 typename Traits::template Codim<Seed::codimension>::EntityPointer
1336 enum { codim = Seed::codimension };
1343 template <
typename Seed>
1344 typename Traits::template Codim<Seed::codimension>::Entity
1347 enum { codim = Seed::codimension };
1368 template<
class T,
template<
class>
class P,
int codim>
1376 int size (
int level,
int codim)
const;
1387 return (type.isCube()) ?
size(level,dim-type.dim()) : 0;
1399 return boundarysize;
1423 const array<int, dim>&
dims(
int level)
const {
1447 return theglobalidset;
1452 return theglobalidset;
1457 assert(level>=0 && level<=
maxLevel());
1458 return *(indexsets[level]);
1463 return *indexsets.back();
1470 template<
class DataHandle>
1474 template<
class DataHandle>
1478 const CollectiveCommunication<SGrid>&
comm ()
const
1527 template<int codim_, int dim_, class GridImp_, template<int,int,class> class EntityImp_>
1530 template<int codim_, class GridImp_>
1533 template<int codim_, int dim_, class GridImp_, template<int,int,class> class EntityImp_>
1537 FieldVector<ctype, dimworld> pos (int level, array<int,dim>& z) const;
1540 int calc_codim (int level, const array<int,dim>& z) const;
1543 int n (int level, const array<int,dim>& z) const;
1546 array<int,dim> z (int level, int i, int codim) const;
1549 array<int,dim> subz (const array<int,dim> & z, int i, int codim) const;
1552 array<int,dim> compress (int level, const array<int,dim>& z) const;
1555 array<int,dim> expand (int level, const array<int,dim>& r, int b) const;
1560 int partition (int level, const array<int,dim>& z) const;
1563 bool exists (int level, const array<int,dim>& zred) const;
1566 int boundarySegmentIndex (int l, int face, const array<int,dim> & zentity) const
1568 array<int,dim-1> zface;
1572 for (
int i=0; i<dir; i++) zface[i] = zentity[i]/(1<<l);
1573 for (
int i=dir+1; i<dim; i++) zface[i-1] = zentity[i]/(1<<l);
1574 zface = boundarymapper[dir].expand(zface, 0);
1576 int index = boundarymapper[dir].n(zface);
1578 for (
int i=0; i<dir; i++)
1579 index += 2*boundarymapper[i].elements(0);
1580 index += side*boundarymapper[dir].elements(0);
1585 PersistentIndexType persistentIndex (
int l,
int codim,
const array<int,dim> & zentity)
const
1591 PersistentIndexType id(codim);
1598 for (
int i=dim-1; i>=0; i--)
1610 int trailing = 1000;
1611 for (
int i=0; i<dim; i++)
1615 for (
int j=0; j<l; j++)
1616 if (zentity[i]&(1<<(j+1)))
1620 trailing =
std::min(trailing,zeros);
1624 int level = l-trailing;
1627 PersistentIndexType id(dim);
1634 for (
int i=dim-1; i>=0; i--)
1646 SGrid & operator = (
const SGrid &) {
return *
this; }
1648 void makeSGrid (
const array<int,dim>& N_,
const FieldVector<ctype, dim>& L_,
const FieldVector<ctype, dim>& H_);
1653 CollectiveCommunication<SGrid> ccobj;
1655 ReservedVector<SGridLevelIndexSet<const SGrid<dim,dimworld> >*,
MAXL> indexsets;
1656 SGridGlobalIdSet<const SGrid<dim,dimworld> > theglobalidset;
1659 FieldVector<ctype, dim> low;
1660 FieldVector<ctype, dim> H;
1661 std::vector<array<int,dim> > N;
1662 std::vector<FieldVector<ctype, dim> > h;
1663 mutable CubeMapper<dim> *mapper;
1666 array<CubeMapper<dim-1>, dim> boundarymapper;
1670 namespace Capabilities
1684 template<
int dim,
int dimw>
1687 static const bool v =
true;
1688 static const unsigned int topologyId = GenericGeometry :: CubeTopology< dim > :: type :: id ;
1694 template<
int dim,
int dimw>
1697 static const bool v =
true;
1703 template<
int dim,
int dimw,
int cdim>
1706 static const bool v =
true;
1712 template<
int dim,
int dimw>
1715 static const bool v =
true;
1721 template<
int dim,
int dimw>
1724 static const bool v =
true;
1739 static const int dimworld = GridType::dimensionworld;
1748 static shared_ptr<GridType>
1750 const FieldVector<ctype,dimworld>& upperRight,
1751 const array<unsigned int,dim>& elements)
1753 FieldVector<int, dim> elements_;
1754 std::copy(elements.begin(), elements.end(), elements_.begin());
1756 return shared_ptr<GridType>
1757 (
new GridType(elements_, lowerLeft, upperRight));
1769 static shared_ptr<GridType>
1771 const FieldVector<ctype,dimworld>& upperRight,
1772 const array<unsigned int,dim>& elements)
1774 DUNE_THROW(
GridError, className<StructuredGridFactory>()
1775 <<
"::createSimplexGrid(): Simplices are not supported "
1782 #include "sgrid/sgrid.cc"
int boundaryId() const
Definition: sgrid.hh:683
const Traits::LocalIdSet & localIdSet() const
Definition: sgrid.hh:1450
int compressedIndex() const
consecutive, codim-wise, level-wise index
Definition: sgrid.hh:238
int l
Definition: sgrid.hh:518
bool builtgeometry
true if geometry has been constructed
Definition: sgrid.hh:282
int subIndex(const typename GridImp::Traits::template Codim< cc >::Entity &e, int i, unsigned int codim) const
Definition: sgrid.hh:1048
_ctype ctype
define type used for coordinates in grid module
Definition: sgrid.hh:1244
static EntityStackType & enStack()
Definition: sgrid.hh:922
AutoPtrStack< Entity > EntityStackType
Definition: sgrid.hh:921
const int sgrid_dim_bits
Definition: sgrid.hh:42
bool equals(const SIntersectionIterator< GridImp > &i) const
equality
Definition: sgrid.hh:619
SEntityPointer(GridImp *_grid, int _l, int _index)
constructor
Definition: sgrid.hh:864
SGrid()
empty constructor making grid of unit square discretized with one cell
FieldVector< ctype, mydim > LocalCoordinate
type of local coordinates
Definition: common/geometry.hh:101
Definition: defaultgridview.hh:223
SIntersection(const SIntersection &other)
Definition: sgrid.hh:741
Definition: common/geometry.hh:24
GlobalCoordinate unitOuterNormal(const LocalCoordinate &local) const
Return unit outer normal (length == 1)
Definition: sgrid.hh:790
GridImp::PersistentIndexType PersistentIndexType
Definition: sgrid.hh:363
void globalRefine(int refCount)
Refine mesh globally by one refCount levels.
SGridFamily< dim, dimworld, _ctype > GridFamily
Definition: sgrid.hh:1230
IdType id(const typename remove_const< GridImp >::type::Traits::template Codim< cd >::Entity &e) const
get id of an entity
Definition: sgrid.hh:1128
int ghostSize(int codim) const
return size (= distance in graph) of ghost region
Definition: sgrid.hh:1502
array< int, dim > z
my coordinate, number of even components = codim
Definition: sgrid.hh:280
SEntitySeed(int l, int index)
constructor
Definition: sgrid.hh:967
A Traits struct that collects all associated types of one implementation.
Definition: common/grid.hh:437
Definition: sgrid.hh:1147
Geometry::LocalCoordinate LocalCoordinate
Definition: sgrid.hh:659
InterfaceType
Parameter to be used for the communication functions.
Definition: gridenums.hh:84
Traits::template Codim< cd >::template Partition< All_Partition >::LevelIterator lend(int level) const
one past the end on this level
Definition: sgrid.hh:1304
~AutoPtrStack()
Definition: sgrid.hh:832
GridTraits< dim, dimworld, Dune::SGrid< dim, dimworld, ctype >, SGeometry, SEntity, SEntityPointer, SLevelIterator, SIntersection, SIntersection, SIntersectionIterator, SIntersectionIterator, SHierarchicIterator, SLevelIterator, SGridLevelIndexSet< const SGrid< dim, dimworld, ctype > >, SGridLevelIndexSet< const SGrid< dim, dimworld, ctype > >, SGridGlobalIdSet< const SGrid< dim, dimworld, ctype > >, bigunsignedint< dim *sgrid_dim_bits+sgrid_level_bits+sgrid_codim_bits >, SGridGlobalIdSet< const SGrid< dim, dimworld, ctype > >, bigunsignedint< dim *sgrid_dim_bits+sgrid_level_bits+sgrid_codim_bits >, CollectiveCommunication< Dune::SGrid< dim, dimworld, ctype > >, DefaultLevelGridViewTraits, DefaultLeafGridViewTraits, SEntitySeed > Traits
Definition: sgrid.hh:1167
Entity & dereference() const
dereferencing
GridImp::ctype ctype
define type used for coordinates in grid module
Definition: sgrid.hh:96
GridImp * grid
grid containes mapper, geometry, etc.
Definition: sgrid.hh:277
~SEntityPointer()
destructor pointer
Definition: sgrid.hh:882
SIntersection & operator=(const SIntersection &other)
assignment operator
Definition: sgrid.hh:750
const std::vector< GeometryType > & types(int codim) const
deliver all geometry types used in this grid
Definition: sgrid.hh:1083
const Intersection & dereference() const
dereferencing
Definition: sgrid.hh:628
SEntity()
Definition: sgrid.hh:470
bool equals(const SEntityBase &other) const
Definition: sgrid.hh:163
SEntityBase(GridImp *_grid, int _l, int _index)
constructor
Definition: sgrid.hh:197
void make(const FieldVector< ctype, cdim > &lower, const FieldMatrix< ctype, mydim, cdim > &A)
Set up the geometry.
Definition: sgrid.hh:105
const FieldVector< ctype, dimworld > & lowerLeft() const
Get lower left corner.
Definition: sgrid.hh:1428
const int sgrid_level_bits
Definition: sgrid.hh:43
Dune::Intersection< const GridImp, Dune::SIntersectionIterator< const GridImp > > Intersection
Definition: sgrid.hh:662
SEntitySeed< codim, GridImp > seed() const
Return the entity seed which contains sufficient information to generate the entity again and uses as...
Definition: sgrid.hh:174
Entity * e
virtual entity
Definition: sgrid.hh:949
GridImp::template Codim< 0 >::Entity Entity
Definition: sgrid.hh:605
GeometryType
Type representing VTK's entity geometry types.
Definition: common.hh:178
Traits::template Codim< cd >::template Partition< pitype >::LeafIterator leafend() const
one past the end on the leaf level
Specialize with 'true' if the grid is a Cartesian grid. Cartesian grids satisfy the following propert...
Definition: common/capabilities.hh:47
Default Implementations for EntityImp.
Definition: common/entity.hh:738
SGridLevelIndexSet(const GridImp &g, int l)
constructor stores reference to a grid and level
Definition: sgrid.hh:1030
int globalIndex() const
global index is calculated from the index and grid size
GridFamily::Traits::template Codim< cd >::Entity Entity
A type that is a model of a Dune::Entity.
Definition: common/grid.hh:446
Include standard header files.
Definition: agrid.hh:59
GridImp::template Codim< codim >::Entity Entity
Definition: sgrid.hh:1001
bool equals(const SEntityPointer< codim, GridImp > &i) const
equality
SEntitySeed()
default constructor (invalid)
Definition: sgrid.hh:962
Geometry geometry() const
bool equals(const SIntersection &other) const
GridImp::template Codim< 1 >::Geometry Geometry
Definition: sgrid.hh:658
GridImp::template Codim< 1 >::Geometry Geometry
Definition: sgrid.hh:607
GridImp::ctype ctype
define type used for coordinates in grid module
Definition: sgrid.hh:668
bool contains(const EntityType &e) const
Definition: sgrid.hh:1059
Definition: defaultgridview.hh:23
int ghostSize(int level, int codim) const
return size (= distance in graph) of ghost region
Definition: sgrid.hh:1496
int overlapSize(int level, int codim) const
return size (= distance in graph) of overlap region
Definition: sgrid.hh:1484
all interior entities
Definition: gridenums.hh:29
const CollectiveCommunication< SGrid > & comm() const
Definition: sgrid.hh:1478
Definition: alugrid/common/declaration.hh:18
void make(GridImp *_grid, int _l, int _id)
Reinitialization.
SIntersection(GridImp *_grid, const SEntity< 0, dim, GridImp > *_self, int _count)
constructor
Definition: sgrid.hh:732
const Traits::LevelIndexSet & levelIndexSet(int level) const
Definition: sgrid.hh:1455
const int sgrid_codim_bits
Definition: sgrid.hh:44
GridImp::template Codim< cd >::Entity Entity
Definition: sgrid.hh:357
[ provides Dune::Grid ]
Definition: sgrid.hh:54
GridImp::template Codim< 0 >::EntityPointer EntityPointer
Definition: sgrid.hh:359
static shared_ptr< GridType > createCubeGrid(const FieldVector< ctype, dimworld > &lowerLeft, const FieldVector< ctype, dimworld > &upperRight, const array< unsigned int, dim > &elements)
Create a structured cube grid.
Definition: sgrid.hh:1749
Geometry::GlobalCoordinate GlobalCoordinate
Definition: sgrid.hh:660
bool hasFather() const
returns true if father entity exists
Definition: sgrid.hh:435
Traits::template Codim< cd >::template Partition< pitype >::LeafIterator leafbegin() const
return LeafIterator which points to the first entity
SEntityPointer & operator=(const SEntityPointer &other)
assignment operator
Definition: sgrid.hh:892
GridImp * grid
my grid
Definition: sgrid.hh:946
GridImp::template Codim< 0 >::Entity Entity
Definition: sgrid.hh:360
void increment()
increment
static const bool v
Definition: common/capabilities.hh:109
int subCompressedLeafIndex(int cd, int i) const
subentity compressed leaf index (not available here)
Definition: sgrid.hh:269
int subCompressedLeafIndex(int codim, int i) const
Definition: sgrid.hh:395
int level() const
Definition: sgrid.hh:977
GlobalCoordinate integrationOuterNormal(const LocalCoordinate &local) const
return outer normal scaled with the integration element
Definition: sgrid.hh:782
int overlapSize(int codim) const
return size (= distance in graph) of overlap region
Definition: sgrid.hh:1490
Specialize with 'true' for all codims that a grid implements entities for. (default=false) ...
Definition: common/capabilities.hh:57
GlobalCoordinate outerNormal(const LocalCoordinate &local) const
Return an outer normal (length not necessarily 1)
Definition: sgrid.hh:776
const std::vector< GeometryType > & geomTypes(int codim) const
deliver all geometry types used in this grid
Definition: sgrid.hh:1077
Geometry geometry() const
geometry of this entity
Definition: sgrid.hh:186
bool operator!=(const SHierarchicStackElem &s) const
Definition: sgrid.hh:523
int indexInOutside() const
local index of codim 1 entity in neighbor where intersection is contained in
SEntity(const SEntity &other)
Definition: sgrid.hh:480
Different resources needed by all grid implementations.
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:1305
Traits::template Codim< cd >::template Partition< pitype >::LevelIterator lend(int level) const
one past the end on this level
Traits::template Codim< cd >::template Partition< All_Partition >::LeafIterator leafend() const
return LeafIterator which points behind the last entity
Definition: sgrid.hh:1326
bool isLeaf() const
return true if the entity is leaf
Definition: sgrid.hh:441
SGridFamily< dim, dimworld, _ctype >::Traits Traits
Definition: sgrid.hh:1238
Entity & entity() const
Definition: sgrid.hh:912
LocalGeometry geometryInOutside() const
GlobalCoordinate centerUnitOuterNormal() const
Return unit outer normal (length == 1)
Definition: sgrid.hh:796
FieldVector< ctype, dimworld > upperRight() const
Get upper right corner.
Definition: sgrid.hh:1433
bigunsignedint< dim *sgrid_dim_bits+sgrid_level_bits+sgrid_codim_bits > PersistentIndexType
Definition: sgrid.hh:1231
SHierarchicStackElem(int _l, int _index)
Definition: sgrid.hh:521
int subCompressedIndex(int codim, int i) const
subentity compressed index
Definition: sgrid.hh:385
void make(int _l, int _id)
Reinitialization.
Definition: sgrid.hh:493
bool conforming() const
return true if intersection is conform.
Definition: sgrid.hh:770
SEntity()
Definition: sgrid.hh:302
Entity * getEntity(GridImp *_grid, int _l, int _id) const
Definition: sgrid.hh:928
implementation of index set
Definition: sgrid.hh:1020
GridImp::template Codim< 0 >::EntityPointer EntityPointer
Definition: sgrid.hh:657
void communicate(DataHandle &data, InterfaceType iftype, CommunicationDirection dir) const
Definition: sgrid.hh:1475
GridImp::LeafIntersectionIterator IntersectionIterator
Definition: sgrid.hh:361
int size(int codim) const
return size of set for a given codim
Definition: sgrid.hh:1071
static const bool v
Definition: common/capabilities.hh:100
void communicate(DataHandle &data, InterfaceType iftype, CommunicationDirection dir, int level) const
Definition: sgrid.hh:1471
GeometryType type() const
obtain the type of reference element for this intersection
Definition: sgrid.hh:711
GridImp::template Codim< codim >::Entity Entity
Definition: sgrid.hh:852
int level() const
ask for level of entity
GridImp::template Codim< 0 >::EntityPointer EntityPointer
Definition: sgrid.hh:606
int ghostSize(int level, int codim)
return size (= distance in graph) of ghost region
Definition: sgrid.hh:1412
SEntityPointer(const SEntityPointer< codim, GridImp > &other)
constructor
Definition: sgrid.hh:876
GridImp::template Codim< 1 >::LocalGeometry LocalGeometry
Definition: sgrid.hh:608
void make(GridImp *_grid, int _l, int _id)
Reinitialization.
Definition: sgrid.hh:486
Id Set Interface.
Definition: common/grid.hh:362
~SGrid()
SGrid destructor.
static const bool v
Definition: common/capabilities.hh:50
int level() const
level of this element
Definition: sgrid.hh:158
PersistentIndexType persistentIndex() const
globally unique, persistent index
Definition: sgrid.hh:232
int size(int level, int codim) const
number of grid entities per level and codim
Specialize with 'true' if implementation guarantees conforming level grids. (default=false) ...
Definition: common/capabilities.hh:98
Intersection of a mesh entities of codimension 0 ("elements") with a "neighboring" element or with th...
Definition: albertagrid/dgfparser.hh:26
int subCompressedIndex(int cd, int i) const
subentity compressed index (not available here)
Definition: sgrid.hh:262
bool boundary() const
return true if intersection is with boundary.
int compressedLeafIndex() const
consecutive, codim-wise, level-wise index
Definition: sgrid.hh:244
SEntityPointer< codim, GridImp > EntityPointerImp
Definition: sgrid.hh:851
Index Set Interface base class.
Definition: common/grid.hh:361
int size(int level, GeometryType type) const
number of entities per level and geometry type in this process
Definition: sgrid.hh:1385
static shared_ptr< GridType > createSimplexGrid(const FieldVector< ctype, dimworld > &lowerLeft, const FieldVector< ctype, dimworld > &upperRight, const array< unsigned int, dim > &elements)
Create a structured simplex grid.
Definition: sgrid.hh:1770
SEntityBase()
empty constructor
Definition: sgrid.hh:205
A class to construct structured cube and simplex grids using the grid factory.
Base class for exceptions in Dune grid modules.
Definition: exceptions.hh:16
GridImp::template Codim< codim >::Geometry Geometry
Definition: sgrid.hh:154
LocalGeometry geometryInInside() const
const array< int, dim > & dims(int level) const
Get number of elements in each coordinate direction.
Definition: sgrid.hh:1423
int boundarySegmentIndex() const
Definition: sgrid.hh:688
GridImp::template Codim< 0 >::Geometry Geometry
Definition: sgrid.hh:351
a stack of pointers with auto destruction if the stack is destructed
Definition: sgrid.hh:829
void increment()
increment
int min(const DofVectorPointer< int > &dofVector)
Definition: dofvector.hh:346
Traits::template Codim< Seed::codimension >::Entity entity(const Seed &seed) const
Definition: sgrid.hh:1345
GridImp::ctype ctype
Definition: sgrid.hh:350
Specialize with 'true' for if the codimension 0 entity of the grid has only one possible geometry typ...
Definition: common/capabilities.hh:26
SGridLevelIndexSet< SGrid< dim, dimworld > > LevelIndexSetType
Definition: sgrid.hh:1234
void makegeometry() const
geometry of this entity
Specialize with 'true' if implementation guarantees a conforming leaf grid. (default=false) ...
Definition: common/capabilities.hh:107
Traits::template Codim< Seed::codimension >::EntityPointer entityPointer(const Seed &seed) const
Definition: sgrid.hh:1334
int l
level where element is on
Definition: sgrid.hh:278
int index() const
Definition: sgrid.hh:978
int index(const typename GridImp::Traits::template Codim< cd >::Entity &e) const
get index of an entity
Definition: sgrid.hh:1042
persistent, globally unique Ids
Definition: sgrid.hh:1104
SIntersectionIterator()
Definition: sgrid.hh:633
remove_const< GridImp >::type::PersistentIndexType IdType
define the type used for persistent indices
Definition: sgrid.hh:1120
SIntersection()
Definition: sgrid.hh:721
IdType subId(const typename remove_const< GridImp >::type::Traits::template Codim< 0 >::Entity &e, int i, unsigned int codim) const
get id of subentity
Definition: sgrid.hh:1138
bool adapt()
map adapt to global refine
Definition: sgrid.hh:1438
GridImp::template Codim< 0 >::Entity Entity
Definition: sgrid.hh:656
GeometryImpl geo
geometry, is only built on demand
Definition: sgrid.hh:281
Provides base classes for index and id sets.
static const bool v
Definition: common/capabilities.hh:28
static const unsigned int topologyId
Definition: common/capabilities.hh:31
SEntityBase(const SEntityBase &other)
copy constructor
Definition: sgrid.hh:213
static const bool v
Definition: common/capabilities.hh:59
void communicate(T &t, InterfaceType iftype, CommunicationDirection dir, int level)
Definition: sgrid.hh:1369
PartitionType
Attributes used in the generic overlap model.
Definition: gridenums.hh:28
FieldVector< ctype, cdim > GlobalCoordinate
type of the global coordinates
Definition: common/geometry.hh:104
GridImp::ctype ctype
Definition: sgrid.hh:540
int size(int codim) const
number of leaf entities per codim in this process
Definition: sgrid.hh:1379
size_t numBoundarySegments() const
returns the number of boundary segments within the macro grid
Definition: sgrid.hh:1397
int index
my consecutive index
Definition: sgrid.hh:948
SLevelIterator(GridImp *_grid, int _l, int _id)
constructor
Definition: sgrid.hh:1007
Types for GridView.
Definition: common/grid.hh:420
CommunicationDirection
Define a type for communication direction parameter.
Definition: gridenums.hh:168
GridImp::template Codim< 0 >::Entity Entity
Definition: sgrid.hh:539
Dune::SIntersection< GridImp > IntersectionImp
Definition: sgrid.hh:609
Construct structured cube and simplex grids in unstructured grid managers.
Definition: structuredgridfactory.hh:30
GridImp::PersistentIndexType PersistentIndexType
Definition: sgrid.hh:155
int size(GeometryType type) const
number of leaf entities per codim and geometry type in this process
Definition: sgrid.hh:1391
int indexInInside() const
local index of codim 1 entity in self where intersection is contained in
Traits::template Codim< cd >::template Partition< pitype >::LevelIterator lbegin(int level) const
Iterator to first entity of given codim on level.
int size(GeometryType type) const
get number of entities of given type and level (the level is known to the object) ...
Definition: sgrid.hh:1065
SGridGlobalIdSet< SGrid< dim, dimworld > > GlobalIdSetType
Definition: sgrid.hh:1236
int global_size(int codim) const
number of grid entities of all level for given codim
GridImp::ctype ctype
define type used for coordinates in grid module
Definition: sgrid.hh:616
int index
Definition: sgrid.hh:519
int overlapSize(int level, int codim)
return size (= distance in graph) of overlap region
Definition: sgrid.hh:1406
A traits struct that collects all associated types of one grid model.
Definition: common/grid.hh:1343
PersistentIndexType subPersistentIndex(int codim, int i) const
subentity persistent index
Definition: sgrid.hh:405
GeometryType type() const
return the element type identifier
Definition: sgrid.hh:179
SHierarchicIterator(GridImp *_grid, const Dune::SEntity< 0, GridImp::dimension, GridImp > &_e, int _maxLevel, bool makeend)
Definition: sgrid.hh:551
SEntity(GridImp *_grid, int _l, int _index)
constructor
Definition: sgrid.hh:475
SEntity(GridImp *_grid, int _l, int _id)
constructor
Definition: sgrid.hh:299
SGridLevelIndexSet< SGrid< dim, dimworld > > LeafIndexSetType
Definition: sgrid.hh:1235
const Traits::GlobalIdSet & globalIdSet() const
Definition: sgrid.hh:1445
GridImp::template Codim< cd >::EntityPointer EntityPointer
Definition: sgrid.hh:356
Traits::template Codim< cd >::template Partition< All_Partition >::LevelIterator lbegin(int level) const
Iterator to first entity of given codim on level.
Definition: sgrid.hh:1297
SIntersectionIterator(GridImp *_grid, const SEntity< 0, dim, GridImp > *_self, int _count)
Definition: sgrid.hh:636
GridImp::template Codim< 1 >::LocalGeometry LocalGeometry
Definition: sgrid.hh:661
GridImp::template Codim< 0 >::LocalGeometry LocalGeometry
Definition: sgrid.hh:352
GridImp::ctype ctype
Definition: sgrid.hh:153
bool neighbor() const
return true if neighbor on this level exists
SGeometry()
constructor
Definition: sgrid.hh:131
Definition: sgrid.hh:1241
A set of traits classes to store static information about grid implementation.
int l
level where element is on
Definition: sgrid.hh:947
bool isValid() const
check whether the EntitySeed refers to a valid Entity
Definition: sgrid.hh:972
const Traits::LeafIndexSet & leafIndexSet() const
Definition: sgrid.hh:1461
Traits::template Codim< cd >::template Partition< All_Partition >::LeafIterator leafbegin() const
return LeafIterator which points to the first entity
Definition: sgrid.hh:1319
Dune::Intersection< const GridImp, Dune::SIntersection< const GridImp > > Intersection
Definition: sgrid.hh:610
GridImp::HierarchicIterator HierarchicIterator
Definition: sgrid.hh:362
Wrapper class for entities.
Definition: common/entity.hh:61
bool operator==(const SHierarchicStackElem &s) const
Definition: sgrid.hh:522
void increment()
increment
int index
my consecutive index
Definition: sgrid.hh:279
PartitionType partitionType() const
Definition: sgrid.hh:194
SHierarchicStackElem()
Definition: sgrid.hh:520
double sgrid_ctype
Definition: sgrid.hh:39
SEntityPointer(const SEntity< codim, dim, GridImp > &_e)
constructor
Definition: sgrid.hh:870
SEntity< codim, dim, GridImp > & realEntity() const
Definition: sgrid.hh:907