Dune Core Modules (2.6.0)

Dune::MultipleCodimMultipleGeomTypeMapper< GV, LayoutClass > Class Template Reference

Implementation class for a multiple codim and multiple geometry type mapper. More...

#include <dune/grid/common/mcmgmapper.hh>

Public Types

typedef GV GridView
 Underlying GridView.
 
typedef GV::IndexSet::IndexType Index
 Number type used for indices.
 
using size_type = decltype(std::declval< typename GV::IndexSet >().size(0))
 Number type used for the overall size (the return value of the 'size' method) More...
 

Public Member Functions

 MultipleCodimMultipleGeomTypeMapper (const GV &gridView, const LayoutClass< GV::dimension > layout={})
 Construct mapper from grid and one of its index sets. More...
 
 MultipleCodimMultipleGeomTypeMapper (const GV &gridView, const MCMGLayout &layout)
 construct mapper from grid and layout description More...
 
template<class EntityType >
Index index (const EntityType &e) const
 Map entity to starting index in array for dof block. More...
 
Index subIndex (const typename GV::template Codim< 0 >::Entity &e, int i, unsigned int codim) const
 Map subentity of codim 0 entity to starting index in array for dof block. More...
 
size_type size () const
 Return total number of entities in the entity set managed by the mapper. More...
 
size_type size (GeometryType gt) const
 return number of entries for a given geometry type
 
const std::vector< GeometryType > & types (int codim) const
 return the geometry types with entries
 
template<class EntityType >
IntegralRange< Indexindices (const EntityType &e) const
 Returns a pair with the starting point in the dof vector and the number of degrees of freedom if the entity is contained in the index set otherwise {0,0} is returned. More...
 
IntegralRange< Indexindices (const typename GV::template Codim< 0 >::Entity &e, int i, int cc) const
 Returns a pair with the starting point in the dof vector and the number of degrees of freedom if the entity is contained in the index set otherwise {0,0} is returned. More...
 
template<class EntityType >
bool contains (const EntityType &e, Index &result) const
 Returns true if the entity is contained in the index set. More...
 
bool contains (const typename GV::template Codim< 0 >::Entity &e, int i, int cc, Index &result) const
 Returns true if the entity is contained in the index set. More...
 
void update ()
 Recalculates map after mesh adaptation.
 

Static Protected Member Functions

static MCMGLayout wrapLayoutClass (const LayoutClass< GV::dimension > &layout)
 wrap legacy layout classes
 

Detailed Description

template<typename GV, template< int > class LayoutClass = Impl::MCMGFailLayout>
class Dune::MultipleCodimMultipleGeomTypeMapper< GV, LayoutClass >

Implementation class for a multiple codim and multiple geometry type mapper.

In this implementation of a mapper the entity set used as domain for the map consists of the entities of a subset of codimensions in the given index set. The index set may contain entities of several geometry types. This version is usually not used directly but is used to implement versions for leafwise and levelwise entity sets.

The geometry types to be included in the mapper are selected using a layout functional (MCMGLayout) that is passed to the constructor.

Template Parameters
GVA Dune GridView type.
LayoutClass(deprecated) A helper class template with a method contains(), that returns true for all geometry types that are in the domain of the map. The class should be of the following shape
template<int dimgrid>
struct LayoutClass {
// Return true if gt is in the domain of the map
}
};
Unique label for each type of entities that can occur in DUNE grids.
Definition: type.hh:277
bool contains(const EntityType &e, Index &result) const
Returns true if the entity is contained in the index set.
Definition: mcmgmapper.hh:355
bool gt(const T &first, const T &second, typename EpsilonType< T >::Type epsilon)
test if first greater than second
Definition: float_cmp.cc:147
The MultipleCodimMultipleGeomTypeMapper will always substitute the dimension of the grid for the template parameter dimgrid.

Member Typedef Documentation

◆ size_type

template<typename GV , template< int > class LayoutClass = Impl::MCMGFailLayout>
using Dune::MultipleCodimMultipleGeomTypeMapper< GV, LayoutClass >::size_type = decltype(std::declval<typename GV::IndexSet>().size(0))

Number type used for the overall size (the return value of the 'size' method)

The type used here is set to be the corresponding type used by the GridView's index set.

Constructor & Destructor Documentation

◆ MultipleCodimMultipleGeomTypeMapper() [1/2]

template<typename GV , template< int > class LayoutClass = Impl::MCMGFailLayout>
Dune::MultipleCodimMultipleGeomTypeMapper< GV, LayoutClass >::MultipleCodimMultipleGeomTypeMapper ( const GV &  gridView,
const LayoutClass< GV::dimension >  layout = {} 
)
inline

Construct mapper from grid and one of its index sets.

Parameters
gridViewA Dune GridView object.
layoutA layout object.
Deprecated:
Use the constructor taking a MCMGLayout instead.
Deprecated:
"Use the constructor taking a `MCMGLayout` functional instead"

◆ MultipleCodimMultipleGeomTypeMapper() [2/2]

template<typename GV , template< int > class LayoutClass = Impl::MCMGFailLayout>
Dune::MultipleCodimMultipleGeomTypeMapper< GV, LayoutClass >::MultipleCodimMultipleGeomTypeMapper ( const GV &  gridView,
const MCMGLayout layout 
)
inline

construct mapper from grid and layout description

The layout parameter is a functional describing entities of which geometry types are included in the mapper. For commonly used cases, convenience functions are provided. See the MCMGLayout type documentation for details.

Parameters
gridViewgrid view whose entities should be included in the mapper
layoutfunctional describing how many dof to store on each entity (fixed per geometry type)

References Dune::MultipleCodimMultipleGeomTypeMapper< GV, LayoutClass >::update().

Member Function Documentation

