40 template<
typename DataType,
typename InnerMatrixType>
48 template<
typename DataType,
typename InnerMatrixType>
50 boost::shared_ptr<const InnerType> m) :
51 NekMatrix<
NekMatrix< DataType, InnerMatrixType>, ScaledMatrixTag>::
BaseType(m->GetRows(), m->GetColumns(),m->GetStorageType()),
57 template<
typename DataType,
typename InnerMatrixType>
60 m_matrix(rhs.m_matrix),
66 template<
typename DataType,
typename InnerMatrixType>
67 NekMatrix<NekMatrix< DataType, InnerMatrixType>, ScaledMatrixTag>::NekMatrix(
68 typename boost::call_traits<
typename NekMatrix<NekMatrix< DataType, InnerMatrixType>, ScaledMatrixTag>::NumberType>::const_reference scale,
const NekMatrix<InnerType, ScaledMatrixTag>& rhs) :
69 NekMatrix<NekMatrix< DataType, InnerMatrixType>, ScaledMatrixTag>::BaseType(rhs),
70 m_matrix(rhs.m_matrix),
75 template<
typename DataType,
typename InnerMatrixType>
76 typename NekMatrix<NekMatrix< DataType, InnerMatrixType>, ScaledMatrixTag>::ConstGetValueType
79 return m_scale*m_matrix->GetValue(row, col, this->GetTransposeFlag());
82 template<
typename DataType,
typename InnerMatrixType>
85 return m_matrix->GetStorageSize();
88 template<
typename DataType,
typename InnerMatrixType>
89 typename NekMatrix<NekMatrix< DataType, InnerMatrixType>, ScaledMatrixTag>::NumberType
90 NekMatrix<NekMatrix< DataType, InnerMatrixType>, ScaledMatrixTag>::Scale()
const
92 return m_scale*m_matrix->Scale();
95 template<
typename DataType,
typename InnerMatrixType>
96 void NekMatrix<NekMatrix< DataType, InnerMatrixType>, ScaledMatrixTag>::SetScale(
const NumberType& value)
101 template<
typename DataType,
typename InnerMatrixType>
102 const typename NekMatrix<NekMatrix< DataType, InnerMatrixType>, ScaledMatrixTag>::NumberType*
103 NekMatrix<NekMatrix< DataType, InnerMatrixType>, ScaledMatrixTag>::GetRawPtr()
const {
return m_matrix->GetRawPtr(); }
105 template<
typename DataType,
typename InnerMatrixType>
106 boost::shared_ptr<const typename NekMatrix<NekMatrix< DataType, InnerMatrixType>, ScaledMatrixTag>::InnerType>
107 NekMatrix<NekMatrix< DataType, InnerMatrixType>, ScaledMatrixTag>::GetOwnedMatrix()
const
112 template<
typename DataType,
typename InnerMatrixType>
113 unsigned int NekMatrix<NekMatrix< DataType, InnerMatrixType>, ScaledMatrixTag>::GetNumberOfSubDiagonals()
const {
return m_matrix->GetNumberOfSubDiagonals(); }
115 template<
typename DataType,
typename InnerMatrixType>
116 unsigned int NekMatrix<NekMatrix< DataType, InnerMatrixType>, ScaledMatrixTag>::GetNumberOfSuperDiagonals()
const {
return m_matrix->GetNumberOfSuperDiagonals(); }
118 template<
typename DataType,
typename InnerMatrixType>
119 typename NekMatrix<NekMatrix< DataType, InnerMatrixType>, ScaledMatrixTag>::const_iterator
120 NekMatrix<NekMatrix< DataType, InnerMatrixType>, ScaledMatrixTag>::begin()
const {
return const_iterator(m_matrix->begin(this->GetTransposeFlag()), m_scale); }
122 template<
typename DataType,
typename InnerMatrixType>
123 typename NekMatrix<NekMatrix< DataType, InnerMatrixType>, ScaledMatrixTag>::const_iterator
124 NekMatrix<NekMatrix< DataType, InnerMatrixType>, ScaledMatrixTag>::end()
const {
return const_iterator(m_matrix->end(this->GetTransposeFlag()), m_scale); }
126 template<
typename DataType,
typename InnerMatrixType>
127 NekMatrix<NekMatrix< DataType, InnerMatrixType>, ScaledMatrixTag>
130 return NekMatrix<NekMatrix< DataType, InnerMatrixType>, ScaledMatrixTag>(rhs);
133 template<
typename DataType,
typename InnerMatrixType>
134 boost::shared_ptr<NekMatrix<NekMatrix< DataType, InnerMatrixType>, ScaledMatrixTag> >
135 NekMatrix<NekMatrix< DataType, InnerMatrixType>, ScaledMatrixTag>::CreateWrapper(
const boost::shared_ptr<NekMatrix<NekMatrix< DataType, InnerMatrixType>, ScaledMatrixTag> >& rhs)
137 return boost::shared_ptr<ThisType>(
new ThisType(*rhs));
141 template<
typename DataType,
typename InnerMatrixType>
142 typename boost::call_traits<typename NekMatrix<NekMatrix< DataType, InnerMatrixType>, ScaledMatrixTag>::NumberType>::value_type
143 NekMatrix<NekMatrix< DataType, InnerMatrixType>, ScaledMatrixTag>::v_GetValue(
unsigned int row,
unsigned int column)
const
145 return ThisType::operator()(row, column);
148 template<
typename DataType,
typename InnerMatrixType>
149 unsigned int NekMatrix<NekMatrix< DataType, InnerMatrixType>, ScaledMatrixTag>::v_GetStorageSize()
const
151 return ThisType::GetStorageSize();
154 template<
typename DataType,
typename InnerMatrixType>
155 char NekMatrix<NekMatrix< DataType, InnerMatrixType>, ScaledMatrixTag>::v_GetTransposeFlag()
const
157 if( this->GetRawTransposeFlag() ==
'N' )
159 return m_matrix->GetTransposeFlag();
163 if( m_matrix->GetTransposeFlag() ==
'N' )
177 template<
typename DataType>
232 template LIB_UTILITIES_EXPORT class NekMatrix<NekMatrix< NekDouble, StandardMatrixTag>, ScaledMatrixTag>;
236 Transpose(NekMatrix<NekMatrix<NekDouble, StandardMatrixTag>, ScaledMatrixTag>& rhs);
238 template<
typename DataType>
241 v.SetScale(-1.0*v.Scale());
boost::remove_const< typename InnerType::NumberType >::type NumberType
#define LIB_UTILITIES_EXPORT
NekMatrix< InnerMatrixType, BlockMatrixTag > Transpose(NekMatrix< InnerMatrixType, BlockMatrixTag > &rhs)
void NegateInPlace(NekVector< DataType > &v)