MatrixSpace::Block: Added "dereference" operator for conversion to sub-tensor

This commit is contained in:
Henry Weller
2016-03-15 22:36:56 +00:00
parent 01cdde52b9
commit d7d331f471
2 changed files with 28 additions and 0 deletions

View File

@ -117,6 +117,9 @@ public:
//- Construct for the given matrix //- Construct for the given matrix
inline ConstBlock(const msType& matrix); inline ConstBlock(const msType& matrix);
//- Construct and return the sub-ensor corresponding to this block
inline SubTensor operator()() const;
//- (i, j) const element access operator //- (i, j) const element access operator
inline const Cmpt& operator() inline const Cmpt& operator()
( (
@ -178,6 +181,9 @@ public:
const VectorSpace<VSForm, Cmpt, SubTensor::nRows>& v const VectorSpace<VSForm, Cmpt, SubTensor::nRows>& v
); );
//- Construct and return the sub-ensor corresponding to this block
inline SubTensor operator()() const;
//- (i, j) const element access operator //- (i, j) const element access operator
inline const Cmpt& operator() inline const Cmpt& operator()
( (

View File

@ -359,6 +359,17 @@ inline Cmpt& Foam::MatrixSpace<Form, Cmpt, Nrows, Ncols>::operator()
} }
template<class Form, class Cmpt, Foam::direction Nrows, Foam::direction Ncols>
template<class SubTensor, Foam::direction BRowStart, Foam::direction BColStart>
inline SubTensor
Foam::MatrixSpace<Form, Cmpt, Nrows, Ncols>::
ConstBlock<SubTensor, BRowStart, BColStart>::
operator()() const
{
return *this;
}
template<class Form, class Cmpt, Foam::direction Nrows, Foam::direction Ncols> template<class Form, class Cmpt, Foam::direction Nrows, Foam::direction Ncols>
template<class SubTensor, Foam::direction BRowStart, Foam::direction BColStart> template<class SubTensor, Foam::direction BRowStart, Foam::direction BColStart>
inline const Cmpt& inline const Cmpt&
@ -370,6 +381,17 @@ operator()(const direction i, const direction j) const
} }
template<class Form, class Cmpt, Foam::direction Nrows, Foam::direction Ncols>
template<class SubTensor, Foam::direction BRowStart, Foam::direction BColStart>
inline SubTensor
Foam::MatrixSpace<Form, Cmpt, Nrows, Ncols>::
Block<SubTensor, BRowStart, BColStart>::
operator()() const
{
return *this;
}
template<class Form, class Cmpt, Foam::direction Nrows, Foam::direction Ncols> template<class Form, class Cmpt, Foam::direction Nrows, Foam::direction Ncols>
template<class SubTensor, Foam::direction BRowStart, Foam::direction BColStart> template<class SubTensor, Foam::direction BRowStart, Foam::direction BColStart>
inline const Cmpt& inline const Cmpt&