dune-fem  2.4.1-rc
Classes | Public Types | Public Member Functions | Protected Types | Protected Member Functions | Protected Attributes | List of all members
Dune::Fem::SparseRowMatrixObject< DomainSpace, RangeSpace, Matrix > Class Template Reference

#include </local/tomalk/somewhere/tmp/dune-fem/dune/fem/operator/matrix/spmatrix.hh>

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

Classes

class  LocalMatrix
 LocalMatrix. More...
 
struct  LocalMatrixTraits
 

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 PreconditionMatrixType
 
typedef LocalMatrix< ThisTypeObjectType
 type of local matrix More...
 
typedef ThisType LocalMatrixFactoryType
 
typedef Fem::ObjectStack< LocalMatrixFactoryTypeLocalMatrixStackType
 
typedef LocalMatrixWrapper< LocalMatrixStackTypeLocalMatrixType
 type of local matrix More...
 
typedef ColumnObject< ThisTypeLocalColumnObjectType
 

Public Member Functions

 SparseRowMatrixObject (const DomainSpaceType &domainSpace, const RangeSpaceType &rangeSpace, const std::string &paramfile)
 construct matrix object More...
 
 SparseRowMatrixObject (const DomainSpaceType &domainSpace, const RangeSpaceType &rangeSpace, const MatrixParameter &param=SparseRowMatrixParameter())
 construct matrix object More...
 
const DomainSpaceTypedomainSpace () const
 return domain space (i.e. space that builds the rows) More...
 
const RangeSpaceTyperangeSpace () const
 return range space (i.e. space that builds the columns) More...
 
MatrixTypematrix () const
 return reference to stability matrix More...
 
ObjectTypenewObject () const
 interface method from LocalMatrixFactory More...
 
LocalMatrixType localMatrix (const DomainEntityType &domainEntity, const RangeEntityType &rangeEntity) const
 return local matrix More...
 
LocalColumnObjectType localColumn (const DomainEntityType &domainEntity) const
 
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 ()
 resize all matrices and clear them More...
 
bool hasPreconditionMatrix () const
 return true if precoditioning matrix is provided More...
 
const PreconditionMatrixTypepreconditionMatrix () const
 return reference to preconditioner More...
 
template<class Stencil >
void reserve (const Stencil &stencil, bool verbose=false)
 reserve memory for assemble based on the provided stencil More...
 
template<class DomainFunction , class RangeFunction >
void solveUMF (const DomainFunction &arg, RangeFunction &dest) const
 
template<class DomainFunction , class RangeFunction >
void solveUMFNonSymmetric (const DomainFunction &arg, RangeFunction &dest) const
 
template<class DomainFunction , class RangeFunction >
void apply (const DomainFunction &arg, RangeFunction &dest) const
 apply matrix to discrete function More...
 
void apply (const AdaptiveDiscreteFunction< DomainSpaceType > &arg, AdaptiveDiscreteFunction< RangeSpaceType > &dest) const
 apply matrix to discrete function More...
 
template<class DomainFunction , class RangeFunction >
void apply_t (const RangeFunction &arg, DomainFunction &dest) const
 apply transposed matrix to discrete function More...
 
void apply_t (const AdaptiveDiscreteFunction< RangeSpaceType > &arg, AdaptiveDiscreteFunction< DomainSpaceType > &dest) const
 apply transposed matrix to discrete function More...
 
double ddotOEM (const double *v, const double *w) const
 mult method of matrix object used by oem solver More...
 
void multOEM (const double *arg, double *dest) const
 mult method of matrix object used by oem solver More...
 
void resort ()
 resort row numbering in matrix to have ascending numbering More...
 
void createPreconditionMatrix ()
 
template<class DiscreteFunctionType >
void extractDiagonal (DiscreteFunctionType &diag) const
 extract diagonal entries from matrix into discrete function More...
 
template<class HangingNodesType >
void changeHangingNodes (const HangingNodesType &hangingNodes)
 delete all row belonging to a hanging node and rebuild them More...
 

Protected Types

typedef DomainSpaceType::GridType GridType
 

Protected Member Functions

template<class HangingNodesType , class ColumnVectorType >
void insertHangingRow (const HangingNodesType &hangingNodes, const int row, const ColumnVectorType &colVec)
 insert row to be a row for a hanging node More...
 

Protected Attributes

const DomainSpaceTypedomainSpace_
 
const RangeSpaceTyperangeSpace_
 
DomainMapperType domainMapper_
 
RangeMapperType rangeMapper_
 
