39 template <
typename DataType,
typename InnerMatrixType>
49 template <
typename DataType,
typename InnerMatrixType>
51 typename boost::call_traits<NumberType>::const_reference scale,
52 std::shared_ptr<const InnerType> m)
54 ScaledMatrixTag>::
BaseType(m->GetRows(), m->GetColumns(),
56 m_matrix(m), m_scale(scale)
60 template <
typename DataType,
typename InnerMatrixType>
64 ScaledMatrixTag>::BaseType(rhs),
65 m_matrix(rhs.m_matrix), m_scale(rhs.m_scale)
69 template <
typename DataType,
typename InnerMatrixType>
70 NekMatrix<NekMatrix<DataType, InnerMatrixType>, ScaledMatrixTag>::NekMatrix(
71 typename boost::call_traits<
72 typename NekMatrix<NekMatrix<DataType, InnerMatrixType>,
73 ScaledMatrixTag>::NumberType>::const_reference scale,
74 const NekMatrix<InnerType, ScaledMatrixTag> &rhs)
75 : NekMatrix<NekMatrix<DataType, InnerMatrixType>,
76 ScaledMatrixTag>::BaseType(rhs),
77 m_matrix(rhs.m_matrix), m_scale(scale)
81 template <
typename DataType,
typename InnerMatrixType>
82 typename NekMatrix<NekMatrix<DataType, InnerMatrixType>,
83 ScaledMatrixTag>::ConstGetValueType
85 unsigned int row,
unsigned int col)
const
87 return m_scale * m_matrix->GetValue(row, col, this->GetTransposeFlag());
90 template <
typename DataType,
typename InnerMatrixType>
92 ScaledMatrixTag>::GetStorageSize()
const
94 return m_matrix->GetStorageSize();
97 template <
typename DataType,
typename InnerMatrixType>
99 ScaledMatrixTag>::NumberType
102 return m_scale * m_matrix->Scale();
105 template <
typename DataType,
typename InnerMatrixType>
112 template <
typename DataType,
typename InnerMatrixType>
114 ScaledMatrixTag>::NumberType *
118 return m_matrix->GetRawPtr();
121 template <
typename DataType,
typename InnerMatrixType>
122 std::shared_ptr<const typename NekMatrix<NekMatrix<DataType, InnerMatrixType>,
123 ScaledMatrixTag>::InnerType>
125 ScaledMatrixTag>::GetOwnedMatrix()
const
130 template <
typename DataType,
typename InnerMatrixType>
132 ScaledMatrixTag>::GetNumberOfSubDiagonals()
const
134 return m_matrix->GetNumberOfSubDiagonals();
137 template <
typename DataType,
typename InnerMatrixType>
139 ScaledMatrixTag>::GetNumberOfSuperDiagonals()
const
141 return m_matrix->GetNumberOfSuperDiagonals();
144 template <
typename DataType,
typename InnerMatrixType>
146 ScaledMatrixTag>::const_iterator
149 return const_iterator(m_matrix->begin(this->GetTransposeFlag()), m_scale);
152 template <
typename DataType,
typename InnerMatrixType>
154 ScaledMatrixTag>::const_iterator
157 return const_iterator(m_matrix->end(this->GetTransposeFlag()), m_scale);
160 template <
typename DataType,
typename InnerMatrixType>
164 ScaledMatrixTag> &rhs)
170 template <
typename DataType,
typename InnerMatrixType>
172 NekMatrix<NekMatrix<DataType, InnerMatrixType>, ScaledMatrixTag>>
173 NekMatrix<NekMatrix<DataType, InnerMatrixType>, ScaledMatrixTag>::CreateWrapper(
174 const std::shared_ptr<
175 NekMatrix<NekMatrix<DataType, InnerMatrixType>, ScaledMatrixTag>> &rhs)
177 return std::shared_ptr<ThisType>(
new ThisType(*rhs));
180 template <
typename DataType,
typename InnerMatrixType>
181 typename boost::call_traits<
182 typename NekMatrix<NekMatrix<DataType, InnerMatrixType>,
183 ScaledMatrixTag>::NumberType>::value_type
185 unsigned int row,
unsigned int column)
const
187 return ThisType::operator()(row, column);
190 template <
typename DataType,
typename InnerMatrixType>
192 ScaledMatrixTag>::v_GetStorageSize()
const
194 return ThisType::GetStorageSize();
197 template <
typename DataType,
typename InnerMatrixType>
199 ScaledMatrixTag>::v_GetTransposeFlag()
const
201 if (this->GetRawTransposeFlag() ==
'N')
203 return m_matrix->GetTransposeFlag();
207 if (m_matrix->GetTransposeFlag() ==
'N')
218 template <
typename DataType>
283 NekMatrix<NekDouble, StandardMatrixTag>, ScaledMatrixTag>;
290 template <
typename DataType>
293 v.SetScale(-1.0 * v.Scale());
#define LIB_UTILITIES_EXPORT
std::remove_const< typename InnerType::NumberType >::type NumberType
The above copyright notice and this permission notice shall be included.
NekMatrix< InnerMatrixType, BlockMatrixTag > Transpose(NekMatrix< InnerMatrixType, BlockMatrixTag > &rhs)
void NegateInPlace(NekVector< DataType > &v)