dune-fem 2.8.0
Loading...
Searching...
No Matches
Classes | Public Types | Public Member Functions | Static Public Attributes | Protected Member Functions | Protected Attributes | List of all members
Dune::Fem::Stencil< DomainSpace, RangeSpace > Class Template Referenceabstract

default implementation for a general operator stencil More...

#include <dune/fem/operator/common/stencil.hh>

Inheritance diagram for Dune::Fem::Stencil< DomainSpace, RangeSpace >:
Inheritance graph

Public Types

typedef DomainIteratorType::Entity DomainEntityType
 
typedef RangeIteratorType::Entity RangeEntityType
 
typedef DomainBlockMapper::GlobalKeyType DomainGlobalKeyType
 
typedef RangeBlockMapper::GlobalKeyType RangeGlobalKeyType
 
typedef std::set< DomainGlobalKeyTypeLocalStencilType
 type for storing the stencil of one row
 
typedef std::vector< std::size_t >::size_type IndexType
 type of std::vector for indexing
 
typedef std::conditional< indexIsSimple, std::unordered_map< RangeGlobalKeyType, LocalStencilType >, std::map< RangeGlobalKeyType, LocalStencilType > >::type GlobalStencilType
 

Public Member Functions

 Stencil (const DomainSpace &dSpace, const RangeSpace &rSpace)
 Constructor.
 
const DomainSpace & domainSpace () const
 
const RangeSpace & rangeSpace () const
 
void fill (const DomainEntityType &dEntity, const RangeEntityType &rEntity, bool fillGhost=true) const
 Create stencil entries for (dEntity,rEntity) pair.
 
const LocalStencilTypelocalStencil (const RangeGlobalKeyType &key) const
 Return stencil for a given row of the matrix.
 
const GlobalStencilTypeglobalStencil () const
 Return the full stencil.
 
int maxNonZerosEstimate () const
 Return an upper bound for the maximum number of non-zero entries in all rows.
 
int rows () const
 
int cols () const
 
void update ()
 clear previously computed entries such that a re-compute happens when used again
 
void setup ()
 

Static Public Attributes

static const bool indexIsSimple = std::is_convertible< RangeGlobalKeyType, IndexType >::value
 

Protected Member Functions

virtual void setupStencil () const =0
 method to setup stencil depending on entity set defined in derived class
 

Protected Attributes

const DomainSpace & domainSpace_
 
const RangeSpace & rangeSpace_
 
const DomainBlockMapper & domainBlockMapper_
 
const RangeBlockMapper & rangeBlockMapper_
 
GlobalStencilType globalStencil_
 

Detailed Description

template<class DomainSpace, class RangeSpace>
class Dune::Fem::Stencil< DomainSpace, RangeSpace >

default implementation for a general operator stencil

To assemble a matrix from an operator the method reserve has to be called on the linear operator class passing a stencil object as parameter. To setup a full stencil the method fill has to be called with each pair (en,nb) for which the localMatrix method is called during the assembly.

Template Parameters
DomainSpacetype of discrete function space for the domain
RangeSpacetype of discrete function space for the range

Member Typedef Documentation

◆ DomainEntityType

template<class DomainSpace , class RangeSpace >
typedef DomainIteratorType::Entity Dune::Fem::Stencil< DomainSpace, RangeSpace >::DomainEntityType

◆ DomainGlobalKeyType

template<class DomainSpace , class RangeSpace >
typedef DomainBlockMapper::GlobalKeyType Dune::Fem::Stencil< DomainSpace, RangeSpace >::DomainGlobalKeyType

◆ GlobalStencilType

template<class DomainSpace , class RangeSpace >
typedef std::conditional<indexIsSimple,std::unordered_map<RangeGlobalKeyType,LocalStencilType>,std::map<RangeGlobalKeyType,LocalStencilType>>::type Dune::Fem::Stencil< DomainSpace, RangeSpace >::GlobalStencilType

◆ IndexType

template<class DomainSpace , class RangeSpace >
typedef std::vector<std::size_t>::size_type Dune::Fem::Stencil< DomainSpace, RangeSpace >::IndexType

type of std::vector for indexing

◆ LocalStencilType

template<class DomainSpace , class RangeSpace >
typedef std::set< DomainGlobalKeyType > Dune::Fem::Stencil< DomainSpace, RangeSpace >::LocalStencilType

type for storing the stencil of one row

◆ RangeEntityType

template<class DomainSpace , class RangeSpace >
typedef RangeIteratorType::Entity Dune::Fem::Stencil< DomainSpace, RangeSpace >::RangeEntityType

