39 template<
typename DataType,
typename InnerMatrixType>
40 NekMatrix<NekMatrix< DataType, InnerMatrixType>, ScaledMatrixTag>::NekMatrix() :
41 NekMatrix<NekMatrix< DataType, InnerMatrixType>, ScaledMatrixTag>::
BaseType(0,0),
42 m_matrix(new typename NekMatrix<NekMatrix< DataType, InnerMatrixType>, ScaledMatrixTag>::
InnerType()),
47 template<
typename DataType,
typename InnerMatrixType>
48 NekMatrix<NekMatrix< DataType, InnerMatrixType>, ScaledMatrixTag>::NekMatrix(
typename boost::call_traits<NumberType>::const_reference scale,
49 boost::shared_ptr<const InnerType> m) :
50 NekMatrix<NekMatrix< DataType, InnerMatrixType>, ScaledMatrixTag>::
BaseType(m->GetRows(), m->GetColumns()),
56 template<
typename DataType,
typename InnerMatrixType>
57 NekMatrix<NekMatrix< DataType, InnerMatrixType>, ScaledMatrixTag>::NekMatrix(
const NekMatrix<NekMatrix< DataType, InnerMatrixType>, ScaledMatrixTag>& rhs) :
58 NekMatrix<NekMatrix< DataType, InnerMatrixType>, ScaledMatrixTag>::BaseType(rhs),
59 m_matrix(rhs.m_matrix),
65 template<
typename DataType,
typename InnerMatrixType>
66 NekMatrix<NekMatrix< DataType, InnerMatrixType>, ScaledMatrixTag>::NekMatrix(
67 typename boost::call_traits<
typename NekMatrix<NekMatrix< DataType, InnerMatrixType>, ScaledMatrixTag>::NumberType>::const_reference scale,
const NekMatrix<InnerType, ScaledMatrixTag>& rhs) :
68 NekMatrix<NekMatrix< DataType, InnerMatrixType>, ScaledMatrixTag>::BaseType(rhs),
69 m_matrix(rhs.m_matrix),
74 template<
typename DataType,
typename InnerMatrixType>
75 typename NekMatrix<NekMatrix< DataType, InnerMatrixType>, ScaledMatrixTag>::ConstGetValueType
76 NekMatrix<NekMatrix< DataType, InnerMatrixType>, ScaledMatrixTag>::operator()(
unsigned int row,
unsigned int col)
const
78 return m_scale*m_matrix->GetValue(row, col, this->GetTransposeFlag());
81 template<
typename DataType,
typename InnerMatrixType>
82 unsigned int NekMatrix<NekMatrix< DataType, InnerMatrixType>, ScaledMatrixTag>::GetStorageSize()
const
84 return m_matrix->GetStorageSize();
87 template<
typename DataType,
typename InnerMatrixType>
88 MatrixStorage NekMatrix<NekMatrix< DataType, InnerMatrixType>, ScaledMatrixTag>::GetType()
const {
return m_matrix->GetStorageType(); }
90 template<
typename DataType,
typename InnerMatrixType>
91 typename NekMatrix<NekMatrix< DataType, InnerMatrixType>, ScaledMatrixTag>::NumberType
92 NekMatrix<NekMatrix< DataType, InnerMatrixType>, ScaledMatrixTag>::Scale()
const
94 return m_scale*m_matrix->Scale();
97 template<
typename DataType,
typename InnerMatrixType>
98 void NekMatrix<NekMatrix< DataType, InnerMatrixType>, ScaledMatrixTag>::SetScale(
const NumberType& value)
103 template<
typename DataType,
typename InnerMatrixType>
104 const typename NekMatrix<NekMatrix< DataType, InnerMatrixType>, ScaledMatrixTag>::NumberType*
105 NekMatrix<NekMatrix< DataType, InnerMatrixType>, ScaledMatrixTag>::GetRawPtr()
const {
return m_matrix->GetRawPtr(); }
107 template<
typename DataType,
typename InnerMatrixType>
108 boost::shared_ptr<const typename NekMatrix<NekMatrix< DataType, InnerMatrixType>, ScaledMatrixTag>::InnerType>
109 NekMatrix<NekMatrix< DataType, InnerMatrixType>, ScaledMatrixTag>::GetOwnedMatrix()
const
114 template<
typename DataType,
typename InnerMatrixType>
115 unsigned int NekMatrix<NekMatrix< DataType, InnerMatrixType>, ScaledMatrixTag>::GetNumberOfSubDiagonals()
const {
return m_matrix->GetNumberOfSubDiagonals(); }
117 template<
typename DataType,
typename InnerMatrixType>
118 unsigned int NekMatrix<NekMatrix< DataType, InnerMatrixType>, ScaledMatrixTag>::GetNumberOfSuperDiagonals()
const {
return m_matrix->GetNumberOfSuperDiagonals(); }
120 template<
typename DataType,
typename InnerMatrixType>
121 typename NekMatrix<NekMatrix< DataType, InnerMatrixType>, ScaledMatrixTag>::const_iterator
122 NekMatrix<NekMatrix< DataType, InnerMatrixType>, ScaledMatrixTag>::begin()
const {
return const_iterator(m_matrix->begin(this->GetTransposeFlag()), m_scale); }
124 template<
typename DataType,
typename InnerMatrixType>
125 typename NekMatrix<NekMatrix< DataType, InnerMatrixType>, ScaledMatrixTag>::const_iterator
126 NekMatrix<NekMatrix< DataType, InnerMatrixType>, ScaledMatrixTag>::end()
const {
return const_iterator(m_matrix->end(this->GetTransposeFlag()), m_scale); }
128 template<
typename DataType,
typename InnerMatrixType>
129 NekMatrix<NekMatrix< DataType, InnerMatrixType>, ScaledMatrixTag>
130 NekMatrix<NekMatrix< DataType, InnerMatrixType>, ScaledMatrixTag>::CreateWrapper(
const NekMatrix<NekMatrix< DataType, InnerMatrixType>, ScaledMatrixTag>& rhs)
132 return NekMatrix<NekMatrix< DataType, InnerMatrixType>, ScaledMatrixTag>(rhs);
135 template<
typename DataType,
typename InnerMatrixType>
136 boost::shared_ptr<NekMatrix<NekMatrix< DataType, InnerMatrixType>, ScaledMatrixTag> >
137 NekMatrix<NekMatrix< DataType, InnerMatrixType>, ScaledMatrixTag>::CreateWrapper(
const boost::shared_ptr<NekMatrix<NekMatrix< DataType, InnerMatrixType>, ScaledMatrixTag> >& rhs)
139 return boost::shared_ptr<ThisType>(
new ThisType(*rhs));
143 template<
typename DataType,
typename InnerMatrixType>
144 typename boost::call_traits<typename NekMatrix<NekMatrix< DataType, InnerMatrixType>, ScaledMatrixTag>::NumberType>::value_type
145 NekMatrix<NekMatrix< DataType, InnerMatrixType>, ScaledMatrixTag>::v_GetValue(
unsigned int row,
unsigned int column)
const
147 return ThisType::operator()(row, column);
150 template<
typename DataType,
typename InnerMatrixType>
151 unsigned int NekMatrix<NekMatrix< DataType, InnerMatrixType>, ScaledMatrixTag>::v_GetStorageSize()
const
153 return ThisType::GetStorageSize();
156 template<
typename DataType,
typename InnerMatrixType>
157 MatrixStorage NekMatrix<NekMatrix< DataType, InnerMatrixType>, ScaledMatrixTag>::v_GetStorageType()
const
159 return ThisType::GetType();
162 template<
typename DataType,
typename InnerMatrixType>
163 char NekMatrix<NekMatrix< DataType, InnerMatrixType>, ScaledMatrixTag>::v_GetTransposeFlag()
const
165 if( this->GetRawTransposeFlag() ==
'N' )
167 return m_matrix->GetTransposeFlag();
171 if( m_matrix->GetTransposeFlag() ==
'N' )
185 template<
typename DataType>
186 NekMatrix<DataType, ScaledMatrixTag>
189 NekMatrix<DataType, ScaledMatrixTag> result(rhs);
240 template LIB_UTILITIES_EXPORT class NekMatrix<NekMatrix< NekDouble, StandardMatrixTag>, ScaledMatrixTag>;
244 Transpose(NekMatrix<NekMatrix<NekDouble, StandardMatrixTag>, ScaledMatrixTag>& rhs);
246 template<
typename DataType>
249 v.SetScale(-1.0*v.Scale());