dune-fem  2.4.1-rc
Classes | Public Types | Public Member Functions | Static Public Attributes | Protected Attributes | List of all members
Dune::Fem::BlockDiagonalLinearOperator< DiscreteFunctionSpace, LocalBlock > Class Template Referenceabstract

#include </local/tomalk/somewhere/tmp/dune-fem/dune/fem/operator/linear/blockdiagonal.hh>

Inheritance diagram for Dune::Fem::BlockDiagonalLinearOperator< DiscreteFunctionSpace, LocalBlock >:
Inheritance graph

Classes

struct  CommDataHandle
 
class  LocalMatrix
 
struct  LocalMatrixFactory
 
class  LocalMatrixTraits
 

Public Types

typedef BaseType::DomainFunctionType DomainFunctionType
 
typedef BaseType::RangeFunctionType RangeFunctionType
 
typedef BaseType::DomainFieldType DomainFieldType
 
typedef BaseType::RangeFieldType RangeFieldType
 
typedef DomainFunctionType::DiscreteFunctionSpaceType DomainSpaceType
 
typedef RangeFunctionType::DiscreteFunctionSpaceType RangeSpaceType
 
typedef DomainSpaceType::EntityType DomainEntityType
 
typedef RangeSpaceType::EntityType RangeEntityType
 
typedef LocalBlock LocalBlockType
 
typedef LocalBlockTypeDofBlockPtrType
 
typedef const LocalBlockTypeConstDofBlockPtrType
 
typedef LocalBlockType::row_type DofType
 
typedef DomainSpaceType DiscreteFunctionSpaceType
 
typedef ObjectStack< LocalMatrixFactoryLocalMatrixStackType
 
typedef LocalMatrixWrapper< LocalMatrixStackTypeLocalMatrixType
 
typedef ColumnObject< ThisTypeLocalColumnObjectType
 

Public Member Functions

 BlockDiagonalLinearOperator (const std::string &name, const DomainSpaceType &domainSpace, const RangeSpaceType &rangeSpace)
 
void operator() (const DomainFunctionType &u, RangeFunctionType &w) const
 
template<class DomainSpace , class RangeSpace >
void operator() (const AdaptiveDiscreteFunction< DomainSpace > &u, AdaptiveDiscreteFunction< RangeSpace > &w) const
 
template<class DomainSpace , class RangeSpace >
void multiply (const AdaptiveDiscreteFunction< DomainSpace > &u, AdaptiveDiscreteFunction< RangeSpace > &w) const
 
void clear ()
 
template<class Functor >
void forEach (const Functor &functor)
 
void invert ()
 
void rightmultiply (const ThisType &other)
 
void leftmultiply (const ThisType &other)
 
DofBlockPtrType block (const size_t block)
 return block matrix for given block number (== entity number) More...
 
ConstDofBlockPtrType block (const size_t block) const
 return block matrix for given block number (== entity number) More...
 
void communicate ()
 copy matrices to ghost cells to make this class work in parallel More...
 
template<class Operation >
CommDataHandle< Operation >::Type dataHandle (const Operation *operation)
 return reference to data handle object (needed to make this class work with CommunicationManager) More...
 
template<class Stencil >
void reserve (const Stencil &stencil, bool verbose=false)
 
LocalColumnObjectType localColumn (const DomainEntityType &domainEntity) const
 
LocalMatrixType localMatrix (const DomainEntityType &domainEntity, const RangeEntityType &rangeEntity) const
 
const DomainSpaceTypedomainSpace () const
 
const RangeSpaceTyperangeSpace () const
 
const DomainSpaceTypespace () const
 return reference to space (needed to make this class work with CommunicationManager) More...
 
const std::string & name () const
 
virtual bool symmetric () const
 
virtual bool positiveDefinite () const
 
virtual void operator() (const DomainFunctionType &u, RangeFunctionType &w) const =0
 application operator More...
 

Static Public Attributes

static const int localBlockSize = DomainSpaceType::localBlockSize
 

Protected Attributes

std::string name_
 
const RangeSpaceTypespace_
 
std::vector< LocalBlockTypediagonal_
 
LocalMatrixFactory localMatrixFactory_
 
LocalMatrixStackType localMatrixStack_
 

Member Typedef Documentation

template<class DiscreteFunctionSpace, class LocalBlock = Dune::FieldMatrix< typename DiscreteFunctionSpace :: RangeFieldType, DiscreteFunctionSpace::localBlockSize, DiscreteFunctionSpace::localBlockSize >>
typedef const LocalBlockType* Dune::Fem::BlockDiagonalLinearOperator< DiscreteFunctionSpace, LocalBlock >::ConstDofBlockPtrType
template<class DiscreteFunctionSpace, class LocalBlock = Dune::FieldMatrix< typename DiscreteFunctionSpace :: RangeFieldType, DiscreteFunctionSpace::localBlockSize, DiscreteFunctionSpace::localBlockSize >>
typedef DomainSpaceType Dune::Fem::BlockDiagonalLinearOperator< DiscreteFunctionSpace, LocalBlock >::DiscreteFunctionSpaceType
template<class DiscreteFunctionSpace, class LocalBlock = Dune::FieldMatrix< typename DiscreteFunctionSpace :: RangeFieldType, DiscreteFunctionSpace::localBlockSize, DiscreteFunctionSpace::localBlockSize >>
typedef LocalBlockType* Dune::Fem::BlockDiagonalLinearOperator< DiscreteFunctionSpace, LocalBlock >::DofBlockPtrType
template<class DiscreteFunctionSpace, class LocalBlock = Dune::FieldMatrix< typename DiscreteFunctionSpace :: RangeFieldType, DiscreteFunctionSpace::localBlockSize, DiscreteFunctionSpace::localBlockSize >>
typedef LocalBlockType::row_type Dune::Fem::BlockDiagonalLinearOperator< DiscreteFunctionSpace, LocalBlock >::DofType
template<class DiscreteFunctionSpace, class LocalBlock = Dune::FieldMatrix< typename DiscreteFunctionSpace :: RangeFieldType, DiscreteFunctionSpace::localBlockSize, DiscreteFunctionSpace::localBlockSize >>
typedef DomainSpaceType::EntityType Dune::Fem::BlockDiagonalLinearOperator< DiscreteFunctionSpace, LocalBlock >::DomainEntityType
template<class DiscreteFunctionSpace, class LocalBlock = Dune::FieldMatrix< typename DiscreteFunctionSpace :: RangeFieldType, DiscreteFunctionSpace::localBlockSize, DiscreteFunctionSpace::localBlockSize >>
typedef BaseType::DomainFieldType Dune::Fem::BlockDiagonalLinearOperator< DiscreteFunctionSpace, LocalBlock >::DomainFieldType
template<class DiscreteFunctionSpace, class LocalBlock = Dune::FieldMatrix< typename DiscreteFunctionSpace :: RangeFieldType, DiscreteFunctionSpace::localBlockSize, DiscreteFunctionSpace::localBlockSize >>
typedef BaseType::DomainFunctionType Dune::Fem::BlockDiagonalLinearOperator< DiscreteFunctionSpace, LocalBlock >::DomainFunctionType
template<class DiscreteFunctionSpace, class LocalBlock = Dune::FieldMatrix< typename DiscreteFunctionSpace :: RangeFieldType, DiscreteFunctionSpace::localBlockSize, DiscreteFunctionSpace::localBlockSize >>
typedef DomainFunctionType::DiscreteFunctionSpaceType Dune::Fem::BlockDiagonalLinearOperator< DiscreteFunctionSpace, LocalBlock >::DomainSpaceType
template<class DiscreteFunctionSpace, class LocalBlock = Dune::FieldMatrix< typename DiscreteFunctionSpace :: RangeFieldType, DiscreteFunctionSpace::localBlockSize, DiscreteFunctionSpace::localBlockSize >>
typedef LocalBlock Dune::Fem::BlockDiagonalLinearOperator< DiscreteFunctionSpace, LocalBlock >::LocalBlockType
template<class DiscreteFunctionSpace, class LocalBlock = Dune::FieldMatrix< typename DiscreteFunctionSpace :: RangeFieldType, DiscreteFunctionSpace::localBlockSize, DiscreteFunctionSpace::localBlockSize >>
typedef ColumnObject< ThisType > Dune::Fem::BlockDiagonalLinearOperator< DiscreteFunctionSpace, LocalBlock >::LocalColumnObjectType
template<class DiscreteFunctionSpace, class LocalBlock = Dune::FieldMatrix< typename DiscreteFunctionSpace :: RangeFieldType, DiscreteFunctionSpace::localBlockSize, DiscreteFunctionSpace::localBlockSize >>
typedef ObjectStack< LocalMatrixFactory > Dune::Fem::BlockDiagonalLinearOperator< DiscreteFunctionSpace, LocalBlock >::LocalMatrixStackType
template<class DiscreteFunctionSpace, class LocalBlock = Dune::FieldMatrix< typename DiscreteFunctionSpace :: RangeFieldType, DiscreteFunctionSpace::localBlockSize, DiscreteFunctionSpace::localBlockSize >>
typedef LocalMatrixWrapper< LocalMatrixStackType > Dune::Fem::BlockDiagonalLinearOperator< DiscreteFunctionSpace, LocalBlock >::LocalMatrixType
template<class DiscreteFunctionSpace, class LocalBlock = Dune::FieldMatrix< typename DiscreteFunctionSpace :: RangeFieldType, DiscreteFunctionSpace::localBlockSize, DiscreteFunctionSpace::localBlockSize >>
typedef RangeSpaceType::EntityType Dune::Fem::BlockDiagonalLinearOperator< DiscreteFunctionSpace, LocalBlock >::RangeEntityType
template<class DiscreteFunctionSpace, class LocalBlock = Dune::FieldMatrix< typename DiscreteFunctionSpace :: RangeFieldType, DiscreteFunctionSpace::localBlockSize, DiscreteFunctionSpace::localBlockSize >>
typedef BaseType::RangeFieldType Dune::Fem::BlockDiagonalLinearOperator< DiscreteFunctionSpace, LocalBlock >::RangeFieldType
template<class DiscreteFunctionSpace, class LocalBlock = Dune::FieldMatrix< typename DiscreteFunctionSpace :: RangeFieldType, DiscreteFunctionSpace::localBlockSize, DiscreteFunctionSpace::localBlockSize >>
typedef BaseType::RangeFunctionType Dune::Fem::BlockDiagonalLinearOperator< DiscreteFunctionSpace, LocalBlock >::RangeFunctionType
template<class DiscreteFunctionSpace, class LocalBlock = Dune::FieldMatrix< typename DiscreteFunctionSpace :: RangeFieldType, DiscreteFunctionSpace::localBlockSize, DiscreteFunctionSpace::localBlockSize >>
typedef RangeFunctionType::DiscreteFunctionSpaceType Dune::Fem::BlockDiagonalLinearOperator< DiscreteFunctionSpace, LocalBlock >::RangeSpaceType

Constructor & Destructor Documentation

template<class DiscreteFunctionSpace, class LocalBlock = Dune::FieldMatrix< typename DiscreteFunctionSpace :: RangeFieldType, DiscreteFunctionSpace::localBlockSize, DiscreteFunctionSpace::localBlockSize >>
Dune::Fem::BlockDiagonalLinearOperator< DiscreteFunctionSpace, LocalBlock >::BlockDiagonalLinearOperator ( const std::string &  name,
const DomainSpaceType domainSpace,
const RangeSpaceType rangeSpace 
)
inline

Member Function Documentation

template<class DiscreteFunctionSpace, class LocalBlock = Dune::FieldMatrix< typename DiscreteFunctionSpace :: RangeFieldType, DiscreteFunctionSpace::localBlockSize, DiscreteFunctionSpace::localBlockSize >>
DofBlockPtrType Dune::Fem::BlockDiagonalLinearOperator< DiscreteFunctionSpace, LocalBlock >::block ( const size_t  block)
inline
template<class DiscreteFunctionSpace, class LocalBlock = Dune::FieldMatrix< typename DiscreteFunctionSpace :: RangeFieldType, DiscreteFunctionSpace::localBlockSize, DiscreteFunctionSpace::localBlockSize >>
ConstDofBlockPtrType Dune::Fem::BlockDiagonalLinearOperator< DiscreteFunctionSpace, LocalBlock >::block ( const size_t  block) const
inline
template<class DiscreteFunctionSpace, class LocalBlock = Dune::FieldMatrix< typename DiscreteFunctionSpace :: RangeFieldType, DiscreteFunctionSpace::localBlockSize, DiscreteFunctionSpace::localBlockSize >>
void Dune::Fem::BlockDiagonalLinearOperator< DiscreteFunctionSpace, LocalBlock >::clear ( )
inline
template<class DiscreteFunctionSpace, class LocalBlock = Dune::FieldMatrix< typename DiscreteFunctionSpace :: RangeFieldType, DiscreteFunctionSpace::localBlockSize, DiscreteFunctionSpace::localBlockSize >>
void Dune::Fem::BlockDiagonalLinearOperator< DiscreteFunctionSpace, LocalBlock >::communicate ( )
inline

copy matrices to ghost cells to make this class work in parallel

Note
needs the block methods to behave like discrete function (needed to make this class work with CommunicationManager)

References Dune::Fem::BlockDiagonalLinearOperator< DiscreteFunctionSpace, LocalBlock >::domainSpace().

template<class DiscreteFunctionSpace, class LocalBlock = Dune::FieldMatrix< typename DiscreteFunctionSpace :: RangeFieldType, DiscreteFunctionSpace::localBlockSize, DiscreteFunctionSpace::localBlockSize >>
template<class Operation >
CommDataHandle< Operation >:: Type Dune::Fem::BlockDiagonalLinearOperator< DiscreteFunctionSpace, LocalBlock >::dataHandle ( const Operation *  operation)
inline

return reference to data handle object (needed to make this class work with CommunicationManager)

References Dune::Fem::BlockDiagonalLinearOperator< DiscreteFunctionSpace, LocalBlock >::space().

template<class DiscreteFunctionSpace, class LocalBlock = Dune::FieldMatrix< typename DiscreteFunctionSpace :: RangeFieldType, DiscreteFunctionSpace::localBlockSize, DiscreteFunctionSpace::localBlockSize >>
const DomainSpaceType& Dune::Fem::BlockDiagonalLinearOperator< DiscreteFunctionSpace, LocalBlock >::domainSpace ( ) const
inline
template<class DiscreteFunctionSpace, class LocalBlock = Dune::FieldMatrix< typename DiscreteFunctionSpace :: RangeFieldType, DiscreteFunctionSpace::localBlockSize, DiscreteFunctionSpace::localBlockSize >>
template<class Functor >
void Dune::Fem::BlockDiagonalLinearOperator< DiscreteFunctionSpace, LocalBlock >::forEach ( const Functor &  functor)
inline
template<class DiscreteFunctionSpace, class LocalBlock = Dune::FieldMatrix< typename DiscreteFunctionSpace :: RangeFieldType, DiscreteFunctionSpace::localBlockSize, DiscreteFunctionSpace::localBlockSize >>
void Dune::Fem::BlockDiagonalLinearOperator< DiscreteFunctionSpace, LocalBlock >::invert ( )
inline
template<class DiscreteFunctionSpace, class LocalBlock = Dune::FieldMatrix< typename DiscreteFunctionSpace :: RangeFieldType, DiscreteFunctionSpace::localBlockSize, DiscreteFunctionSpace::localBlockSize >>
void Dune::Fem::BlockDiagonalLinearOperator< DiscreteFunctionSpace, LocalBlock >::leftmultiply ( const ThisType other)
inline
template<class DiscreteFunctionSpace, class LocalBlock = Dune::FieldMatrix< typename DiscreteFunctionSpace :: RangeFieldType, DiscreteFunctionSpace::localBlockSize, DiscreteFunctionSpace::localBlockSize >>
LocalColumnObjectType Dune::Fem::BlockDiagonalLinearOperator< DiscreteFunctionSpace, LocalBlock >::localColumn ( const DomainEntityType domainEntity) const
inline
template<class DiscreteFunctionSpace , class LocalBlock >
BlockDiagonalLinearOperator< DiscreteFunctionSpace, LocalBlock >::LocalMatrixType Dune::Fem::BlockDiagonalLinearOperator< DiscreteFunctionSpace, LocalBlock >::localMatrix ( const DomainEntityType domainEntity,
const RangeEntityType rangeEntity 
) const
inline
template<class DiscreteFunctionSpace, class LocalBlock = Dune::FieldMatrix< typename DiscreteFunctionSpace :: RangeFieldType, DiscreteFunctionSpace::localBlockSize, DiscreteFunctionSpace::localBlockSize >>
template<class DomainSpace , class RangeSpace >
void Dune::Fem::BlockDiagonalLinearOperator< DiscreteFunctionSpace, LocalBlock >::multiply ( const AdaptiveDiscreteFunction< DomainSpace > &  u,
AdaptiveDiscreteFunction< RangeSpace > &  w 
) const
inline
template<class DiscreteFunctionSpace, class LocalBlock = Dune::FieldMatrix< typename DiscreteFunctionSpace :: RangeFieldType, DiscreteFunctionSpace::localBlockSize, DiscreteFunctionSpace::localBlockSize >>
const std::string& Dune::Fem::BlockDiagonalLinearOperator< DiscreteFunctionSpace, LocalBlock >::name ( ) const
inline
virtual void Dune::Fem::Operator< AdaptiveDiscreteFunction< DiscreteFunctionSpace > , AdaptiveDiscreteFunction< DiscreteFunctionSpace > >::operator() ( const DomainFunctionType u,
RangeFunctionType w 
) const
pure virtualinherited

