Dune Core Modules (2.3.1)

[ provides Dune::Grid ] More...

#include <dune/grid/alugrid/2d/grid.hh>

Public Types

enum  { MAXL = 64 }
 maximal number of levels More...
 
enum  { newElementsChunk_ = 100 }
 element chunk for refinement More...
 
enum  { refineEstimate_ = 40 }
 upper estimate on number of elements that could be created when a new element is created More...
 
typedef ALU2dGridObjectStream ObjectStreamType
 dummy object stream
 
typedef ALU2dGridFamily< dim, dimworld, eltype > GridFamily
 my Traits class
 
typedef ALU2dGridHierarchicIndexSet< dim, dimworld, elementType > HierarchicIndexSet
 Type of the hierarchic index set.
 
typedef ALU2dGridLocalIdSet< dim, dimworld, elementType > LocalIdSetImp
 Type of the local id set.
 
typedef Traits ::GlobalIdSet GlobalIdSet
 Type of the global id set.
 
typedef Traits ::LocalIdSet LocalIdSet
 Type of the local id set.
 
typedef GridFamily ::LevelIndexSetImp LevelIndexSetImp
 Type of the level index set.
 
typedef GridFamily ::LeafIndexSetImp LeafIndexSetImp
 Type of the leaf index set.
 
typedef ALU2dGridLeafIterator< 0, All_Partition, const ThisTypeLeafIteratorImp
 a standard leaf iterator
 
typedef ALU2dGridLevelIterator< 0, All_Partition, const ThisTypeLevelIteratorImp
 a standard leaf iterator
 
typedef Traits ::DuneBoundaryProjectionType DuneBoundaryProjectionType
 boundary projection type
 
typedef Traits ::DuneBoundaryProjectionVector DuneBoundaryProjectionVector
 boundary projection type
 
Exported constants
enum  
 A constant that exports the template parameter dim.
 
enum  
 A constant that exports the template parameter dimworld.
 
Exported types
typedef Partition< All_Partition >::LevelGridView LevelGridView
 View types for All_Partition.
 
typedef Partition< All_Partition >::LeafGridView LeafGridView
 
typedef GridFamily::Traits::LeafIntersection LeafIntersection
 A type that is a model of Dune::Intersection, an intersections of two codimension 1 of two codimension 0 entities in the leaf view.
 
typedef GridFamily::Traits::LevelIntersection LevelIntersection
 A type that is a model of Dune::Intersection, an intersections of two codimension 1 of two codimension 0 entities in a level view.
 
typedef GridFamily::Traits::LeafIntersectionIterator LeafIntersectionIterator
 A type that is a model of Dune::IntersectionIterator which is an iterator that allows to examine, but not to modify, the intersections of codimension 1 of an leaf element (entity of codimension 0) with other leaf elements.
 
typedef GridFamily::Traits::LevelIntersectionIterator LevelIntersectionIterator
 A type that is a model of Dune::IntersectionIterator which is an iterator that allows to examine, but not to modify, the intersections of codimension 1 of an element (entity of codimension 0) with other elements on the same level.
 
typedef GridFamily::Traits::HierarchicIterator HierarchicIterator
 A type that is a model of Dune::HierarchicIterator A type of iterator that allows to examine, but not to modify, entities of codimension 0 that result from refinement of an entity of codimension 0.
 
typedef GridFamily::Traits::LevelIndexSet LevelIndexSet
 A type that is a model of Dune::IndexSet which provides a consecutive, but non persistent, numbering for entities on a grid level.
 
typedef GridFamily::Traits::LeafIndexSet LeafIndexSet
 A type that is a model of Dune::IndexSet which provides a consecutive, but non persistent, numbering for entities in the leaf grid.
 
typedef GridFamily::Traits::CollectiveCommunication CollectiveCommunication
 A type that is a model of Dune::CollectiveCommunication. It provides a portable way for collective communication on the set of processes used by the grid.
 
typedef alu2d_ctype ctype
 Define type used for coordinates in grid module.
 

