44 #ifndef RTOPPACK_OLD_TYPES_HPP
45 #define RTOPPACK_OLD_TYPES_HPP
47 #include "RTOpPack_Types.hpp"
48 #include "RTOpPack_SparseSubVectorT.hpp"
55 template<
class Scalar>
59 SubVectorT1B() : globalOffset_(0), subDim_(0), values_(Teuchos::null), stride_(0) {}
62 :globalOffset_(globalOffset), subDim_(subDim), values_(values,0,subDim*stride,false), stride_(stride)
80 { globalOffset_ = 0; subDim_=0; values_=Teuchos::null; stride_ = 0; }
86 Teuchos_Ordinal
subDim()
const {
return subDim_; }
88 const Scalar*
values()
const {
return values_.
get(); }
92 ptrdiff_t
stride()
const {
return stride_; }
98 !( 0 <= i && i < subDim_ ), std::logic_error
99 ,
"Error, index i="<<i<<
" does not fall in the range [0,"<<(subDim_-1)<<
"]!"
102 return values_[ stride_*i ];
105 const Scalar&
operator()(Teuchos_Ordinal i)
const {
return (*
this)[i-1]; }
107 Teuchos_Ordinal globalOffset_;
108 Teuchos_Ordinal subDim_;
115 template<
class Scalar>
122 :
SubVectorT1B<Scalar>(globalOffset, subDim, values, stride)
148 Scalar&
operator()(Teuchos_Ordinal i)
const {
return (*
this)[i-1]; }
151 template<
class Scalar>
152 void assign_entries(
const MutableSubVectorT1B<Scalar> *msv,
const SubVectorT1B<Scalar> &sv )
158 for(
int i = 1; i <= sv.subDim(); ++i ) {
165 template<
class Scalar>
170 :globalOffset_(0), subDim_(0), colOffset_(0), numSubCols_(0)
171 ,values_(NULL), leadingDim_(0)
179 :globalOffset_(globalOffset), subDim_(subDim)
180 ,colOffset_(colOffset), numSubCols_(numSubCols)
181 ,values_(values), leadingDim_(leadingDim)
208 { globalOffset_ = 0; subDim_=0; colOffset_=0, numSubCols_=0; values_=NULL; leadingDim_=0; }
214 Teuchos_Ordinal
subDim()
const {
return subDim_; }
216 Teuchos_Ordinal
colOffset()
const {
return colOffset_; }
220 const Scalar*
values()
const {
return values_; }
224 const Scalar&
operator()(Teuchos_Ordinal i, Teuchos_Ordinal j)
const
228 !( 1 <= i && i < subDim_ ), std::logic_error
229 ,
"Error, index i="<<i<<
" does not fall in the range [1,"<<(subDim_-1)<<
"]!"
232 !( 1 <= j && j <= numSubCols_ ), std::logic_error
233 ,
"Error, index j="<<j<<
" does not fall in the range [1,"<<(numSubCols_-1)<<
"]!"
236 return values_[ (i-1) + leadingDim_*(j-1) ];
243 !( 1 <= j && j <= numSubCols_ ), std::logic_error
244 ,
"Error, index j="<<j<<
" does not fall in the range [1,"<<(numSubCols_-1)<<
"]!"
250 Teuchos_Ordinal globalOffset_;
251 Teuchos_Ordinal subDim_;
252 Teuchos_Ordinal colOffset_;
253 Teuchos_Ordinal numSubCols_;
254 const Scalar *values_;
255 Teuchos_Ordinal leadingDim_;
260 template<
class Scalar>
271 :
SubMultiVectorT1B<Scalar>(globalOffset,subDim,colOffset,numSubCols,values,leadingDim)
302 Scalar&
operator()(Teuchos_Ordinal i, Teuchos_Ordinal j)
const
309 !( 1 <= j && j <= this->
numSubCols() ), std::logic_error
310 ,
"Error, index j="<<j<<
" does not fall in the range [1,"<<(this->
numSubCols())<<
"]!"
317 template<
class Scalar>
318 void assign_entries(
const MutableSubMultiVectorT1B<Scalar> *msmv,
const SubMultiVectorT1B<Scalar> &smv )
325 for( Teuchos_Ordinal j = 1; j <= smv.numSubCols(); ++j ) {
326 for( Teuchos_Ordinal i = 1; i < smv.subDim(); ++i ) {
327 (*msmv)(i,j) = smv(i,j);
337 typedef SubVectorT1B<RTOp_value_type> SubVector;
339 typedef MutableSubVectorT1B<RTOp_value_type> MutableSubVector;
341 typedef SparseSubVectorT<RTOp_value_type> SparseSubVector;
343 typedef SubMultiVectorT1B<RTOp_value_type> SubMultiVector;
345 typedef MutableSubMultiVectorT1B<RTOp_value_type> MutableSubMultiVector;
347 typedef RTOpT<RTOp_value_type> RTOp;
351 #endif // RTOPPACK_OLD_TYPES_HPP
MutableSubMultiVectorT1B()
Scalar & operator()(Teuchos_Ordinal i, Teuchos_Ordinal j) const
One-based indexing (Preconditions: values()!=NULL && (1<=i<= subDim()) && (1<=j<=numSubCols()) ...
Teuchos_Ordinal leadingDim() const
MutableSubMultiVectorT1B(Teuchos_Ordinal globalOffset, Teuchos_Ordinal subDim, Teuchos_Ordinal colOffset, Teuchos_Ordinal numSubCols, const Scalar *values, Teuchos_Ordinal leadingDim)
const Scalar & operator[](Teuchos_Ordinal i) const
Zero-based indexing (Preconditions: values()!=NULL && (0 <= i < subDim()))
#define TEUCHOS_TEST_FOR_EXCEPTION(throw_exception_test, Exception, msg)
MutableSubVectorT1B(const SubVectorView< Scalar > &sv)
const Scalar * values() const
SubMultiVectorT1B(Teuchos_Ordinal globalOffset, Teuchos_Ordinal subDim, Teuchos_Ordinal colOffset, Teuchos_Ordinal numSubCols, const Scalar *values, Teuchos_Ordinal leadingDim)
Class for a non-mutable sub-multi-vector (submatrix).
SubVectorT1B(const SubVectorT1B< Scalar > &sv)
Teuchos_Ordinal subDim() const
Scalar & operator()(Teuchos_Ordinal i) const
One-based indexing (Preconditions: values()!=NULL && (1 <= i <= subDim()))
MutableSubVectorT1B< Scalar > col(const Teuchos_Ordinal j) const
Return a MutableSubVectorT1B view of the jth sub-column (Preconditions: values()!=NULL && (1<=j<=numS...
const Teuchos::ArrayRCP< const Scalar > arcp_values() const
Teuchos_Ordinal numSubCols() const
SubVectorT1B(const ConstSubVectorView< Scalar > &sv)
Teuchos_Ordinal subDim() const
Scalar & operator[](Teuchos_Ordinal i) const
Zero-based indexing (Preconditions: values()!=NULL && (0 <= i < subDim()))
MutableSubVectorT1B(const MutableSubVectorT1B< Scalar > &sv)
const Scalar & operator()(Teuchos_Ordinal i, Teuchos_Ordinal j) const
One-based indexing (Preconditions: values()!=NULL && (1<=i<=subDim()) && (1<=j<= numSubCols()) ...
SubVectorT1B(Teuchos_Ordinal globalOffset, Teuchos_Ordinal subDim, const Scalar *values, ptrdiff_t stride)
void initialize(Teuchos_Ordinal globalOffset, Teuchos_Ordinal subDim, Teuchos_Ordinal colOffset, Teuchos_Ordinal numSubCols, const Scalar *values, Teuchos_Ordinal leadingDim)
Teuchos_Ordinal globalOffset() const
Teuchos_Ordinal globalOffset() const
void initialize(Teuchos_Ordinal globalOffset, Teuchos_Ordinal subDim, Scalar *values, ptrdiff_t stride)
void setGlobalOffset(Teuchos_Ordinal globalOffset)
MutableSubMultiVectorT1B(const MutableSubMultiVectorT1B< Scalar > &smv)
const Scalar & operator()(Teuchos_Ordinal i) const
One-based indexing (Preconditions: values()!=NULL && (1 <= i <= subDim()))
MutableSubVectorT1B(Teuchos_Ordinal globalOffset, Teuchos_Ordinal subDim, Scalar *values, ptrdiff_t stride)
Class for a mutable sub-vector.
void initialize(Teuchos_Ordinal globalOffset, Teuchos_Ordinal subDim, Teuchos_Ordinal colOffset, Teuchos_Ordinal numSubCols, const Scalar *values, Teuchos_Ordinal leadingDim)
const Teuchos::ArrayRCP< Scalar > arcp_values() const
void initialize(Teuchos_Ordinal globalOffset, Teuchos_Ordinal subDim, const Scalar *values, ptrdiff_t stride)
SubMultiVectorT1B(const SubMultiVectorT1B< Scalar > &smv)
Class for a mutable sub-vector.
#define TEUCHOS_TEST_FOR_EXCEPT(throw_exception_test)
Class for a non-mutable sub-vector.
Teuchos_Ordinal colOffset() const
SubVectorT1B< Scalar > col(const Teuchos_Ordinal j) const
Return a SubVectorT1B view of the jth sub-column (Preconditions: values()!=NULL (1<=j<=numSubCols()) ...
void setGlobalOffset(Teuchos_Ordinal globalOffset)
const Scalar * values() const