int sequence_
 
MatrixType matrix_
 
bool preconditioning_
 
LocalMatrixStackType localMatrixStack_
 

Member Typedef Documentation

template<class DomainSpace, class RangeSpace, class Matrix>
typedef DomainSpaceType :: EntityType Dune::Fem::SparseRowMatrixObject< DomainSpace, RangeSpace, Matrix >::ColumnEntityType
template<class DomainSpace, class RangeSpace, class Matrix>
typedef DomainSpaceType :: BlockMapperType Dune::Fem::SparseRowMatrixObject< DomainSpace, RangeSpace, Matrix >::DomainBlockMapperType
template<class DomainSpace, class RangeSpace, class Matrix>
typedef DomainSpaceType :: EntityType Dune::Fem::SparseRowMatrixObject< DomainSpace, RangeSpace, Matrix >::DomainEntityType
template<class DomainSpace, class RangeSpace, class Matrix>
typedef NonBlockMapper< DomainBlockMapperType, DomainSpaceType :: localBlockSize > Dune::Fem::SparseRowMatrixObject< DomainSpace, RangeSpace, Matrix >::DomainMapperType
template<class DomainSpace, class RangeSpace, class Matrix>
typedef DomainSpace Dune::Fem::SparseRowMatrixObject< DomainSpace, RangeSpace, Matrix >::DomainSpaceType
template<class DomainSpace, class RangeSpace, class Matrix>
typedef DomainSpaceType :: GridType Dune::Fem::SparseRowMatrixObject< DomainSpace, RangeSpace, Matrix >::GridType
protected
template<class DomainSpace, class RangeSpace, class Matrix>
typedef ColumnObject< ThisType > Dune::Fem::SparseRowMatrixObject< DomainSpace, RangeSpace, Matrix >::LocalColumnObjectType
template<class DomainSpace, class RangeSpace, class Matrix>
typedef ThisType Dune::Fem::SparseRowMatrixObject< DomainSpace, RangeSpace, Matrix >::LocalMatrixFactoryType
template<class DomainSpace, class RangeSpace, class Matrix>
typedef Fem :: ObjectStack< LocalMatrixFactoryType > Dune::Fem::SparseRowMatrixObject< DomainSpace, RangeSpace, Matrix >::LocalMatrixStackType
template<class DomainSpace, class RangeSpace, class Matrix>
typedef LocalMatrixWrapper< LocalMatrixStackType > Dune::Fem::SparseRowMatrixObject< DomainSpace, RangeSpace, Matrix >::LocalMatrixType

type of local matrix

template<class DomainSpace, class RangeSpace, class Matrix>
typedef Matrix Dune::Fem::SparseRowMatrixObject< DomainSpace, RangeSpace, Matrix >::MatrixType
template<class DomainSpace, class RangeSpace, class Matrix>
typedef LocalMatrix<ThisType> Dune::Fem::SparseRowMatrixObject< DomainSpace, RangeSpace, Matrix >::ObjectType

type of local matrix

template<class DomainSpace, class RangeSpace, class Matrix>
typedef MatrixType Dune::Fem::SparseRowMatrixObject< DomainSpace, RangeSpace, Matrix >::PreconditionMatrixType
template<class DomainSpace, class RangeSpace, class Matrix>
typedef RangeSpaceType :: BlockMapperType Dune::Fem::SparseRowMatrixObject< DomainSpace, RangeSpace, Matrix >::RangeBlockMapperType
template<class DomainSpace, class RangeSpace, class Matrix>
typedef RangeSpaceType :: EntityType Dune::Fem::SparseRowMatrixObject< DomainSpace, RangeSpace, Matrix >::RangeEntityType
template<class DomainSpace, class RangeSpace, class Matrix>
typedef NonBlockMapper< RangeBlockMapperType, RangeSpaceType :: localBlockSize > Dune::Fem::SparseRowMatrixObject< DomainSpace, RangeSpace, Matrix >::RangeMapperType
template<class DomainSpace, class RangeSpace, class Matrix>
typedef RangeSpace Dune::Fem::SparseRowMatrixObject< DomainSpace, RangeSpace, Matrix >::RangeSpaceType
template<class DomainSpace, class RangeSpace, class Matrix>
typedef RangeSpaceType :: EntityType Dune::Fem::SparseRowMatrixObject< DomainSpace, RangeSpace, Matrix >::RowEntityType

Constructor & Destructor Documentation

template<class DomainSpace, class RangeSpace, class Matrix>
Dune::Fem::SparseRowMatrixObject< DomainSpace, RangeSpace, Matrix >::SparseRowMatrixObject ( const DomainSpaceType domainSpace,
const RangeSpaceType rangeSpace,
const std::string &  paramfile 
)
inline

construct matrix object

Deprecated:
"SparseRowMatrixObject(...,string) is deprecated. Use SparseRowMatrixObject(string,DomainSpace,RangeSpace,MatrixParameter) instead"
template<class DomainSpace, class RangeSpace, class Matrix>
Dune::Fem::SparseRowMatrixObject< DomainSpace, RangeSpace, Matrix >::SparseRowMatrixObject ( const DomainSpaceType domainSpace,
const RangeSpaceType rangeSpace,
const MatrixParameter param = SparseRowMatrixParameter() 
)
inline

construct matrix object

Member Function Documentation

template<class DomainSpace, class RangeSpace, class Matrix>
template<class LocalMatrix >
void Dune::Fem::SparseRowMatrixObject< DomainSpace, RangeSpace, Matrix >::addLocalMatrix ( const DomainEntityType domainEntity,
const RangeEntityType rangeEntity,
const LocalMatrix localMat 
)
inline
template<class DomainSpace, class RangeSpace, class Matrix>
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
template<class DomainSpace, class RangeSpace, class Matrix>
template<class DomainFunction , class RangeFunction >
void Dune::Fem::SparseRowMatrixObject< DomainSpace, RangeSpace, Matrix >::apply ( const DomainFunction &  arg,
RangeFunction &  dest 
) const
inline
template<class DomainSpace, class RangeSpace, class Matrix>
void Dune::Fem::SparseRowMatrixObject< DomainSpace, RangeSpace, Matrix >::apply ( const AdaptiveDiscreteFunction< DomainSpaceType > &  arg,
AdaptiveDiscreteFunction< RangeSpaceType > &  dest 
) const
inline

apply matrix to discrete function

template<class DomainSpace, class RangeSpace, class Matrix>
template<class DomainFunction , class RangeFunction >
void Dune::Fem::SparseRowMatrixObject< DomainSpace, RangeSpace, Matrix >::apply_t ( const RangeFunction &  arg,
DomainFunction &  dest 
) const
inline

apply transposed matrix to discrete function

template<class DomainSpace, class RangeSpace, class Matrix>
void Dune::Fem::SparseRowMatrixObject< DomainSpace, RangeSpace, Matrix >::apply_t ( const AdaptiveDiscreteFunction< RangeSpaceType > &  arg,
AdaptiveDiscreteFunction< DomainSpaceType > &  dest 
) const
inline

apply transposed matrix to discrete function

template<class DomainSpace, class RangeSpace, class Matrix>
template<class HangingNodesType >
void Dune::Fem::SparseRowMatrixObject< DomainSpace, RangeSpace, Matrix >::changeHangingNodes ( const HangingNodesType &  hangingNodes)
inline

delete all row belonging to a hanging node and rebuild them

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

resize all matrices and clear them

template<class DomainSpace, class RangeSpace, class Matrix>
void Dune::Fem::SparseRowMatrixObject< DomainSpace, RangeSpace, Matrix >::createPreconditionMatrix ( )
inline
template<class DomainSpace, class RangeSpace, class Matrix>
double Dune::Fem::SparseRowMatrixObject< DomainSpace, RangeSpace, Matrix >::ddotOEM ( const double *  v,
const double *  w 
) const
inlinevirtual

mult method of matrix object used by oem solver

Implements Dune::Fem::OEMMatrix.

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

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

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

extract diagonal entries from matrix into discrete function

template<class DomainSpace, class RangeSpace, class Matrix>
template<class LocalMatrix >
void Dune::Fem::SparseRowMatrixObject< DomainSpace, RangeSpace, Matrix >::getLocalMatrix ( const DomainEntityType domainEntity,
const RangeEntityType rangeEntity,
LocalMatrix localMat 
) const
inline
template<class DomainSpace, class RangeSpace, class Matrix>
bool Dune::Fem::SparseRowMatrixObject< DomainSpace, RangeSpace, Matrix >::hasPreconditionMatrix ( ) const
inline

return true if precoditioning matrix is provided

template<class DomainSpace, class RangeSpace, class Matrix>
template<class HangingNodesType , class ColumnVectorType >
void Dune::Fem::SparseRowMatrixObject< DomainSpace, RangeSpace, Matrix >::insertHangingRow ( const HangingNodesType &  hangingNodes,
const int  row,
const ColumnVectorType &  colVec 
)
inlineprotected