Public Member Functions

 ~ALU2dGrid ()
 Desctructor.
 
int maxLevel () const
 
template<int cd, PartitionIteratorType pitype>
Traits::template Codim< cd >::template Partition< pitype >::LevelIterator lbegin (int level) const
 
template<int cd, PartitionIteratorType pitype>
Traits::template Codim< cd >::template Partition< pitype >::LevelIterator lend (int level) const
 one past the end on this level
 
template<int cd>
Traits::template Codim< cd >::template Partition< All_Partition >::LevelIterator lbegin (int level) const
 Iterator to first entity of given codim on level.
 
template<int cd>
Traits::template Codim< cd >::template Partition< All_Partition >::LevelIterator lend (int level) const
 one past the end on this level
 
LevelIteratorType lbegin (int level) const
 Iterator to first entity of codim 0 on level.
 
LevelIteratorType lend (int level) const
 last entity of codim 0 on level
 
template<int codim, PartitionIteratorType pitype>
Traits::template Codim< codim >::template Partition< pitype >::LeafIterator leafbegin () const
 General definiton for a leaf iterator.
 
template<int codim, PartitionIteratorType pitype>
Traits::template Codim< codim >::template Partition< pitype >::LeafIterator leafend () const
 General definition for an end iterator on leaf level.
 
template<int codim>
Traits::template Codim< codim >::LeafIterator leafbegin () const
 General definiton for a leaf iterator.
 
template<int codim>
Traits::template Codim< codim >::LeafIterator leafend () const
 General definition for an end iterator on leaf level.
 
int size (int level, int cd) const
 number of grid entities per level and codim
 
int size (int codim) const
 number of leaf entities per codim in this process
 
int size (int level, GeometryType type) const
 number of entities per level, codim and geometry type in this process
 
int size (GeometryType type) const
 number of leaf entities per codim and geometry type in this process
 
const std::vector< GeometryType > & geomTypes (int codim) const
 deliver all geometry types used in this grid
 
const GlobalIdSetglobalIdSet () const
 get global id set of grid
 
const LocalIdSetlocalIdSet () const
 get global id set of grid
 
int hierSetSize (int cd) const
 number of grid entities in the entire grid for given codim
 
const HierarchicIndexSethierarchicIndexSet () const
 get hierarchic index set of the grid
 
const Traits ::LeafIndexSetleafIndexSet () const
 get leaf index set of the grid
 
const Traits ::LevelIndexSetlevelIndexSet (int level) const
 get level index set of the grid
 
void globalRefine (int refCount)
 refine grid refCount times
 
bool preAdapt ()
 returns if a least one entity was marked for coarsening
 
void postAdapt ()
 clear all entity new markers
 
bool adapt ()
 
int getMark (const typename Traits::template Codim< 0 >::Entity &e) const
 returns adaptation mark for given entity More...
 
bool mark (int refCount, const typename Traits::template Codim< 0 >::Entity &e)
 Marks an entity to be refined/coarsened in a subsequent adapt. More...
 
const CollectiveCommunicationType & comm () const
 return dummy communication
 
size_t numBoundarySegments () const
 return number of macro boundary segments
 
bool hasBoundaryProjection () const
 return true if boudanry projection is set
 
ALU2dGridMarkerVector & getMarkerVector (int level) const
 
ALU2dGridLeafMarkerVectorType & getLeafMarker () const
 
template<GrapeIOFileFormatType ftype>
bool writeGrid (const std::string filename, alu2d_ctype time) const
 write Grid to file in specified FileFormatType
 
template<GrapeIOFileFormatType ftype>
bool readGrid (const std::string filename, alu2d_ctype &time)
 read Grid from file filename and store time of mesh in time
 
void backup (std::ostream &) const
 backup to ostream
 
void restore (std::istream &)
 restore from istream
 
bool conformingRefinement () const
 return true if grid uses conforming refinement
 
template<class DataHandleImp , class DataTypeImp >
void communicate (CommDataHandleIF< DataHandleImp, DataTypeImp > &data, InterfaceType iftype, CommunicationDirection dir, int level) const
 Communicate information on distributed entities on a given level Template parameter is a model of Dune::CommDataHandleIF. More...
 
