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;
165 return (index==other.
index)&&(l==other.
l)&&(grid==other.
grid);
169 int globalIndex()
const;
188 if (!builtgeometry) makegeometry();
191 return Geometry( geo );
201 z(grid->z(l,index,codim)),
202 builtgeometry(false) {}
223 void make (GridImp* _grid,
int _l,
int _id);
226 void make (
int _l,
int _id);
229 void makegeometry ()
const;
234 return grid->persistentIndex(l, codim, z);
248 if (codim<dim || l==grid->maxLevel())
249 return compressedIndex();
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;
387 if (codim==0)
return this->compressedIndex();
389 return (this->grid)->n(this->l, this->grid->subz(this->z,i,codim));
397 if (codim==0)
return this->compressedLeafIndex();
399 assert(this->l == this->grid->maxLevel());
401 return (this->grid)->n(this->l, this->grid->subz(this->z,i,codim));
407 if (codim==0)
return this->persistentIndex();
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>
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);
569 maxLevel =
std::min(_maxLevel,this->grid->maxLevel());
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>
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;
612 enum { dimension=dim };
614 enum { dimensionworld=dimworld };
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;
664 enum { dimension=dim };
666 enum { dimensionworld=dimworld };
668 typedef typename GridImp::ctype
ctype;
674 Entity inside()
const;
678 Entity outside()
const;
681 bool boundary ()
const;
684 if (boundary())
return count + 1;
690 return grid->boundarySegmentIndex(
self.level(), count, zred);
695 bool neighbor ()
const;
700 LocalGeometry geometryInInside ()
const;
704 LocalGeometry geometryInOutside ()
const;
708 Geometry geometry ()
const;
717 int indexInInside ()
const;
719 int indexInOutside ()
const;
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;
778 return centerUnitOuterNormal();
784 FieldVector<ctype, dimworld> n = centerUnitOuterNormal();
785 n *= geometry().integrationElement(local);
792 return centerUnitOuterNormal();
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;
854 enum { codimension = codim };
859 Entity& dereference()
const;
865 grid(_grid), l(_l), index(_index),
871 grid(_e.grid), l(_e.l), index(_e.index),
877 grid(other.grid), l(other.l), index(other.index),
909 return grid->getRealImplementation(entity());
916 e = getEntity( grid, l, index );
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 };
959 enum { codimension = codim };
977 int level ()
const {
return this->_l; }
978 int index ()
const {
return this->_index; }
990 template<
int codim, PartitionIteratorType pitype,
class Gr
idImp>
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 1085 return geomTypes(codim);
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_);
1285 int maxLevel()
const;
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>
1314 template<
int cd, PartitionIteratorType pitype>
1321 return leafbegin<cd,All_Partition>();
1328 return leafend<cd,All_Partition>();
1332 template <
typename Seed>
1336 enum { codim = Seed::codimension };
1338 this->getRealImplementation(seed).level(),
1339 this->getRealImplementation(seed).index());
1343 template <
typename Seed>
1347 enum { codim = Seed::codimension };
1350 this->getRealImplementation(seed).level(),
1351 this->getRealImplementation(seed).index())
1368 template<
class T,
template<
class>
class P,
int codim>
1376 int size (
int level,
int codim)
const;
1381 return size(maxLevel(),codim);
1387 return (type.isCube()) ? size(level,dim-type.dim()) : 0;
1393 return size(maxLevel(),type);
1399 return boundarysize;
1403 int global_size (
int codim)
const;
1420 void globalRefine (
int refCount);
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);
1595 id =
id+PersistentIndexType(l);
1598 for (
int i=dim-1; i>=0; i--)
1601 id =
id+PersistentIndexType(zentity[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);
1631 id =
id+PersistentIndexType(level);
1634 for (
int i=dim-1; i>=0; i--)
1637 id =
id+PersistentIndexType(zentity[i]>>trailing);
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;
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" GridImp::template Codim< 0 >::LocalGeometry LocalGeometry
Definition: sgrid.hh:352
SEntity()
Definition: sgrid.hh:470
void make(GridImp *_grid, int _l, int _id)
Reinitialization.
Definition: sgrid.hh:486
int size(int level, GeometryType type) const
number of entities per level and geometry type in this process
Definition: sgrid.hh:1385
int level() const
level of this element
Definition: sgrid.hh:158
Id Set Interface.
Definition: common/grid.hh:362
const int sgrid_dim_bits
Definition: sgrid.hh:42
SEntityPointer< codim, GridImp > EntityPointerImp
Definition: sgrid.hh:851
SEntityPointer(const SEntity< codim, dim, GridImp > &_e)
constructor
Definition: sgrid.hh:870
const array< int, dim > & dims(int level) const
Get number of elements in each coordinate direction.
Definition: sgrid.hh:1423
Geometry::GlobalCoordinate GlobalCoordinate
Definition: sgrid.hh:660
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
GridImp::template Codim< 0 >::EntityPointer EntityPointer
Definition: sgrid.hh:359
GridImp::template Codim< 0 >::EntityPointer EntityPointer
Definition: sgrid.hh:657
void make(GridImp *_grid, int _l, int _id)
Reinitialization.
SGridLevelIndexSet< SGrid< dim, dimworld > > LevelIndexSetType
Definition: sgrid.hh:1234
Entity * getEntity(GridImp *_grid, int _l, int _id) const
Definition: sgrid.hh:928
int subCompressedLeafIndex(int codim, int i) const
Definition: sgrid.hh:395
SHierarchicStackElem(int _l, int _index)
Definition: sgrid.hh:521
FieldVector< ctype, dimworld > upperRight() const
Get upper right corner.
Definition: sgrid.hh:1433
int l
level where element is on
Definition: sgrid.hh:947
Base class for exceptions in Dune grid modules.
Definition: exceptions.hh:16
GeometryImpl geo
geometry, is only built on demand
Definition: sgrid.hh:281
bigunsignedint< dim *sgrid_dim_bits+sgrid_level_bits+sgrid_codim_bits > PersistentIndexType
Definition: sgrid.hh:1231
SIntersection()
Definition: sgrid.hh:721
bool adapt()
map adapt to global refine
Definition: sgrid.hh:1438
GlobalCoordinate integrationOuterNormal(const LocalCoordinate &local) const
return outer normal scaled with the integration element
Definition: sgrid.hh:782
int compressedIndex() const
consecutive, codim-wise, level-wise index
Definition: sgrid.hh:238
bool conforming() const
return true if intersection is conform.
Definition: sgrid.hh:770
bool isLeaf() const
return true if the entity is leaf
Definition: sgrid.hh:441
void communicate(T &t, InterfaceType iftype, CommunicationDirection dir, int level)
Definition: sgrid.hh:1369
int index
my consecutive index
Definition: sgrid.hh:279
Specialize with 'true' for if the codimension 0 entity of the grid has only one possible geometry typ...
Definition: common/capabilities.hh:26
GridImp::template Codim< 1 >::Geometry Geometry
Definition: sgrid.hh:658
Specialize with 'true' if implementation guarantees a conforming leaf grid. (default=false) ...
Definition: common/capabilities.hh:107
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
size_t numBoundarySegments() const
returns the number of boundary segments within the macro grid
Definition: sgrid.hh:1397
A class to construct structured cube and simplex grids using the grid factory.
void communicate(DataHandle &data, InterfaceType iftype, CommunicationDirection dir) const
Definition: sgrid.hh:1475
int subIndex(const typename GridImp::Traits::template Codim< cc >::Entity &e, int i, unsigned int codim) const
Definition: sgrid.hh:1048
GridImp::template Codim< 0 >::Entity Entity
Definition: sgrid.hh:360
PartitionType
Attributes used in the generic overlap model.
Definition: gridenums.hh:28
[ provides Dune::Grid ]
Definition: sgrid.hh:54
SEntity()
Definition: sgrid.hh:302
const std::vector< GeometryType > & types(int codim) const
deliver all geometry types used in this grid
Definition: sgrid.hh:1083
GridImp::template Codim< 1 >::LocalGeometry LocalGeometry
Definition: sgrid.hh:661
Entity & entity() const
Definition: sgrid.hh:912
GeometryType
Type representing VTK's entity geometry types.
Definition: common.hh:178
GridImp::ctype ctype
Definition: sgrid.hh:540
GridImp::ctype ctype
define type used for coordinates in grid module
Definition: sgrid.hh:96
int size(GeometryType type) const
number of leaf entities per codim and geometry type in this process
Definition: sgrid.hh:1391
Definition: alugrid/common/declaration.hh:18
GridImp::template Codim< 0 >::EntityPointer EntityPointer
Definition: sgrid.hh:606
CommunicationDirection
Define a type for communication direction parameter.
Definition: gridenums.hh:168
Entity * e
virtual entity
Definition: sgrid.hh:949
FieldVector< ctype, mydim > LocalCoordinate
type of local coordinates
Definition: common/geometry.hh:101
bool builtgeometry
true if geometry has been constructed
Definition: sgrid.hh:282
Wrapper class for entities.
Definition: common/entity.hh:61
GridImp::ctype ctype
define type used for coordinates in grid module
Definition: sgrid.hh:616
Geometry geometry() const
geometry of this entity
Definition: sgrid.hh:186
implementation of index set
Definition: sgrid.hh:1020
GridImp::template Codim< codim >::Entity Entity
Definition: sgrid.hh:1001
int index() const
Definition: sgrid.hh:978
AutoPtrStack< Entity > EntityStackType
Definition: sgrid.hh:921
void make(const FieldVector< ctype, cdim > &lower, const FieldMatrix< ctype, mydim, cdim > &A)
Set up the geometry.
Definition: sgrid.hh:105
SGridLevelIndexSet< SGrid< dim, dimworld > > LeafIndexSetType
Definition: sgrid.hh:1235
SEntityBase()
empty constructor
Definition: sgrid.hh:205
const Traits::GlobalIdSet & globalIdSet() const
Definition: sgrid.hh:1445
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
SHierarchicStackElem()
Definition: sgrid.hh:520
SGeometry()
constructor
Definition: sgrid.hh:131
GridImp::HierarchicIterator HierarchicIterator
Definition: sgrid.hh:362
bool contains(const EntityType &e) const
Definition: sgrid.hh:1059
Dune::Intersection< const GridImp, Dune::SIntersection< const GridImp > > Intersection
Definition: sgrid.hh:610
array< int, dim > z
my coordinate, number of even components = codim
Definition: sgrid.hh:280
SIntersection(const SIntersection &other)
Definition: sgrid.hh:741
Definition: common/geometry.hh:24
FieldVector< ctype, cdim > GlobalCoordinate
type of the global coordinates
Definition: common/geometry.hh:104
GridImp::template Codim< codim >::Entity Entity
Definition: sgrid.hh:852
Traits::template Codim< Seed::codimension >::Entity entity(const Seed &seed) const
Definition: sgrid.hh:1345
const Traits::LocalIdSet & localIdSet() const
Definition: sgrid.hh:1450
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
SIntersectionIterator()
Definition: sgrid.hh:633
SEntityPointer(const SEntityPointer< codim, GridImp > &other)
constructor
Definition: sgrid.hh:876
remove_const< GridImp >::type::PersistentIndexType IdType
define the type used for persistent indices
Definition: sgrid.hh:1120
bool equals(const SIntersectionIterator< GridImp > &i) const
equality
Definition: sgrid.hh:619
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 hasFather() const
returns true if father entity exists
Definition: sgrid.hh:435
SEntityBase(const SEntityBase &other)
copy constructor
Definition: sgrid.hh:213
GridImp::template Codim< codim >::Geometry Geometry
Definition: sgrid.hh:154
int index
my consecutive index
Definition: sgrid.hh:948
int index
Definition: sgrid.hh:519
Index Set Interface base class.
Definition: common/grid.hh:361
int size(int codim) const
number of leaf entities per codim in this process
Definition: sgrid.hh:1379
bool isValid() const
check whether the EntitySeed refers to a valid Entity
Definition: sgrid.hh:972
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
GridImp * grid
my grid
Definition: sgrid.hh:946
GridImp::template Codim< 0 >::Geometry Geometry
Definition: sgrid.hh:351
GridImp::PersistentIndexType PersistentIndexType
Definition: sgrid.hh:363
Dune::SIntersection< GridImp > IntersectionImp
Definition: sgrid.hh:609
Definition: defaultgridview.hh:223
all interior entities
Definition: gridenums.hh:29
const Intersection & dereference() const
dereferencing
Definition: sgrid.hh:628
GridImp::template Codim< 0 >::Entity Entity
Definition: sgrid.hh:656
GridImp * grid
grid containes mapper, geometry, etc.
Definition: sgrid.hh:277
SGridGlobalIdSet< SGrid< dim, dimworld > > GlobalIdSetType
Definition: sgrid.hh:1236
int overlapSize(int level, int codim)
return size (= distance in graph) of overlap region
Definition: sgrid.hh:1406
GlobalCoordinate unitOuterNormal(const LocalCoordinate &local) const
Return unit outer normal (length == 1)
Definition: sgrid.hh:790
const FieldVector< ctype, dimworld > & lowerLeft() const
Get lower left corner.
Definition: sgrid.hh:1428
GridImp::LeafIntersectionIterator IntersectionIterator
Definition: sgrid.hh:361
SIntersectionIterator(GridImp *_grid, const SEntity< 0, dim, GridImp > *_self, int _count)
Definition: sgrid.hh:636
~AutoPtrStack()
Definition: sgrid.hh:832
double sgrid_ctype
Definition: sgrid.hh:39
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
SEntity(const SEntity &other)
Definition: sgrid.hh:480
SEntitySeed(int l, int index)
constructor
Definition: sgrid.hh:967
SHierarchicIterator(GridImp *_grid, const Dune::SEntity< 0, GridImp::dimension, GridImp > &_e, int _maxLevel, bool makeend)
Definition: sgrid.hh:551
int subCompressedIndex(int cd, int i) const
subentity compressed index (not available here)
Definition: sgrid.hh:262
const std::vector< GeometryType > & geomTypes(int codim) const
deliver all geometry types used in this grid
Definition: sgrid.hh:1077
persistent, globally unique Ids
Definition: sgrid.hh:1104
Specialize with 'true' if the grid is a Cartesian grid. Cartesian grids satisfy the following propert...
Definition: common/capabilities.hh:47
GridImp::PersistentIndexType PersistentIndexType
Definition: sgrid.hh:155
int level() const
Definition: sgrid.hh:977
int compressedLeafIndex() const
consecutive, codim-wise, level-wise index
Definition: sgrid.hh:244
GridImp::template Codim< 1 >::Geometry Geometry
Definition: sgrid.hh:607
Default Implementations for EntityImp.
Definition: common/entity.hh:739
SGridLevelIndexSet(const GridImp &g, int l)
constructor stores reference to a grid and level
Definition: sgrid.hh:1030
SEntitySeed()
default constructor (invalid)
Definition: sgrid.hh:962
Provides base classes for index and id sets.
int ghostSize(int level, int codim) const
return size (= distance in graph) of ghost region
Definition: sgrid.hh:1496
~SEntityPointer()
destructor pointer
Definition: sgrid.hh:882
int subCompressedIndex(int codim, int i) const
subentity compressed index
Definition: sgrid.hh:385
int overlapSize(int level, int codim) const
return size (= distance in graph) of overlap region
Definition: sgrid.hh:1484
const CollectiveCommunication< SGrid > & comm() const
Definition: sgrid.hh:1478
_ctype ctype
define type used for coordinates in grid module
Definition: sgrid.hh:1244
GridImp::ctype ctype
Definition: sgrid.hh:350
GeometryType type() const
return the element type identifier
Definition: sgrid.hh:179
void make(int _l, int _id)
Reinitialization.
Definition: sgrid.hh:493
const int sgrid_codim_bits
Definition: sgrid.hh:44
SEntity< codim, dim, GridImp > & realEntity() const
Definition: sgrid.hh:907
Definition: defaultgridview.hh:23
PersistentIndexType persistentIndex() const
globally unique, persistent index
Definition: sgrid.hh:232
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
Types for GridView.
Definition: common/grid.hh:420
Construct structured cube and simplex grids in unstructured grid managers.
Definition: structuredgridfactory.hh:30
InterfaceType
Parameter to be used for the communication functions.
Definition: gridenums.hh:84
SLevelIterator(GridImp *_grid, int _l, int _id)
constructor
Definition: sgrid.hh:1007
PersistentIndexType subPersistentIndex(int codim, int i) const
subentity persistent index
Definition: sgrid.hh:405
SEntityPointer(GridImp *_grid, int _l, int _index)
constructor
Definition: sgrid.hh:864
GridImp::ctype ctype
define type used for coordinates in grid module
Definition: sgrid.hh:668
int boundaryId() const
Definition: sgrid.hh:683
Dune::Intersection< const GridImp, Dune::SIntersectionIterator< const GridImp > > Intersection
Definition: sgrid.hh:662
Include standard header files.
Definition: agrid.hh:59
Traits::template Codim< cd >::template Partition< All_Partition >::LevelIterator lend(int level) const
one past the end on this level
Definition: sgrid.hh:1304
const int sgrid_level_bits
Definition: sgrid.hh:43
bool equals(const SEntityBase &other) const
Definition: sgrid.hh:163
GeometryType type() const
obtain the type of reference element for this intersection
Definition: sgrid.hh:711
GlobalCoordinate centerUnitOuterNormal() const
Return unit outer normal (length == 1)
Definition: sgrid.hh:796
int overlapSize(int codim) const
return size (= distance in graph) of overlap region
Definition: sgrid.hh:1490
GridImp::template Codim< 0 >::Entity Entity
Definition: sgrid.hh:539
int subCompressedLeafIndex(int cd, int i) const
subentity compressed leaf index (not available here)
Definition: sgrid.hh:269
int l
Definition: sgrid.hh:518
A set of traits classes to store static information about grid implementation.
GridImp::ctype ctype
Definition: sgrid.hh:153
Traits::template Codim< cd >::template Partition< All_Partition >::LeafIterator leafend() const
return LeafIterator which points behind the last entity
Definition: sgrid.hh:1326
GridImp::template Codim< 0 >::Entity Entity
Definition: sgrid.hh:605
int size(int codim) const
return size of set for a given codim
Definition: sgrid.hh:1071
Geometry::LocalCoordinate LocalCoordinate
Definition: sgrid.hh:659
GridImp::template Codim< cd >::EntityPointer EntityPointer
Definition: sgrid.hh:356
SGridFamily< dim, dimworld, _ctype >::Traits Traits
Definition: sgrid.hh:1238
int min(const DofVectorPointer< int > &dofVector)
Definition: dofvector.hh:346
Specialize with 'true' for all codims that a grid implements entities for. (default=false) ...
Definition: common/capabilities.hh:57
SEntity(GridImp *_grid, int _l, int _index)
constructor
Definition: sgrid.hh:475
SIntersection(GridImp *_grid, const SEntity< 0, dim, GridImp > *_self, int _count)
constructor
Definition: sgrid.hh:732
static EntityStackType & enStack()
Definition: sgrid.hh:922
Different resources needed by all grid implementations.
A traits struct that collects all associated types of one grid model.
Definition: common/grid.hh:1343
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
int index(const typename GridImp::Traits::template Codim< cd >::Entity &e) const
get index of an entity
Definition: sgrid.hh:1042
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
void communicate(DataHandle &data, InterfaceType iftype, CommunicationDirection dir, int level) const
Definition: sgrid.hh:1471
PartitionType partitionType() const
Definition: sgrid.hh:194
const Traits::LevelIndexSet & levelIndexSet(int level) const
Definition: sgrid.hh:1455
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
int ghostSize(int level, int codim)
return size (= distance in graph) of ghost region
Definition: sgrid.hh:1412
GridImp::template Codim< 1 >::LocalGeometry LocalGeometry
Definition: sgrid.hh:608
GridImp::template Codim< cd >::Entity Entity
Definition: sgrid.hh:357
SEntity(GridImp *_grid, int _l, int _id)
constructor
Definition: sgrid.hh:299
int boundarySegmentIndex() const
Definition: sgrid.hh:688
A Traits struct that collects all associated types of one implementation.
Definition: common/grid.hh:437
Definition: sgrid.hh:1147
GlobalCoordinate outerNormal(const LocalCoordinate &local) const
Return an outer normal (length not necessarily 1)
Definition: sgrid.hh:776
a stack of pointers with auto destruction if the stack is destructed
Definition: sgrid.hh:829
SEntityBase(GridImp *_grid, int _l, int _index)
constructor
Definition: sgrid.hh:197