11 #include <dune/common/classname.hh>
12 #include <dune/common/parallel/collectivecommunication.hh>
13 #include <dune/common/exceptions.hh>
14 #include <dune/common/parallel/mpihelper.hh>
15 #include <dune/common/deprecated.hh>
21 #if HAVE_UG || DOXYGEN
24 #include <dune/common/parallel/mpicollectivecommunication.hh>
46 #include "uggrid/ugincludes.hh"
51 #include "uggrid/ugwrapper.hh"
56 #include "uggrid/ug_undefs.hh"
76 #include "uggrid/ugincludes.hh"
81 #include "uggrid/ugwrapper.hh"
85 #include "uggrid/ug_undefs.hh"
91 #include "uggrid/uggridgeometry.hh"
92 #include "uggrid/uggridlocalgeometry.hh"
93 #include "uggrid/uggridentity.hh"
94 #include "uggrid/uggridentitypointer.hh"
95 #include "uggrid/uggridentityseed.hh"
96 #include "uggrid/uggridintersections.hh"
97 #include "uggrid/uggridintersectioniterators.hh"
98 #include "uggrid/uggridleveliterator.hh"
99 #include "uggrid/uggridleafiterator.hh"
100 #include "uggrid/uggridhieriterator.hh"
101 #include "uggrid/uggridindexsets.hh"
102 #include <dune/grid/uggrid/uggridviews.hh>
104 #include "uggrid/ugmessagebuffer.hh"
105 #include "uggrid/uglbgatherscatter.hh"
112 template <
class DataHandle,
int Gr
idDim,
int codim>
113 DataHandle *Dune::UGMessageBufferBase<DataHandle,GridDim,codim>::duneDataHandle_ = 0;
115 template <
class DataHandle,
int Gr
idDim,
int codim>
116 int Dune::UGMessageBufferBase<DataHandle,GridDim,codim>::level = -1;
123 class CollectiveCommunication<Dune::UGGrid<dim> > :
124 public CollectiveCommunication< Dune::MPIHelper::MPICommunicator >
126 typedef CollectiveCommunication< Dune::MPIHelper::MPICommunicator > ParentType;
128 CollectiveCommunication()
129 : ParentType(MPIHelper::getCommunicator())
142 UGGridLeafIntersection,
143 UGGridLevelIntersection,
144 UGGridLeafIntersectionIterator,
145 UGGridLevelIntersectionIterator,
146 UGGridHierarchicIterator,
148 UGGridLevelIndexSet< const UGGrid<dim> >,
149 UGGridLeafIndexSet< const UGGrid<dim> >,
150 UGGridIdSet< const UGGrid<dim> >,
151 typename UG_NS<dim>::UG_ID_TYPE,
152 UGGridIdSet< const UGGrid<dim> >,
153 typename UG_NS<dim>::UG_ID_TYPE,
154 CollectiveCommunication<Dune::UGGrid<dim> >,
155 UGGridLevelGridViewTraits,
156 UGGridLeafGridViewTraits,
211 friend class UGGridGeometry<0,dim,const
UGGrid<dim> >;
212 friend class UGGridGeometry<dim,dim,const
UGGrid<dim> >;
213 friend class UGGridGeometry<1,2,const
UGGrid<dim> >;
214 friend class UGGridGeometry<2,3,const
UGGrid<dim> >;
216 friend class UGGridEntity <0,dim,const
UGGrid<dim> >;
217 friend class UGGridEntity <dim,dim,const
UGGrid<dim> >;
218 friend class UGGridHierarchicIterator<const
UGGrid<dim> >;
219 friend class UGGridLeafIntersection<const
UGGrid<dim> >;
220 friend class UGGridLevelIntersection<const
UGGrid<dim> >;
221 friend class UGGridLeafIntersectionIterator<const
UGGrid<dim> >;
222 friend class UGGridLevelIntersectionIterator<const
UGGrid<dim> >;
224 friend class UGGridLevelIndexSet<const
UGGrid<dim> >;
225 friend class UGGridLeafIndexSet<const
UGGrid<dim> >;
226 friend class UGGridIdSet<const
UGGrid<dim> >;
227 template <
class Gr
idImp_, PartitionIteratorType PiType_>
229 template <
class Gr
idImp_, PartitionIteratorType PiType_>
235 friend class UGLBGatherScatter;
238 template <
int codim_, PartitionIteratorType PiType_,
class Gr
idImp_>
240 template <
int codim_, PartitionIteratorType PiType_,
class Gr
idImp_>
242 template <
int codim_,
class Gr
idImp_>
246 static_assert(dim==2 || dim==3,
"Use UGGrid only for 2d and 3d!");
264 typedef UG::DOUBLE
ctype;
275 #if HAVE_NOEXCEPT_SPECIFIER
293 template<
int codim, PartitionIteratorType PiType>
297 template<
int codim, PartitionIteratorType PiType>
308 typename Traits::template Codim<codim>::LeafIterator
leafend()
const {
309 return UGGridLeafIterator<codim,All_Partition, const UGGrid<dim> >();
313 template<
int codim, PartitionIteratorType PiType>
314 typename Traits::template Codim<codim>::template Partition<PiType>::LeafIterator
leafbegin()
const {
315 return typename Traits::template Codim<codim>::template Partition<PiType>::LeafIterator(*
this);
319 template<
int codim, PartitionIteratorType PiType>
320 typename Traits::template Codim<codim>::template Partition<PiType>::LeafIterator
leafend()
const {
321 return UGGridLeafIterator<codim,PiType, const UGGrid<dim> >();
325 template <
typename Seed>
326 DUNE_DEPRECATED_MSG(
"entityPointer() is deprecated and will be removed after the release of dune-grid 2.4. Use entity() instead to directly obtain an Entity object.")
327 typename Traits::template Codim<Seed::codimension>::EntityPointer
330 enum {codim = Seed::codimension};
335 template <
typename Seed>
336 typename Traits::template Codim<Seed::codimension>::Entity
337 entity(
const Seed& seed)
const
339 const int codim = Seed::codimension;
345 int size (
int level,
int codim)
const;
348 int size (
int codim)
const
369 return numBoundarySegments_;
388 DUNE_THROW(GridError,
"levelIndexSet of nonexisting level " << level <<
" requested!");
389 return *levelIndexSets_[level];
395 return leafIndexSet_;
413 bool mark(
int refCount,
const typename Traits::template Codim<0>::Entity & e );
471 bool mark(
const typename Traits::template Codim<0>::Entity & e,
472 typename UG_NS<dim>::RefinementRule rule,
476 int getMark(
const typename Traits::template Codim<0>::Entity& e)
const;
495 unsigned int ghostSize(
int codim)
const {
496 return (codim==0) ? 1 : 0;
500 unsigned int overlapSize(
int level,
int codim)
const {
505 unsigned int ghostSize(
int level,
int codim)
const {
506 return (codim==0) ? 1 : 0;
516 template<
class DataHandle>
524 UGLBGatherScatter::template gather<dim>(this->
leafGridView(), dataHandle);
536 UGLBGatherScatter::template scatter<dim>(this->
leafGridView(), dataHandle);
580 bool loadBalance(
const std::vector<unsigned int>& targetProcessors,
unsigned int fromLevel);
591 template<
class DataHandle>
592 bool loadBalance (
const std::vector<unsigned int>& targetProcessors,
unsigned int fromLevel, DataHandle& dataHandle)
599 UGLBGatherScatter::template gather<dim>(this->
leafGridView(), dataHandle);
611 UGLBGatherScatter::template scatter<dim>(this->
leafGridView(), dataHandle);
628 template<
class DataHandle>
634 for (
int curCodim = 0; curCodim <= dim; ++curCodim) {
635 if (!dataHandle.contains(dim, curCodim))
639 communicateUG_<LevelGridView, DataHandle, 0>(this->
levelGridView(level), level, dataHandle, iftype, dir);
640 else if (curCodim == dim)
641 communicateUG_<LevelGridView, DataHandle, dim>(this->
levelGridView(level), level, dataHandle, iftype, dir);
642 else if (curCodim == dim - 1)
644 else if (curCodim == 1)
645 communicateUG_<LevelGridView, DataHandle, 1>(this->
levelGridView(level), level, dataHandle, iftype, dir);
647 DUNE_THROW(NotImplemented,
648 className(*
this) <<
"::communicate(): Not "
649 "supported for dim " << dim <<
" and codim " << curCodim);
663 template<
class DataHandle>
669 for (
int curCodim = 0; curCodim <= dim; ++curCodim) {
670 if (!dataHandle.contains(dim, curCodim))
674 communicateUG_<LeafGridView, DataHandle, 0>(this->
leafGridView(), level, dataHandle, iftype, dir);
675 else if (curCodim == dim)
676 communicateUG_<LeafGridView, DataHandle, dim>(this->
leafGridView(), level, dataHandle, iftype, dir);
677 else if (curCodim == dim - 1)
679 else if (curCodim == 1)
680 communicateUG_<LeafGridView, DataHandle, 1>(this->
leafGridView(), level, dataHandle, iftype, dir);
682 DUNE_THROW(NotImplemented,
683 className(*
this) <<
"::communicate(): Not "
684 "supported for dim " << dim <<
" and codim " << curCodim);
690 const CollectiveCommunication<UGGrid>&
comm ()
const
697 template <
class Gr
idView,
class DataHandle,
int codim>
698 void communicateUG_(
const GridView& gv,
int level,
699 DataHandle &dataHandle,
703 typename UG_NS<dim>::DDD_IF_DIR ugIfDir;
706 ugIfDir = UG_NS<dim>::IF_FORWARD();
708 ugIfDir = UG_NS<dim>::IF_BACKWARD();
710 typedef UGMessageBuffer<DataHandle,dim,codim> UGMsgBuf;
711 UGMsgBuf::duneDataHandle_ = &dataHandle;
713 UGMsgBuf::level = level;
715 std::vector<typename UG_NS<dim>::DDD_IF> ugIfs;
716 findDDDInterfaces_(ugIfs, iftype, codim);
718 unsigned bufSize = UGMsgBuf::ugBufferSize_(gv);
721 for (
unsigned i=0; i < ugIfs.size(); ++i)
722 UG_NS<dim>::DDD_IFOneway(ugIfs[i],
725 &UGMsgBuf::ugGather_,
726 &UGMsgBuf::ugScatter_);
729 void findDDDInterfaces_(std::vector<
typename UG_NS<dim>::DDD_IF > &dddIfaces,
745 dddIfaces.push_back(UG_NS<dim>::ElementVHIF());
752 dddIfaces.push_back(UG_NS<dim>::ElementSymmVHIF());
755 DUNE_THROW(GridError,
756 "Element communication not supported for "
757 "interfaces of type "
761 else if (codim == dim)
766 dddIfaces.push_back(UG_NS<dim>::BorderNodeSymmIF());
769 dddIfaces.push_back(UG_NS<dim>::BorderNodeSymmIF());
770 dddIfaces.push_back(UG_NS<dim>::NodeIF());
773 dddIfaces.push_back(UG_NS<dim>::NodeAllIF());
776 DUNE_THROW(GridError,
777 "Node communication not supported for "
778 "interfaces of type "
782 else if (codim == dim-1)
787 dddIfaces.push_back(UG_NS<dim>::BorderEdgeSymmIF());
790 dddIfaces.push_back(UG_NS<dim>::BorderEdgeSymmIF());
795 dddIfaces.push_back(UG_NS<dim>::EdgeSymmVHIF());
798 DUNE_THROW(GridError,
799 "Edge communication not supported for "
800 "interfaces of type "
810 dddIfaces.push_back(UG_NS<dim>::BorderVectorSymmIF());
813 DUNE_THROW(GridError,
814 "Face communication not supported for "
815 "interfaces of type "
821 DUNE_THROW(GridError,
822 "Communication for codim "
824 <<
" entities is not yet supported "
825 <<
" by the DUNE UGGrid interface!");
848 void getChildrenOfSubface(
const typename Traits::template Codim<0>::EntityPointer & e,
851 std::vector<
typename Traits::template Codim<0>::EntityPointer>& childElements,
852 std::vector<unsigned char>& childElementSides)
const;
858 template<
typename T >
859 DUNE_DEPRECATED_MSG(
"This version of getChildrenOfSubface() uses EntityPointer and is deprecated. It will be removed after the release of Dune 2.4. Please use the new version with entities instead.")
860 typename
std::enable_if<
863 typename UGGrid<dim>::Traits::template Codim<0>::EntityPointer
866 getChildrenOfSubface(const T & e,
869 std::vector<typename Traits::template Codim<0>::EntityPointer>& childElements,
870 std::vector<
unsigned char>& childElementSides)
const
875 SLList<ListEntryType> list;
881 elementSide = UGGridRenumberer<dim>::facesDUNEtoUG(elementSide, e->type());
887 && e->level() < maxl) {
891 int Sons_of_Side = 0;
893 int SonSides[UG_NS<dim>::MAX_SONS];
895 int rv = Get_Sons_of_ElementSide(theElement,
903 DUNE_THROW(GridError,
"Get_Sons_of_ElementSide returned with error value " << rv);
905 for (
int i=0; i<Sons_of_Side; i++)
906 list.push_back(ListEntryType(SonList[i],SonSides[i]));
914 typename SLList<ListEntryType>::iterator f = list.begin();
915 for (; f!=list.end(); ++f) {
918 int side = f->second;
920 int Sons_of_Side = 0;
922 int SonSides[UG_NS<dim>::MAX_SONS];
924 if (UG_NS<dim>::myLevel(theElement) < maxl) {
926 Get_Sons_of_ElementSide(theElement,
934 for (
int i=0; i<Sons_of_Side; i++)
935 list.push_back(ListEntryType(SonList[i],SonSides[i]));
946 childElements.clear();
947 childElements.reserve( list.size() );
948 childElementSides.resize(list.size());
951 for (f = list.begin(); f!=list.end(); ++f, ++i)
955 typedef typename Traits::template Codim< 0 >::EntityPointer EntityPointer;
956 childElements.push_back( EntityPointer(
UGGridEntityPointer< 0,
const UGGrid< dim > >( f->first,
this ) ) );
958 int side = f->second;
962 childElementSides[i] = UGGridRenumberer<dim>::facesUGtoDUNE(side, childElements[i]->type());
976 void getChildrenOfSubface(
const typename Traits::template Codim<0>::Entity & e,
979 std::vector<
typename Traits::template Codim<0>::Entity>& childElements,
980 std::vector<unsigned char>& childElementSides)
const;
983 enum RefinementType {
999 void setRefinementType(RefinementType type) {
1000 refinementType_ = type;
1004 void setClosureType(ClosureType type) {
1005 closureType_ = type;
1014 static void setDefaultHeapSize(
unsigned size) {
1028 void setPosition(
const typename Traits::template Codim<dim>::EntityPointer& e,
1029 const FieldVector<double, dim>& pos);
1035 template<
typename T >
1036 DUNE_DEPRECATED_MSG(
"This version of setPosition() uses EntityPointer and is deprecated. It will be removed after the release of Dune 2.4. Please use the new version with entities instead.")
1037 typename
std::enable_if<
1040 typename UGGrid<dim>::Traits::template Codim<dim>::EntityPointer
1043 setPosition(const T& e,
1044 const FieldVector<
double, dim>& pos)
1048 for (
int i=0; i<dim; i++)
1049 target->myvertex->iv.x[i] = pos[i];
1057 void setPosition(
const typename Traits::template Codim<dim>::Entity& e,
1058 const FieldVector<double, dim>& pos);
1070 void saveState(
const std::string& filename)
const;
1076 void loadState(
const std::string& filename);
1080 typename UG_NS<dim>::MultiGrid* multigrid_;
1083 CollectiveCommunication<UGGrid> ccobj_;
1090 void setIndices(
bool setLevelZero,
1091 std::vector<unsigned int>* nodePermutation);
1098 std::vector<shared_ptr<UGGridLevelIndexSet<const UGGrid<dim> > > > levelIndexSets_;
1100 UGGridLeafIndexSet<const UGGrid<dim> > leafIndexSet_;
1104 UGGridIdSet<const UGGrid<dim> > idSet_;
1107 RefinementType refinementType_;
1110 ClosureType closureType_;
1119 static int numOfUGGrids;
1126 bool someElementHasBeenMarkedForRefinement_;
1133 bool someElementHasBeenMarkedForCoarsening_;
1139 static unsigned int heapSize_;
1142 std::vector<shared_ptr<BoundarySegment<dim> > > boundarySegments_;
1149 unsigned int numBoundarySegments_;
1153 namespace Capabilities
1173 static const bool v =
true;
1182 static const bool v =
true;
1189 struct DUNE_DEPRECATED_MSG("Capabilities::
isParallel will be removed after dune-grid-2.4.")
isParallel< UGGrid<dim> >
1192 static const bool DUNE_DEPRECATED_MSG(
"Capabilities::isParallel will be removed after dune-grid-2.4.") v =
true;
1194 static const bool DUNE_DEPRECATED_MSG(
"Capabilities::isParallel will be removed after dune-grid-2.4.") v = false;
1204 static const bool v =
true;
1213 static const bool v =
false;
1220 #endif // HAVE_UG || DOXYGEN
1221 #endif // DUNE_UGGRID_HH
Traits::template Partition< pitype >::LeafGridView leafGridView() const
View for the leaf grid.
Definition: common/grid.hh:1115
CommunicationDirection
Define a type for communication direction parameter.
Definition: gridenums.hh:168
friend class UGGridLevelGridView
Definition: uggrid.hh:230
const LevelIndexSet & levelIndexSet(int level) const
return const reference to the grids level index set for level level
Definition: common/grid.hh:755
Provide a generic factory class for unstructured grids.
Definition: common/gridfactory.hh:263
Traits::template Codim< codim >::LevelIterator lend(int level) const
one past the end on this level for PartitionType All_Partition
Definition: common/grid.hh:1050
int ghostSize(int level, int codim) const
ghostSize is zero by default
Definition: common/grid.hh:1196
Types for GridView.
Definition: common/grid.hh:420
Codim< EntitySeed::codimension >::Entity entity(const EntitySeed &seed) const
obtain Entity from EntitySeed.
Definition: common/grid.hh:971
send/receive interior and border entities
Definition: gridenums.hh:85
const LeafIndexSet & leafIndexSet() const
return const reference to the grids leaf index set
Definition: common/grid.hh:762
Specialize with 'true' if implementation supports parallelism. (default=false)
Definition: common/capabilities.hh:68
Specialize with 'true' if implementation guarantees conforming level grids. (default=false) ...
Definition: common/capabilities.hh:98
The specialization of the generic GridFactory for UGGrid.
int maxLevel() const
Return maximum level defined in this grid. Levels are numbered 0 ... maxLevel with 0 the coarsest lev...
Definition: common/grid.hh:561
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
int overlapSize(int level, int codim) const
overlapSize is zero by default
Definition: common/grid.hh:1199
const GlobalIdSet & globalIdSet() const
return const reference to the grids global id set
Definition: common/grid.hh:741
Specialize with 'true' if implementation guarantees a conforming leaf grid. (default=false) ...
Definition: common/capabilities.hh:107
UGGridFamily< dim >::Traits Traits
The traits of this class.
Definition: common/grid.hh:1039
size_t numBoundarySegments() const
returns the number of boundary segments within the macro grid
Definition: common/grid.hh:601
Partition< All_Partition >::LevelGridView LevelGridView
View types for All_Partition.
Definition: common/grid.hh:428
communicate as given in InterfaceType
Definition: gridenums.hh:169
friend class UGGridLeafIterator
Definition: uggrid.hh:239
send interior and border, receive all entities
Definition: gridenums.hh:86
friend class UGGridEntityPointer
Definition: uggrid.hh:243
IdSet< const GridImp, GlobalIdSetImp, GIDType > GlobalIdSet
The type of the global id set.
Definition: common/grid.hh:1430
send all and receive all entities
Definition: gridenums.hh:89
Specialize with 'true' for all codims that a grid implements entities for. (default=false) ...
Definition: common/capabilities.hh:57
Different resources needed by all grid implementations.
Traits::template Codim< codim >::LeafIterator leafend() const
one past the end on the leaf grid for PartitionType All_Partition
Definition: common/grid.hh:1080
bool adapt()
Refine all positive marked leaf entities coarsen all negative marked entities if possible.
Definition: common/grid.hh:1187
IndexSet< const GridImp, LevelIndexSetImp > LevelIndexSet
The type of the level index set.
Definition: common/grid.hh:1426
void postAdapt()
clean up some markers
Definition: common/grid.hh:1193
void communicate(CommDataHandleIF< DataHandleImp, DataTypeImp > &data, InterfaceType iftype, CommunicationDirection dir, int level) const
Definition: common/grid.hh:1209
Codim< EntitySeed::codimension >::EntityPointer entityPointer(const EntitySeed &seed) const
obtain EntityPointer from EntitySeed.
Definition: common/grid.hh:962
static const bool v
Definition: common/capabilities.hh:59
InterfaceType
Parameter to be used for the communication functions.
Definition: gridenums.hh:84
void globalRefine(int refCount)
Refine the grid refCount times using the default refinement rule.
Definition: common/grid.hh:781
A traits struct that collects all associated types of one grid model.
Definition: common/grid.hh:1343
IndexSet< const GridImp, LeafIndexSetImp > LeafIndexSet
The type of the leaf index set.
Definition: common/grid.hh:1428
IdSet< const GridImp, LocalIdSetImp, LIDType > LocalIdSet
The type of the local id set.
Definition: common/grid.hh:1432
friend class UGGridLevelIterator
Definition: uggrid.hh:241
Definition: common/geometry.hh:24
GridFamily::Traits::template Codim< cd >::Entity Entity
A type that is a model of a Dune::Entity.
Definition: common/grid.hh:446
const LocalIdSet & localIdSet() const
return const reference to the grids local id set
Definition: common/grid.hh:748
bool preAdapt()
returns true, if at least one entity is marked for adaption
Definition: common/grid.hh:1190
Definition: uggrid.hh:135
friend class UGGridLeafGridView
Definition: uggrid.hh:228
bool loadBalance()
default implementation of load balance does nothing and returns false
Definition: common/grid.hh:1220
const CollectiveCommunication & comm() const
return const reference to a collective communication object. The return type is a model of Dune::Coll...
Definition: common/grid.hh:921
GridTraits< dim, dim, Dune::UGGrid< dim >, UGGridGeometry, UGGridEntity, UGGridEntityPointer, UGGridLevelIterator, UGGridLeafIntersection, UGGridLevelIntersection, UGGridLeafIntersectionIterator, UGGridLevelIntersectionIterator, UGGridHierarchicIterator, UGGridLeafIterator, UGGridLevelIndexSet< const UGGrid< dim > >, UGGridLeafIndexSet< const UGGrid< dim > >, UGGridIdSet< const UGGrid< dim > >, typename UG_NS< dim >::UG_ID_TYPE, UGGridIdSet< const UGGrid< dim > >, typename UG_NS< dim >::UG_ID_TYPE, CollectiveCommunication< Dune::UGGrid< dim > >, UGGridLevelGridViewTraits, UGGridLeafGridViewTraits, UGGridEntitySeed, UGGridLocalGeometry > Traits
Definition: uggrid.hh:159
Traits::template Partition< pitype >::LevelGridView levelGridView(int level) const
View for a grid level.
Definition: common/grid.hh:1105
Traits::template Codim< codim >::LeafIterator leafbegin() const
Iterator to first entity of given codim on leaf grid for PartitionType All_Partition.
Definition: common/grid.hh:1073
GridFamily::Traits::template Codim< cd >::EntityPointer EntityPointer
A type that is a model of Dune::EntityPointer.
Definition: common/grid.hh:449
ct ctype
Define type used for coordinates in grid module.
Definition: common/grid.hh:548
int getMark(const typename Traits::template Codim< 0 >::Entity &e) const
returns adaptation mark for given entity, i.e. here the default implementation returns 0...
Definition: common/grid.hh:1175
Include standard header files.
Definition: agrid.hh:59
bool mark(int refCount, const typename Traits::template Codim< 0 >::Entity &e)
Marks an entity to be refined/coarsened in a subsequent adapt.
Definition: common/grid.hh:1163
Base class for grid boundary segments of arbitrary geometry.
A Traits struct that collects all associated types of one implementation.
Definition: common/grid.hh:437
ALBERTA EL Element
Definition: misc.hh:51
int size(int level, int codim) const
Return number of grid entities of a given codim on a given level in this process. ...
Definition: common/grid.hh:568
Front-end for the grid manager of the finite element toolbox UG.
Definition: uggrid.hh:207
Traits::template Codim< codim >::LevelIterator lbegin(int level) const
Iterator to first entity of given codim on level for PartitionType All_Partition. ...
Definition: common/grid.hh:1043
A set of traits classes to store static information about grid implementation.
GeometryType
Type representing VTK's entity geometry types.
Definition: common.hh:178
Partition< All_Partition >::LeafGridView LeafGridView
Definition: common/grid.hh:429