template<class DataHandleImp , class DataTypeImp >
void communicate (CommDataHandleIF< DataHandleImp, DataTypeImp > &data, InterfaceType iftype, CommunicationDirection dir) const
 Communicate information on distributed entities on the leaf grid. Template parameter is a model of Dune::CommDataHandleIF.
 
bool loadBalance ()
 Re-balances the load each process has to handle for a parallel grid,. More...
 
template<class DataHandle >
bool loadBalance (DataHandle &data)
 Re-balances the load each process has to handle for a parallel grid,. More...
 
Traits::template Partition< pitype >::LevelGridView DUNE_DEPRECATED_MSG ("The method levelView has been renamed to levelGridView.") levelView(int level) const
 View for a grid level.
 
Traits::template Partition< pitype >::LeafGridView DUNE_DEPRECATED_MSG ("The method levelView has been renamed to leafGridView.") leafView() const
 View for the leaf grid.
 
Traits::template Partition< All_Partition >::LevelGridView levelView (int level) const DUNE_DEPRECATED_MSG("The method levelView has been renamed to levelGridView.")
 View for a grid level for All_Partition.
 
Traits::template Partition< All_Partition >::LeafGridView leafView () const DUNE_DEPRECATED_MSG("The method leafView has been renamed to leafGridView.")
 View for the leaf grid for All_Partition.
 
Traits::template Partition< pitype >::LevelGridView levelGridView (int level) const
 View for a grid level.
 
Traits::template Partition< All_Partition >::LevelGridView levelGridView (int level) const
 View for a grid level for All_Partition.
 
Traits::template Partition< pitype >::LeafGridView leafGridView () const
 View for the leaf grid.
 
Traits::template Partition< All_Partition >::LeafGridView leafGridView () const
 View for the leaf grid for All_Partition.
 
bool mark (int refCount, const typename Traits ::template Codim< 0 >::Entity &e)
 Marks an entity to be refined/coarsened in a subsequent adapt. More...
 
int overlapSize (int level, int codim) const
 overlapSize is zero by default
 
int overlapSize (int codim) const
 overlapSize is zero by default
 
Adaptivity and grid refinement
bool mark (int refCount, const typename Codim< 0 >::Entity &e)
 Marks an entity to be refined/coarsened in a subsequent adapt. More...
 
int getMark (const typename Codim< 0 >::Entity &e) const
 returns adaptation mark for given entity More...
 

Protected Types

typedef SizeCache< ThisTypeSizeCacheType
 the type of our size cache
 

Protected Member Functions

 ALU2dGrid (const std::string macroTriangFilename, const int nrOfHangingNodes, const DuneBoundaryProjectionType *, const DuneBoundaryProjectionVector *, std::istream *macroFile=0)
 
 ALU2dGrid (int)
 Constructor which constructs an empty ALU2dGrid.
 
const DuneBoundaryProjectionTypeboundaryProjection (const int segmentIndex) const
 return boudanry projection for given segment Id
 
bool nonConform () const
 
Parallel data distribution and communication
GridImp & asImp ()
 Barton-Nackman trick.
 
const GridImp & asImp () const
 Barton-Nackman trick.
 

Static Protected Member Functions

static ReturnImplementationType< InterfaceType >::ImplementationType & getRealImplementation (InterfaceType &i)
 return real implementation of interface class
 

Protected Attributes

HmeshType * mygrid_
 the real grid
 
HierarchicIndexSet hIndexSet_
 the hierarchic index set
 
LocalIdSetImp localIdSet_
 out global id set
 
std::vector< LevelIndexSetImp * > levelIndexVec_
 the level index set ( default type )
 
LeafIndexSetImpleafIndexSet_
 the leaf index set
 

Detailed Description

template<int dim, int dimworld, ALU2DSPACE ElementType eltype>
class Dune::ALU2dGrid< dim, dimworld, eltype >

[ provides Dune::Grid ]

