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