insert row to be a row for a hanging node

template<class DomainSpace, class RangeSpace, class Matrix>
LocalColumnObjectType Dune::Fem::SparseRowMatrixObject< DomainSpace, RangeSpace, Matrix >::localColumn ( const DomainEntityType domainEntity) const
inline
template<class DomainSpace, class RangeSpace, class Matrix>
LocalMatrixType Dune::Fem::SparseRowMatrixObject< DomainSpace, RangeSpace, Matrix >::localMatrix ( const DomainEntityType domainEntity,
const RangeEntityType rangeEntity 
) const
inline

return local matrix

template<class DomainSpace, class RangeSpace, class Matrix>
MatrixType& Dune::Fem::SparseRowMatrixObject< DomainSpace, RangeSpace, Matrix >::matrix ( ) const
inline

return reference to stability matrix

template<class DomainSpace, class RangeSpace, class Matrix>
void Dune::Fem::SparseRowMatrixObject< DomainSpace, RangeSpace, Matrix >::multOEM ( const double *  arg,
double *  dest 
) const
inlinevirtual

mult method of matrix object used by oem solver

Implements Dune::Fem::OEMMatrix.

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

interface method from LocalMatrixFactory

template<class DomainSpace, class RangeSpace, class Matrix>
const PreconditionMatrixType& Dune::Fem::SparseRowMatrixObject< DomainSpace, RangeSpace, Matrix >::preconditionMatrix ( ) const
inline

return reference to preconditioner

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

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

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

reserve memory for assemble based on the provided stencil

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

resort row numbering in matrix to have ascending numbering

template<class DomainSpace, class RangeSpace, class Matrix>
template<class LocalMatrix >
void Dune::Fem::SparseRowMatrixObject< DomainSpace, RangeSpace, Matrix >::setLocalMatrix ( const DomainEntityType domainEntity,
const RangeEntityType rangeEntity,
const LocalMatrix localMat 
)
inline
template<class DomainSpace, class RangeSpace, class Matrix>
template<class DomainFunction , class RangeFunction >
void Dune::Fem::SparseRowMatrixObject< DomainSpace, RangeSpace, Matrix >::solveUMF ( const DomainFunction &  arg,
RangeFunction &  dest 
) const
inline
Deprecated:
"Use directly Dune::Fem::UMFPACKOp instead of solveUMF"
template<class DomainSpace, class RangeSpace, class Matrix>
template<class DomainFunction , class RangeFunction >
void Dune::Fem::SparseRowMatrixObject< DomainSpace, RangeSpace, Matrix >::solveUMFNonSymmetric ( const DomainFunction &  arg,
RangeFunction &  dest 
) const
inline
Deprecated:
"Use directly Dune::Fem::UMFPACKOp instead of solveUMFNonSymmetric"

Member Data Documentation

template<class DomainSpace, class RangeSpace, class Matrix>
DomainMapperType Dune::Fem::SparseRowMatrixObject< DomainSpace, RangeSpace, Matrix >::domainMapper_
protected
template<class DomainSpace, class RangeSpace, class Matrix>
const DomainSpaceType& Dune::Fem::SparseRowMatrixObject< DomainSpace, RangeSpace, Matrix >::domainSpace_
protected
template<class DomainSpace, class RangeSpace, class Matrix>
LocalMatrixStackType Dune::Fem::SparseRowMatrixObject< DomainSpace, RangeSpace, Matrix >::localMatrixStack_
mutableprotected
template<class DomainSpace, class RangeSpace, class Matrix>
MatrixType Dune::Fem::SparseRowMatrixObject< DomainSpace, RangeSpace, Matrix >::matrix_
mutableprotected
template<class DomainSpace, class RangeSpace, class Matrix>
bool Dune::Fem::SparseRowMatrixObject< DomainSpace, RangeSpace, Matrix >::preconditioning_
protected
template<class DomainSpace, class RangeSpace, class Matrix>
RangeMapperType Dune::Fem::SparseRowMatrixObject< DomainSpace, RangeSpace, Matrix >::rangeMapper_
protected
template<class DomainSpace, class RangeSpace, class Matrix>
const RangeSpaceType& Dune::Fem::SparseRowMatrixObject< DomainSpace, RangeSpace, Matrix >::rangeSpace_
protected
template<class DomainSpace, class RangeSpace, class Matrix>
int Dune::Fem::SparseRowMatrixObject< DomainSpace, RangeSpace, Matrix >::sequence_
protected

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