2D grid, will provide non conform grids The ALU2dGrid implements the Dune GridInterface for 2d meshes. This grid can be locally adapted and will provide non conform grids.

Note
Adaptive grid, written mainly by Bernard Schupp. This grid supports non conform grids.

(see ALUGrid homepage: http://www.mathematik.uni-freiburg.de/IAM/Research/alugrid/)

Member Enumeration Documentation

◆ anonymous enum

template<int dim, int dimworld, ALU2DSPACE ElementType eltype>
anonymous enum

maximal number of levels

Enumerator
MAXL 

maximal number of levels is 64

◆ anonymous enum

template<int dim, int dimworld, ALU2DSPACE ElementType eltype>
anonymous enum

element chunk for refinement

Enumerator
newElementsChunk_ 

normal default number of new elements for new adapt method

◆ anonymous enum

template<int dim, int dimworld, ALU2DSPACE ElementType eltype>
anonymous enum

upper estimate on number of elements that could be created when a new element is created

Enumerator
refineEstimate_ 

if one element is refined then it causes apporximately not more than this number of new elements

Constructor & Destructor Documentation

◆ ALU2dGrid()

template<int dim, int dimworld, ALU2DSPACE ElementType eltype>
Dune::ALU2dGrid< dim, dimworld, eltype >::ALU2dGrid ( const std::string  macroTriangFilename,
const int  nrOfHangingNodes,
const DuneBoundaryProjectionType ,
const DuneBoundaryProjectionVector ,
std::istream *  macroFile = 0 
)
protected

Constructor which reads an ALU2dGrid Macro Triang file or given GridFile

Member Function Documentation

◆ adapt()

template<int dim, int dimworld, ALU2DSPACE ElementType eltype>
bool Dune::ALU2dGrid< dim, dimworld, eltype >::adapt ( )

! refine all positive marked leaf entities, return true if a least one entity was refined

◆ communicate()

template<int dim, int dimworld, ALU2DSPACE ElementType eltype>
template<class DataHandleImp , class DataTypeImp >
void Dune::ALU2dGrid< dim, dimworld, eltype >::communicate ( CommDataHandleIF< DataHandleImp, DataTypeImp > &  data,
InterfaceType  iftype,
CommunicationDirection  dir,
int  level 
) const

Communicate information on distributed entities on a given level Template parameter is a model of Dune::CommDataHandleIF.

Parameters
dataA data handle telling the method what data is communicated and how this should be done.
interfaceThe communication interface to use.
dirThe direction of the communication along the interface (forward or backward.
levelThe index of the grid level where the communication should happen.

◆ getLeafMarker()

template<int dim, int dimworld, ALU2DSPACE ElementType eltype>
ALU2dGridLeafMarkerVectorType& Dune::ALU2dGrid< dim, dimworld, eltype >::getLeafMarker ( ) const
inline

return reference to vector determing on which element a face is visited

◆ getMark() [1/2]

int Dune::Grid< dim, dimworld, alu2d_ctype , ALU2dGridFamily< dim, dimworld, eltype > >::getMark ( const typename Codim< 0 >::Entity e) const
inlineinherited

returns adaptation mark for given entity

Parameters
[in]eEntity for which adaptation mark should be determined
Returns
int adaptation mark currently set for given Entity e

◆ getMark() [2/2]

template<int dim, int dimworld, ALU2DSPACE ElementType eltype>
int Dune::ALU2dGrid< dim, dimworld, eltype >::getMark ( const typename Traits::template Codim< 0 >::Entity e) const

returns adaptation mark for given entity

Parameters
[in]eEntity for which adaptation mark should be determined
Returns
int adaptation mark currently set for given Entity e

◆ getMarkerVector()

template<int dim, int dimworld, ALU2DSPACE ElementType eltype>
ALU2dGridMarkerVector& Dune::ALU2dGrid< dim, dimworld, eltype >::getMarkerVector ( int  level) const
inline

return reference to vector telling on which element a face is visted for this level

References Dune::ALU2dGrid< dim, dimworld, eltype >::MAXL.

◆ lbegin()

template<int dim, int dimworld, ALU2DSPACE ElementType eltype>
template<int cd, PartitionIteratorType pitype>
Traits::template Codim<cd>::template Partition<pitype>::LevelIterator Dune::ALU2dGrid< dim, dimworld, eltype >::lbegin ( int  level) const

–Leveliterator Iterator to first entity of given codim on level

◆ loadBalance() [1/2]

template<int dim, int dimworld, ALU2DSPACE ElementType eltype>
bool Dune::ALU2dGrid< dim, dimworld, eltype >::loadBalance ( )

Re-balances the load each process has to handle for a parallel grid,.

Returns
True if the grid has changed.

◆ loadBalance() [2/2]

template<int dim, int dimworld, ALU2DSPACE ElementType eltype>
template<class DataHandle >
bool Dune::ALU2dGrid< dim, dimworld, eltype >::loadBalance ( DataHandle &  data)

Re-balances the load each process has to handle for a parallel grid,.

Returns
True if the grid has changed.

◆ mark() [1/3]

bool Dune::Grid< dim, dimworld, alu2d_ctype , ALU2dGridFamily< dim, dimworld, eltype > >::mark ( int  refCount,
const typename Codim< 0 >::Entity e 
)
inlineinherited

Marks an entity to be refined/coarsened in a subsequent adapt.

Parameters
[in]refCountNumber of subdivisions that should be applied. Negative value means coarsening.
[in]eEntity that should be marked
Returns
true if Entity was marked, false otherwise.

◆ mark() [2/3]

bool Dune::GridDefaultImplementation< dim, dimworld, alu2d_ctype , ALU2dGridFamily< dim, dimworld, eltype > >::mark ( int  refCount,
const typename Traits ::template Codim< 0 >::Entity e 
)
inlineinherited

Marks an entity to be refined/coarsened in a subsequent adapt.

Parameters
[in]refCountNumber of subdivisions that should be applied. Negative value means coarsening.
[in]eEntity to Entity that should be refined
Returns
true if Entity was marked, false otherwise.
Note
  • default implementation is: return false; for grids with no adaptation.
  • for the grid programmer: this method is implemented as a template method, because the Entity type is not defined when the class is instantiated You won't need this trick in the implementation. In your implementation you should use it as
    bool mark( int refCount,
    typename Traits::template Codim<0>::Entity & e ).
    bool mark(int refCount, const typename Traits::template Codim< 0 >::Entity &e)
    Marks an entity to be refined/coarsened in a subsequent adapt.
    This template method will vanish due to the inheritance rules.

◆ mark() [3/3]

template<int dim, int dimworld, ALU2DSPACE ElementType eltype>
bool Dune::ALU2dGrid< dim, dimworld, eltype >::mark ( int  refCount,
const typename Traits::template Codim< 0 >::Entity e 
)

Marks an entity to be refined/coarsened in a subsequent adapt.

Parameters
[in]refCountNumber of subdivisions that should be applied. Negative value means coarsening.
[in]eEntity that should be marked
Returns
true if Entity was marked, false otherwise.

◆ maxLevel()

template<int dim, int dimworld, ALU2DSPACE ElementType eltype>
int Dune::ALU2dGrid< dim, dimworld, eltype >::maxLevel ( ) const

Return maximum level defined in this grid. Levels are numbered 0 ... maxLevel with 0 the coarsest level.

◆ nonConform()

template<int dim, int dimworld, ALU2DSPACE ElementType eltype>
bool Dune::ALU2dGrid< dim, dimworld, eltype >::nonConform ( ) const
inlineprotected

return true if grid allows hanging nodes on leaf level i.e. returns true for ALUSimplexGrid and returns false for ALUConformGrid

Referenced by Dune::ALU2dGrid< dim, dimworld, eltype >::conformingRefinement().


The documentation for this class was generated from the following files:
Creative Commons License   |  Legal Statements / Impressum  |  Hosted by TU Dresden  |  generated with Hugo v0.80.0 (May 2, 22:35, 2024)