◆ contains() [1/2]

template<typename GV , template< int > class LayoutClass = Impl::MCMGFailLayout>
template<class EntityType >
bool Dune::MultipleCodimMultipleGeomTypeMapper< GV, LayoutClass >::contains ( const EntityType &  e,
Index result 
) const
inline

Returns true if the entity is contained in the index set.

Parameters
eReference to entity
resultinteger reference where corresponding index is stored if true
Returns
true if entity is in entity set of the mapper

References Dune::MultipleCodimMultipleGeomTypeMapper< GV, LayoutClass >::index().

◆ contains() [2/2]

template<typename GV , template< int > class LayoutClass = Impl::MCMGFailLayout>
bool Dune::MultipleCodimMultipleGeomTypeMapper< GV, LayoutClass >::contains ( const typename GV::template Codim< 0 >::Entity &  e,
int  i,
int  cc,
Index result 
) const
inline

Returns true if the entity is contained in the index set.

Parameters
eReference to codim 0 entity
isubentity number
ccsubentity codim
resultinteger reference where corresponding index is stored if true
Returns
true if entity is in entity set of the mapper

References Dune::Geo::ReferenceElements< ctype_, dim >::general(), Dune::FloatCmp::gt(), Dune::GeometryType::isNone(), and Dune::GeometryTypes::none().

◆ index()

template<typename GV , template< int > class LayoutClass = Impl::MCMGFailLayout>
template<class EntityType >
Index Dune::MultipleCodimMultipleGeomTypeMapper< GV, LayoutClass >::index ( const EntityType &  e) const
inline

Map entity to starting index in array for dof block.

Template Parameters
EntityType
Parameters
eReference to codim EntityType entity.
Returns
An index in the range 0 ... (Max number of entities in set)*blockSize - 1.

References Dune::FloatCmp::gt().

Referenced by Dune::MultipleCodimMultipleGeomTypeMapper< GV, LayoutClass >::contains(), Dune::P0VTKFunction< GV, V >::evaluate(), and Dune::MultipleCodimMultipleGeomTypeMapper< GV, LayoutClass >::indices().

◆ indices() [1/2]

template<typename GV , template< int > class LayoutClass = Impl::MCMGFailLayout>
template<class EntityType >
IntegralRange< Index > Dune::MultipleCodimMultipleGeomTypeMapper< GV, LayoutClass >::indices ( const EntityType &  e) const
inline

Returns a pair with the starting point in the dof vector and the number of degrees of freedom if the entity is contained in the index set otherwise {0,0} is returned.

Parameters
eReference to entity
resultinteger reference to the start of the block
Returns
pair with first entry equal to index for that entity and the second entry the number of degrees of freedom (zero if entity is not in entity set of the mapper)

References Dune::MultipleCodimMultipleGeomTypeMapper< GV, LayoutClass >::index().

◆ indices() [2/2]

template<typename GV , template< int > class LayoutClass = Impl::MCMGFailLayout>
IntegralRange< Index > Dune::MultipleCodimMultipleGeomTypeMapper< GV, LayoutClass >::indices ( const typename GV::template Codim< 0 >::Entity &  e,
int  i,
int  cc 
) const
inline

Returns a pair with the starting point in the dof vector and the number of degrees of freedom if the entity is contained in the index set otherwise {0,0} is returned.

Parameters
eReference to codim 0 entity
isubentity number
ccsubentity codim
resultinteger reference to the start of the block
Returns
pair with first entry equal to index for that entity and the second entry the number of degrees of freedom (zero if sub entity is not in entity set of the mapper)

References Dune::Geo::ReferenceElements< ctype_, dim >::general(), Dune::FloatCmp::gt(), Dune::GeometryType::isNone(), Dune::GeometryTypes::none(), and Dune::MultipleCodimMultipleGeomTypeMapper< GV, LayoutClass >::subIndex().

◆ size()

template<typename GV , template< int > class LayoutClass = Impl::MCMGFailLayout>
size_type Dune::MultipleCodimMultipleGeomTypeMapper< GV, LayoutClass >::size ( ) const
inline

Return total number of entities in the entity set managed by the mapper.

This number can be used to allocate a vector of data elements associated with the entities of the set. In the parallel case this number is per process (i.e. it may be different in different processes).

Returns
Size of the entity set.

Referenced by Dune::fillGridViewInfoSerial(), Dune::P0VTKFunction< GV, V >::P0VTKFunction(), and Dune::P1VTKFunction< GV, V >::P1VTKFunction().

◆ subIndex()

template<typename GV , template< int > class LayoutClass = Impl::MCMGFailLayout>
Index Dune::MultipleCodimMultipleGeomTypeMapper< GV, LayoutClass >::subIndex ( const typename GV::template Codim< 0 >::Entity &  e,
int  i,
unsigned int  codim 
) const
inline

Map subentity of codim 0 entity to starting index in array for dof block.

Parameters
eReference to codim 0 entity.
iNumber of subentity of e
codimCodimension of the subentity
Returns
An index in the range 0 ... Max number of entities in set - 1.

References Dune::Geo::ReferenceElements< ctype_, dim >::general(), Dune::FloatCmp::gt(), Dune::GeometryType::isNone(), and Dune::GeometryTypes::none().

Referenced by Dune::VTKWriter< GridView >::countEntities(), Dune::P1VTKFunction< GV, V >::evaluate(), Dune::VTKWriter< GridView >::CornerIterator::id(), and Dune::MultipleCodimMultipleGeomTypeMapper< GV, LayoutClass >::indices().


The documentation for this class was generated from the following file:
Creative Commons License   |  Legal Statements / Impressum  |  Hosted by TU Dresden  |  generated with Hugo v0.111.3 (Nov 24, 23:30, 2024)