◆ RangeGlobalKeyType

template<class DomainSpace , class RangeSpace >
typedef RangeBlockMapper::GlobalKeyType Dune::Fem::Stencil< DomainSpace, RangeSpace >::RangeGlobalKeyType

Constructor & Destructor Documentation

◆ Stencil()

template<class DomainSpace , class RangeSpace >
Dune::Fem::Stencil< DomainSpace, RangeSpace >::Stencil ( const DomainSpace &  dSpace,
const RangeSpace &  rSpace 
)
inline

Constructor.

Parameters
[in]dSpacedomain space
[in]rSpacerange space

Member Function Documentation

◆ cols()

template<class DomainSpace , class RangeSpace >
int Dune::Fem::Stencil< DomainSpace, RangeSpace >::cols ( ) const
inline

◆ domainSpace()

template<class DomainSpace , class RangeSpace >
const DomainSpace & Dune::Fem::Stencil< DomainSpace, RangeSpace >::domainSpace ( ) const
inline

◆ fill()

template<class DomainSpace , class RangeSpace >
void Dune::Fem::Stencil< DomainSpace, RangeSpace >::fill ( const DomainEntityType dEntity,
const RangeEntityType rEntity,
bool  fillGhost = true 
) const
inline

Create stencil entries for (dEntity,rEntity) pair.

Parameters
[in]dEntitydomain entity
[in]rEntityrange entity
[in]fillGhostsetup stencil even for a ghost domain entity

◆ globalStencil()

template<class DomainSpace , class RangeSpace >
const GlobalStencilType & Dune::Fem::Stencil< DomainSpace, RangeSpace >::globalStencil ( ) const
inline

Return the full stencil.

◆ localStencil()

template<class DomainSpace , class RangeSpace >
const LocalStencilType & Dune::Fem::Stencil< DomainSpace, RangeSpace >::localStencil ( const RangeGlobalKeyType key) const
inline

Return stencil for a given row of the matrix.

Parameters
[in]keykey for matrix row

◆ maxNonZerosEstimate()

template<class DomainSpace , class RangeSpace >
int Dune::Fem::Stencil< DomainSpace, RangeSpace >::maxNonZerosEstimate ( ) const
inline

Return an upper bound for the maximum number of non-zero entries in all rows.

◆ rangeSpace()

template<class DomainSpace , class RangeSpace >
const RangeSpace & Dune::Fem::Stencil< DomainSpace, RangeSpace >::rangeSpace ( ) const
inline

◆ rows()

template<class DomainSpace , class RangeSpace >
int Dune::Fem::Stencil< DomainSpace, RangeSpace >::rows ( ) const
inline

◆ setup()

template<class DomainSpace , class RangeSpace >
void Dune::Fem::Stencil< DomainSpace, RangeSpace >::setup ( )
inline

◆ setupStencil()

template<class DomainSpace , class RangeSpace >
virtual void Dune::Fem::Stencil< DomainSpace, RangeSpace >::setupStencil ( ) const
protectedpure virtual

◆ update()

template<class DomainSpace , class RangeSpace >
void Dune::Fem::Stencil< DomainSpace, RangeSpace >::update ( )
inline

clear previously computed entries such that a re-compute happens when used again

Member Data Documentation

◆ domainBlockMapper_

template<class DomainSpace , class RangeSpace >
const DomainBlockMapper& Dune::Fem::Stencil< DomainSpace, RangeSpace >::domainBlockMapper_
protected

◆ domainSpace_

template<class DomainSpace , class RangeSpace >
const DomainSpace& Dune::Fem::Stencil< DomainSpace, RangeSpace >::domainSpace_
protected

◆ globalStencil_

template<class DomainSpace , class RangeSpace >
GlobalStencilType Dune::Fem::Stencil< DomainSpace, RangeSpace >::globalStencil_
mutableprotected

◆ indexIsSimple

template<class DomainSpace , class RangeSpace >
const bool Dune::Fem::Stencil< DomainSpace, RangeSpace >::indexIsSimple = std::is_convertible< RangeGlobalKeyType, IndexType >::value
static

◆ rangeBlockMapper_

template<class DomainSpace , class RangeSpace >
const RangeBlockMapper& Dune::Fem::Stencil< DomainSpace, RangeSpace >::rangeBlockMapper_
protected

◆ rangeSpace_

template<class DomainSpace , class RangeSpace >
const RangeSpace& Dune::Fem::Stencil< DomainSpace, RangeSpace >::rangeSpace_
protected

The documentation for this class was generated from the following file: