dune-fem 2.12-git
Loading...
Searching...
No Matches
Dune::Fem::SparseRowMatrixObject< DomainSpace, RangeSpace, Matrix > Class Template Reference

SparseRowMatrixObject. More...

#include <dune/fem/operator/matrix/spmatrix.hh>

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

Classes

class  LocalMatrix
 LocalMatrix. More...
 
struct  LocalMatrixTraits
 LocalMatrixTraits. More...
 

Public Types

typedef DomainSpace DomainSpaceType
 
typedef RangeSpace RangeSpaceType
 
typedef DomainSpaceType::EntityType DomainEntityType
 
typedef RangeSpaceType::EntityType RangeEntityType
 
typedef DomainSpaceType::EntityType ColumnEntityType
 
typedef RangeSpaceType::EntityType RowEntityType
 
typedef DomainSpaceType::BlockMapperType DomainBlockMapperType
 
typedef NonBlockMapper< DomainBlockMapperType, DomainSpaceType::localBlockSize > DomainMapperType
 
typedef RangeSpaceType::BlockMapperType RangeBlockMapperType
 
typedef NonBlockMapper< RangeBlockMapperType, RangeSpaceType::localBlockSize > RangeMapperType
 
typedef Matrix MatrixType
 
typedef MatrixType::size_type size_type
 
typedef MatrixType::field_type field_type
 
typedef SparseRowMatrixObject< DomainSpaceType, RangeSpaceType, MatrixType > ThisType
 
typedef Dune::FieldMatrix< field_type, rangeLocalBlockSize, domainLocalBlockSize > MatrixBlockType
 
typedef MatrixBlockType block_type
 
typedef MatrixType PreconditionMatrixType
 
typedef LocalMatrix< ThisType > ObjectType
 
typedef ThisType LocalMatrixFactoryType
 
typedef Fem::ObjectStack< LocalMatrixFactoryType > LocalMatrixStackType
 
typedef LocalMatrixWrapper< LocalMatrixStackType > LocalMatrixType
 
typedef ColumnObject< ThisType > LocalColumnObjectType
 

Public Member Functions

 SparseRowMatrixObject (const DomainSpaceType &domainSpace, const RangeSpaceType &rangeSpace, const SolverParameter &param=SolverParameter())
 construct matrix object
 
const DomainSpaceType & domainSpace () const
 get domain space (i.e. space that builds the rows)
 
const RangeSpaceType & rangeSpace () const
 get range space (i.e. space that builds the columns)
 
MatrixType & exportMatrix () const
 get reference to storage object
 
ObjectType * newObject () const
 interface method from LocalMatrixFactory
 
LocalMatrixType localMatrix (const DomainEntityType &domainEntity, const RangeEntityType &rangeEntity) const
 
LocalMatrixType localMatrix () const
 
LocalColumnObjectType localColumn (const DomainEntityType &domainEntity) const
 get local column
 
void unitRow (const size_type row)
 
template<class LocalBlock >
void addBlock (const size_type row, const size_type col, const LocalBlock &block)
 
template<class LocalBlock >
void setBlock (const size_type row, const size_type col, const LocalBlock &block)
 
template<class LocalMatrix >
void addLocalMatrix (const DomainEntityType &domainEntity, const RangeEntityType &rangeEntity, const LocalMatrix &localMat)
 
template<class LocalMatrix , class Scalar >
void addScaledLocalMatrix (const DomainEntityType &domainEntity, const RangeEntityType &rangeEntity, const LocalMatrix &localMat, const Scalar &s)
 
template<class LocalMatrix >
void setLocalMatrix (const DomainEntityType &domainEntity, const RangeEntityType &rangeEntity, const LocalMatrix &localMat)
 
template<class LocalMatrix >
void getLocalMatrix (const DomainEntityType &domainEntity, const RangeEntityType &rangeEntity, LocalMatrix &localMat) const
 
void clear ()
 clear matrix
 
void compress ()
 compress matrix to a real CRS format
 
template<class Set >
void reserve (const std::vector< Set > &sparsityPattern)
 
template<class Stencil >
void reserve (const Stencil &stencil, bool verbose=false)
 reserve memory
 
template<class DomainFunction , class RangeFunction >
void apply (const DomainFunction &arg, RangeFunction &dest) const
 apply matrix to discrete function
 
template<class DiscreteFunctionType >
void extractDiagonal (DiscreteFunctionType &diag) const
 
template<class Container >
void setUnitRows (const Container &unitRows, const Container &auxRows)
 
void resort ()
 resort row numbering in matrix to have ascending numbering
 

Static Public Attributes

static const size_type domainLocalBlockSize = DomainSpaceType::dimRange
 
static const size_type rangeLocalBlockSize = RangeSpaceType::dimRange
 

Protected Member Functions

MatrixType & matrix () const
 get reference to storage object, for internal use
 
void finalizeAssembly () const
 

Protected Attributes

const DomainSpaceType & domainSpace_
 
const RangeSpaceType & rangeSpace_
 
DomainMapperType domainMapper_
 
RangeMapperType rangeMapper_
 
int sequence_
 
MatrixType matrix_
 
LocalMatrixStackType localMatrixStack_
 

Detailed Description

template<class DomainSpace, class RangeSpace, class Matrix = SparseRowMatrix< typename DomainSpace::RangeFieldType >>
class Dune::Fem::SparseRowMatrixObject< DomainSpace, RangeSpace, Matrix >

SparseRowMatrixObject.

Member Typedef Documentation

◆ block_type

template<class DomainSpace , class RangeSpace , class Matrix = SparseRowMatrix< typename DomainSpace::RangeFieldType >>
typedef MatrixBlockType Dune::Fem::SparseRowMatrixObject< DomainSpace, RangeSpace, Matrix >::block_type

◆ ColumnEntityType

template<class DomainSpace , class RangeSpace , class Matrix = SparseRowMatrix< typename DomainSpace::RangeFieldType >>
typedef DomainSpaceType::EntityType Dune::Fem::SparseRowMatrixObject< DomainSpace, RangeSpace, Matrix >::ColumnEntityType

◆ DomainBlockMapperType

template<class DomainSpace , class RangeSpace , class Matrix = SparseRowMatrix< typename DomainSpace::RangeFieldType >>
typedef DomainSpaceType::BlockMapperType Dune::Fem::SparseRowMatrixObject< DomainSpace, RangeSpace, Matrix >::DomainBlockMapperType

◆ DomainEntityType

template<class DomainSpace , class RangeSpace , class Matrix = SparseRowMatrix< typename DomainSpace::RangeFieldType >>
typedef DomainSpaceType::EntityType Dune::Fem::SparseRowMatrixObject< DomainSpace, RangeSpace, Matrix >::DomainEntityType

◆ DomainMapperType

template<class DomainSpace , class RangeSpace , class Matrix = SparseRowMatrix< typename DomainSpace::RangeFieldType >>
typedef NonBlockMapper< DomainBlockMapperType, DomainSpaceType::localBlockSize > Dune::Fem::SparseRowMatrixObject< DomainSpace, RangeSpace, Matrix >::DomainMapperType

◆ DomainSpaceType

template<class DomainSpace , class RangeSpace , class Matrix = SparseRowMatrix< typename DomainSpace::RangeFieldType >>
typedef DomainSpace Dune::Fem::SparseRowMatrixObject< DomainSpace, RangeSpace, Matrix >::DomainSpaceType

◆ field_type

template<class DomainSpace , class RangeSpace , class Matrix = SparseRowMatrix< typename DomainSpace::RangeFieldType >>
typedef MatrixType::field_type Dune::Fem::SparseRowMatrixObject< DomainSpace, RangeSpace, Matrix >::field_type

◆ LocalColumnObjectType

template<class DomainSpace , class RangeSpace , class Matrix = SparseRowMatrix< typename DomainSpace::RangeFieldType >>
typedef ColumnObject< ThisType > Dune::Fem::SparseRowMatrixObject< DomainSpace, RangeSpace, Matrix >::LocalColumnObjectType

◆ LocalMatrixFactoryType

template<class DomainSpace , class RangeSpace , class Matrix = SparseRowMatrix< typename DomainSpace::RangeFieldType >>
typedef ThisType Dune::Fem::SparseRowMatrixObject< DomainSpace, RangeSpace, Matrix >::LocalMatrixFactoryType

◆ LocalMatrixStackType

template<class DomainSpace , class RangeSpace , class Matrix = SparseRowMatrix< typename DomainSpace::RangeFieldType >>
typedef Fem::ObjectStack< LocalMatrixFactoryType > Dune::Fem::SparseRowMatrixObject< DomainSpace, RangeSpace, Matrix >::LocalMatrixStackType

◆ LocalMatrixType

template<class DomainSpace , class RangeSpace , class Matrix = SparseRowMatrix< typename DomainSpace::RangeFieldType >>
typedef LocalMatrixWrapper< LocalMatrixStackType > Dune::Fem::SparseRowMatrixObject< DomainSpace, RangeSpace, Matrix >::LocalMatrixType

◆ MatrixBlockType

template<class DomainSpace , class RangeSpace , class Matrix = SparseRowMatrix< typename DomainSpace::RangeFieldType >>
typedef Dune::FieldMatrix< field_type, rangeLocalBlockSize, domainLocalBlockSize > Dune::Fem::SparseRowMatrixObject< DomainSpace, RangeSpace, Matrix >::MatrixBlockType

◆ MatrixType

template<class DomainSpace , class RangeSpace , class Matrix = SparseRowMatrix< typename DomainSpace::RangeFieldType >>
typedef Matrix Dune::Fem::SparseRowMatrixObject< DomainSpace, RangeSpace, Matrix >::MatrixType

◆ ObjectType

template<class DomainSpace , class RangeSpace , class Matrix = SparseRowMatrix< typename DomainSpace::RangeFieldType >>
typedef LocalMatrix<ThisType> Dune::Fem::SparseRowMatrixObject< DomainSpace, RangeSpace, Matrix >::ObjectType

◆ PreconditionMatrixType

template<class DomainSpace , class RangeSpace , class Matrix = SparseRowMatrix< typename DomainSpace::RangeFieldType >>
typedef MatrixType Dune::Fem::SparseRowMatrixObject< DomainSpace, RangeSpace, Matrix >::PreconditionMatrixType

◆ RangeBlockMapperType

template<class DomainSpace , class RangeSpace , class Matrix = SparseRowMatrix< typename DomainSpace::RangeFieldType >>
typedef RangeSpaceType::BlockMapperType Dune::Fem::SparseRowMatrixObject< DomainSpace, RangeSpace, Matrix >::RangeBlockMapperType

◆ RangeEntityType

template<class DomainSpace , class RangeSpace , class Matrix = SparseRowMatrix< typename DomainSpace::RangeFieldType >>
typedef RangeSpaceType::EntityType Dune::Fem::SparseRowMatrixObject< DomainSpace, RangeSpace, Matrix >::RangeEntityType

◆ RangeMapperType

template<class DomainSpace , class RangeSpace , class Matrix = SparseRowMatrix< typename DomainSpace::RangeFieldType >>
typedef NonBlockMapper< RangeBlockMapperType, RangeSpaceType::localBlockSize > Dune::Fem::SparseRowMatrixObject< DomainSpace, RangeSpace, Matrix >::RangeMapperType

◆ RangeSpaceType

template<class DomainSpace , class RangeSpace , class Matrix = SparseRowMatrix< typename DomainSpace::RangeFieldType >>
typedef RangeSpace Dune::Fem::SparseRowMatrixObject< DomainSpace, RangeSpace, Matrix >::RangeSpaceType

◆ RowEntityType

template<class DomainSpace , class RangeSpace , class Matrix = SparseRowMatrix< typename DomainSpace::RangeFieldType >>
typedef RangeSpaceType::EntityType Dune::Fem::SparseRowMatrixObject< DomainSpace, RangeSpace, Matrix >::RowEntityType

◆ size_type

template<class DomainSpace , class RangeSpace , class Matrix = SparseRowMatrix< typename DomainSpace::RangeFieldType >>
typedef MatrixType::size_type Dune::Fem::SparseRowMatrixObject< DomainSpace, RangeSpace, Matrix >::size_type

◆ ThisType

template<class DomainSpace , class RangeSpace , class Matrix = SparseRowMatrix< typename DomainSpace::RangeFieldType >>
typedef SparseRowMatrixObject< DomainSpaceType, RangeSpaceType, MatrixType > Dune::Fem::SparseRowMatrixObject< DomainSpace, RangeSpace, Matrix >::ThisType

Constructor & Destructor Documentation

◆ SparseRowMatrixObject()

template<class DomainSpace , class RangeSpace , class Matrix = SparseRowMatrix< typename DomainSpace::RangeFieldType >>
Dune::Fem::SparseRowMatrixObject< DomainSpace, RangeSpace, Matrix >::SparseRowMatrixObject ( const DomainSpaceType &  domainSpace,
const RangeSpaceType &  rangeSpace,
const SolverParameter &  param = SolverParameter() 
)
inline

construct matrix object

Member Function Documentation

◆ addBlock()

template<class DomainSpace , class RangeSpace , class Matrix = SparseRowMatrix< typename DomainSpace::RangeFieldType >>
template<class LocalBlock >
void Dune::Fem::SparseRowMatrixObject< DomainSpace, RangeSpace, Matrix >::addBlock ( const size_type  row,
const size_type  col,
const LocalBlock &  block 
)
inline

◆ addLocalMatrix()

template<class DomainSpace , class RangeSpace , class Matrix = SparseRowMatrix< typename DomainSpace::RangeFieldType >>
template<class LocalMatrix >
void Dune::Fem::SparseRowMatrixObject< DomainSpace, RangeSpace, Matrix >::addLocalMatrix ( const DomainEntityType &  domainEntity,
const RangeEntityType &  rangeEntity,
const LocalMatrix &  localMat 
)
inline

◆ addScaledLocalMatrix()

template<class DomainSpace , class RangeSpace , class Matrix = SparseRowMatrix< typename DomainSpace::RangeFieldType >>
template<class LocalMatrix , class Scalar >
void Dune::Fem::SparseRowMatrixObject< DomainSpace, RangeSpace, Matrix >::addScaledLocalMatrix ( const DomainEntityType &  domainEntity,
const RangeEntityType &  rangeEntity,
const LocalMatrix &  localMat,
const Scalar &  s 
)
inline

◆ apply()

template<class DomainSpace , class RangeSpace , class Matrix = SparseRowMatrix< typename DomainSpace::RangeFieldType >>
template<class DomainFunction , class RangeFunction >
void Dune::Fem::SparseRowMatrixObject< DomainSpace, RangeSpace, Matrix >::apply ( const DomainFunction &  arg,
RangeFunction &  dest 
) const
inline

apply matrix to discrete function

◆ clear()

template<class DomainSpace , class RangeSpace , class Matrix = SparseRowMatrix< typename DomainSpace::RangeFieldType >>
void Dune::Fem::SparseRowMatrixObject< DomainSpace, RangeSpace, Matrix >::clear ( )
inline

clear matrix

◆ compress()

template<class DomainSpace , class RangeSpace , class Matrix = SparseRowMatrix< typename DomainSpace::RangeFieldType >>
void Dune::Fem::SparseRowMatrixObject< DomainSpace, RangeSpace, Matrix >::compress ( )
inline

compress matrix to a real CRS format

◆ domainSpace()

template<class DomainSpace , class RangeSpace , class Matrix = SparseRowMatrix< typename DomainSpace::RangeFieldType >>
const DomainSpaceType & Dune::Fem::SparseRowMatrixObject< DomainSpace, RangeSpace, Matrix >::domainSpace ( ) const
inline

get domain space (i.e. space that builds the rows)

◆ exportMatrix()

template<class DomainSpace , class RangeSpace , class Matrix = SparseRowMatrix< typename DomainSpace::RangeFieldType >>
MatrixType & Dune::Fem::SparseRowMatrixObject< DomainSpace, RangeSpace, Matrix >::exportMatrix ( ) const
inline

get reference to storage object

◆ extractDiagonal()

template<class DomainSpace , class RangeSpace , class Matrix = SparseRowMatrix< typename DomainSpace::RangeFieldType >>
template<class DiscreteFunctionType >
void Dune::Fem::SparseRowMatrixObject< DomainSpace, RangeSpace, Matrix >::extractDiagonal ( DiscreteFunctionType &  diag) const
inline

extract diagonal entries from matrix into discrete function this only works for square matrices

◆ finalizeAssembly()

template<class DomainSpace , class RangeSpace , class Matrix = SparseRowMatrix< typename DomainSpace::RangeFieldType >>
void Dune::Fem::SparseRowMatrixObject< DomainSpace, RangeSpace, Matrix >::finalizeAssembly ( ) const
inlineprotected

◆ getLocalMatrix()

template<class DomainSpace , class RangeSpace , class Matrix = SparseRowMatrix< typename DomainSpace::RangeFieldType >>
template<class LocalMatrix >
void Dune::Fem::SparseRowMatrixObject< DomainSpace, RangeSpace, Matrix >::getLocalMatrix ( const DomainEntityType &  domainEntity,
const RangeEntityType &  rangeEntity,
LocalMatrix &  localMat 
) const
inline

◆ localColumn()

template<class DomainSpace , class RangeSpace , class Matrix = SparseRowMatrix< typename DomainSpace::RangeFieldType >>
LocalColumnObjectType Dune::Fem::SparseRowMatrixObject< DomainSpace, RangeSpace, Matrix >::localColumn ( const DomainEntityType &  domainEntity) const
inline

get local column

◆ localMatrix() [1/2]

template<class DomainSpace , class RangeSpace , class Matrix = SparseRowMatrix< typename DomainSpace::RangeFieldType >>
LocalMatrixType Dune::Fem::SparseRowMatrixObject< DomainSpace, RangeSpace, Matrix >::localMatrix ( ) const
inline
Deprecated:
Use TemporaryLocalMatrix in combination with {add,set,get}LocalMatrix on matrix object return local matrix object

◆ localMatrix() [2/2]

template<class DomainSpace , class RangeSpace , class Matrix = SparseRowMatrix< typename DomainSpace::RangeFieldType >>
LocalMatrixType Dune::Fem::SparseRowMatrixObject< DomainSpace, RangeSpace, Matrix >::localMatrix ( const DomainEntityType &  domainEntity,
const RangeEntityType &  rangeEntity 
) const
inline
Deprecated:
Use TemporaryLocalMatrix in combination with {add,set,get}LocalMatrix on matrix object return local matrix object

◆ matrix()

template<class DomainSpace , class RangeSpace , class Matrix = SparseRowMatrix< typename DomainSpace::RangeFieldType >>
MatrixType & Dune::Fem::SparseRowMatrixObject< DomainSpace, RangeSpace, Matrix >::matrix ( ) const
inlineprotected

get reference to storage object, for internal use

◆ newObject()

template<class DomainSpace , class RangeSpace , class Matrix = SparseRowMatrix< typename DomainSpace::RangeFieldType >>
ObjectType * Dune::Fem::SparseRowMatrixObject< DomainSpace, RangeSpace, Matrix >::newObject ( ) const
inline

interface method from LocalMatrixFactory

◆ rangeSpace()

template<class DomainSpace , class RangeSpace , class Matrix = SparseRowMatrix< typename DomainSpace::RangeFieldType >>
const RangeSpaceType & Dune::Fem::SparseRowMatrixObject< DomainSpace, RangeSpace, Matrix >::rangeSpace ( ) const
inline

get range space (i.e. space that builds the columns)

◆ reserve() [1/2]

template<class DomainSpace , class RangeSpace , class Matrix = SparseRowMatrix< typename DomainSpace::RangeFieldType >>
template<class Set >
void Dune::Fem::SparseRowMatrixObject< DomainSpace, RangeSpace, Matrix >::reserve ( const std::vector< Set > &  sparsityPattern)
inline

◆ reserve() [2/2]

template<class DomainSpace , class RangeSpace , class Matrix = SparseRowMatrix< typename DomainSpace::RangeFieldType >>
template<class Stencil >
void Dune::Fem::SparseRowMatrixObject< DomainSpace, RangeSpace, Matrix >::reserve ( const Stencil &  stencil,
bool  verbose = false 
)
inline

reserve memory

◆ resort()

template<class DomainSpace , class RangeSpace , class Matrix = SparseRowMatrix< typename DomainSpace::RangeFieldType >>
void Dune::Fem::SparseRowMatrixObject< DomainSpace, RangeSpace, Matrix >::resort ( )
inline

resort row numbering in matrix to have ascending numbering

◆ setBlock()

template<class DomainSpace , class RangeSpace , class Matrix = SparseRowMatrix< typename DomainSpace::RangeFieldType >>
template<class LocalBlock >
void Dune::Fem::SparseRowMatrixObject< DomainSpace, RangeSpace, Matrix >::setBlock ( const size_type  row,
const size_type  col,
const LocalBlock &  block 
)
inline

◆ setLocalMatrix()

template<class DomainSpace , class RangeSpace , class Matrix = SparseRowMatrix< typename DomainSpace::RangeFieldType >>
template<class LocalMatrix >
void Dune::Fem::SparseRowMatrixObject< DomainSpace, RangeSpace, Matrix >::setLocalMatrix ( const DomainEntityType &  domainEntity,
const RangeEntityType &  rangeEntity,
const LocalMatrix &  localMat 
)
inline

◆ setUnitRows()

template<class DomainSpace , class RangeSpace , class Matrix = SparseRowMatrix< typename DomainSpace::RangeFieldType >>
template<class Container >
void Dune::Fem::SparseRowMatrixObject< DomainSpace, RangeSpace, Matrix >::setUnitRows ( const Container &  unitRows,
const Container &  auxRows 
)
inline

◆ unitRow()

template<class DomainSpace , class RangeSpace , class Matrix = SparseRowMatrix< typename DomainSpace::RangeFieldType >>
void Dune::Fem::SparseRowMatrixObject< DomainSpace, RangeSpace, Matrix >::unitRow ( const size_type  row)
inline

Member Data Documentation

◆ domainLocalBlockSize

template<class DomainSpace , class RangeSpace , class Matrix = SparseRowMatrix< typename DomainSpace::RangeFieldType >>
const size_type Dune::Fem::SparseRowMatrixObject< DomainSpace, RangeSpace, Matrix >::domainLocalBlockSize = DomainSpaceType::dimRange
static

◆ domainMapper_

template<class DomainSpace , class RangeSpace , class Matrix = SparseRowMatrix< typename DomainSpace::RangeFieldType >>
DomainMapperType Dune::Fem::SparseRowMatrixObject< DomainSpace, RangeSpace, Matrix >::domainMapper_
protected

◆ domainSpace_

template<class DomainSpace , class RangeSpace , class Matrix = SparseRowMatrix< typename DomainSpace::RangeFieldType >>
const DomainSpaceType& Dune::Fem::SparseRowMatrixObject< DomainSpace, RangeSpace, Matrix >::domainSpace_
protected

◆ localMatrixStack_

template<class DomainSpace , class RangeSpace , class Matrix = SparseRowMatrix< typename DomainSpace::RangeFieldType >>
LocalMatrixStackType Dune::Fem::SparseRowMatrixObject< DomainSpace, RangeSpace, Matrix >::localMatrixStack_
mutableprotected

◆ matrix_

template<class DomainSpace , class RangeSpace , class Matrix = SparseRowMatrix< typename DomainSpace::RangeFieldType >>
MatrixType Dune::Fem::SparseRowMatrixObject< DomainSpace, RangeSpace, Matrix >::matrix_
mutableprotected

◆ rangeLocalBlockSize

template<class DomainSpace , class RangeSpace , class Matrix = SparseRowMatrix< typename DomainSpace::RangeFieldType >>
const size_type Dune::Fem::SparseRowMatrixObject< DomainSpace, RangeSpace, Matrix >::rangeLocalBlockSize = RangeSpaceType::dimRange
static

◆ rangeMapper_

template<class DomainSpace , class RangeSpace , class Matrix = SparseRowMatrix< typename DomainSpace::RangeFieldType >>
RangeMapperType Dune::Fem::SparseRowMatrixObject< DomainSpace, RangeSpace, Matrix >::rangeMapper_
protected

◆ rangeSpace_

template<class DomainSpace , class RangeSpace , class Matrix = SparseRowMatrix< typename DomainSpace::RangeFieldType >>
const RangeSpaceType& Dune::Fem::SparseRowMatrixObject< DomainSpace, RangeSpace, Matrix >::rangeSpace_
protected

◆ sequence_

template<class DomainSpace , class RangeSpace , class Matrix = SparseRowMatrix< typename DomainSpace::RangeFieldType >>
int Dune::Fem::SparseRowMatrixObject< DomainSpace, RangeSpace, Matrix >::sequence_
protected

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