1 #ifndef DUNE_FEM_COLUMNOBJECT_HH
2 #define DUNE_FEM_COLUMNOBJECT_HH
3 
4 namespace Dune
5 {
6 
7   namespace Fem
8   {
9 
10     template< class LinearOperator >
11     struct ColumnObject
12     {
13       typedef typename LinearOperator::ColumnEntityType ColumnEntityType;
14       typedef typename LinearOperator::RowEntityType RowEntityType;
15 
16       typedef typename LinearOperator::DomainSpaceType DomainSpaceType;
17       typedef typename LinearOperator::RangeSpaceType RangeSpaceType;
18 
19       typedef typename LinearOperator::LocalMatrixType LocalMatrixType;
20 
ColumnObjectDune::Fem::ColumnObject21       ColumnObject( const LinearOperator &linOp, const ColumnEntityType &colEntity )
22       :
23         linOp_( linOp ),
24         colEntity_( colEntity )
25       {}
26 
27       //! return local matrix
localMatrixDune::Fem::ColumnObject28       inline LocalMatrixType localMatrix( const RowEntityType &rowEntity ) const
29       {
30         return linOp_.localMatrix( rowEntity, colEntity_ );
31       }
32 
33       //! return domain space (i.e. space that builds the rows)
domainSpaceDune::Fem::ColumnObject34       const DomainSpaceType& domainSpace() const { return linOp_.domainSpace(); }
35 
36       //! return range space (i.e. space that builds the columns)
rangeSpaceDune::Fem::ColumnObject37       const RangeSpaceType& rangeSpace() const { return linOp_.rangeSpace(); }
38 
39     private:
40       const LinearOperator &linOp_;
41       const ColumnEntityType &colEntity_;
42     };
43 
44   } // namespace Fem
45 } // namespace Dune
46 
47 #endif //#ifndef DUNE_FEM_COLUMNOBJECT_HH
48