application operator

Parameters
[in]uargument discrete function
[out]wdestination discrete function
Note
This method has to be implemented by all derived classes.
template<class DiscreteFunctionSpace, class LocalBlock = Dune::FieldMatrix< typename DiscreteFunctionSpace :: RangeFieldType, DiscreteFunctionSpace::localBlockSize, DiscreteFunctionSpace::localBlockSize >>
void Dune::Fem::BlockDiagonalLinearOperator< DiscreteFunctionSpace, LocalBlock >::operator() ( const DomainFunctionType u,
RangeFunctionType w 
) const
inline
template<class DiscreteFunctionSpace, class LocalBlock = Dune::FieldMatrix< typename DiscreteFunctionSpace :: RangeFieldType, DiscreteFunctionSpace::localBlockSize, DiscreteFunctionSpace::localBlockSize >>
template<class DomainSpace , class RangeSpace >
void Dune::Fem::BlockDiagonalLinearOperator< DiscreteFunctionSpace, LocalBlock >::operator() ( const AdaptiveDiscreteFunction< DomainSpace > &  u,
AdaptiveDiscreteFunction< RangeSpace > &  w 
) const
inline
virtual bool Dune::Fem::LinearOperator< AdaptiveDiscreteFunction< DiscreteFunctionSpace > , AdaptiveDiscreteFunction< DiscreteFunctionSpace > >::positiveDefinite ( ) const
inlinevirtualinherited

Return true if the Operator is positive definite.

template<class DiscreteFunctionSpace, class LocalBlock = Dune::FieldMatrix< typename DiscreteFunctionSpace :: RangeFieldType, DiscreteFunctionSpace::localBlockSize, DiscreteFunctionSpace::localBlockSize >>
const RangeSpaceType& Dune::Fem::BlockDiagonalLinearOperator< DiscreteFunctionSpace, LocalBlock >::rangeSpace ( ) const
inline
template<class DiscreteFunctionSpace, class LocalBlock = Dune::FieldMatrix< typename DiscreteFunctionSpace :: RangeFieldType, DiscreteFunctionSpace::localBlockSize, DiscreteFunctionSpace::localBlockSize >>
template<class Stencil >
void Dune::Fem::BlockDiagonalLinearOperator< DiscreteFunctionSpace, LocalBlock >::reserve ( const Stencil stencil,
bool  verbose = false 
)
inline
template<class DiscreteFunctionSpace, class LocalBlock = Dune::FieldMatrix< typename DiscreteFunctionSpace :: RangeFieldType, DiscreteFunctionSpace::localBlockSize, DiscreteFunctionSpace::localBlockSize >>
void Dune::Fem::BlockDiagonalLinearOperator< DiscreteFunctionSpace, LocalBlock >::rightmultiply ( const ThisType other)
inline
template<class DiscreteFunctionSpace, class LocalBlock = Dune::FieldMatrix< typename DiscreteFunctionSpace :: RangeFieldType, DiscreteFunctionSpace::localBlockSize, DiscreteFunctionSpace::localBlockSize >>
const DomainSpaceType& Dune::Fem::BlockDiagonalLinearOperator< DiscreteFunctionSpace, LocalBlock >::space ( ) const
inline

Return true if the Operator is symmetric.

Member Data Documentation

template<class DiscreteFunctionSpace, class LocalBlock = Dune::FieldMatrix< typename DiscreteFunctionSpace :: RangeFieldType, DiscreteFunctionSpace::localBlockSize, DiscreteFunctionSpace::localBlockSize >>
std::vector< LocalBlockType > Dune::Fem::BlockDiagonalLinearOperator< DiscreteFunctionSpace, LocalBlock >::diagonal_
protected
template<class DiscreteFunctionSpace, class LocalBlock = Dune::FieldMatrix< typename DiscreteFunctionSpace :: RangeFieldType, DiscreteFunctionSpace::localBlockSize, DiscreteFunctionSpace::localBlockSize >>
const int Dune::Fem::BlockDiagonalLinearOperator< DiscreteFunctionSpace, LocalBlock >::localBlockSize = DomainSpaceType::localBlockSize
static
template<class DiscreteFunctionSpace, class LocalBlock = Dune::FieldMatrix< typename DiscreteFunctionSpace :: RangeFieldType, DiscreteFunctionSpace::localBlockSize, DiscreteFunctionSpace::localBlockSize >>
LocalMatrixFactory Dune::Fem::BlockDiagonalLinearOperator< DiscreteFunctionSpace, LocalBlock >::localMatrixFactory_
protected
template<class DiscreteFunctionSpace, class LocalBlock = Dune::FieldMatrix< typename DiscreteFunctionSpace :: RangeFieldType, DiscreteFunctionSpace::localBlockSize, DiscreteFunctionSpace::localBlockSize >>
LocalMatrixStackType Dune::Fem::BlockDiagonalLinearOperator< DiscreteFunctionSpace, LocalBlock >::localMatrixStack_
mutableprotected
template<class DiscreteFunctionSpace, class LocalBlock = Dune::FieldMatrix< typename DiscreteFunctionSpace :: RangeFieldType, DiscreteFunctionSpace::localBlockSize, DiscreteFunctionSpace::localBlockSize >>
std::string Dune::Fem::BlockDiagonalLinearOperator< DiscreteFunctionSpace, LocalBlock >::name_
protected
template<class DiscreteFunctionSpace, class LocalBlock = Dune::FieldMatrix< typename DiscreteFunctionSpace :: RangeFieldType, DiscreteFunctionSpace::localBlockSize, DiscreteFunctionSpace::localBlockSize >>
const RangeSpaceType& Dune::Fem::BlockDiagonalLinearOperator< DiscreteFunctionSpace, LocalBlock >::space_
protected

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