00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029 #ifndef THYRA_MULTI_VECTOR_DEFAULT_BASE_DECL_HPP
00030 #define THYRA_MULTI_VECTOR_DEFAULT_BASE_DECL_HPP
00031
00032 #include "Thyra_MultiVectorBaseDecl.hpp"
00033 #include "Thyra_LinearOpDefaultBaseDecl.hpp"
00034
00035 namespace Thyra {
00036
00054 template<class Scalar>
00055 class MultiVectorDefaultBase
00056 : virtual public MultiVectorBase<Scalar>
00057 , virtual protected LinearOpDefaultBase<Scalar>
00058 {
00059 public:
00060
00062 using MultiVectorBase<Scalar>::applyOp;
00064 using MultiVectorBase<Scalar>::col;
00066 using MultiVectorBase<Scalar>::subView;
00068 using LinearOpDefaultBase<Scalar>::describe;
00069
00073 Teuchos::RefCountPtr<const MultiVectorBase<Scalar> > subView( const Range1D& colRng ) const;
00075 Teuchos::RefCountPtr<MultiVectorBase<Scalar> > subView( const Range1D& colRng );
00077 Teuchos::RefCountPtr<const MultiVectorBase<Scalar> > subView( const int numCols, const int cols[] ) const;
00079 Teuchos::RefCountPtr<MultiVectorBase<Scalar> > subView( const int numCols, const int cols[] );
00085 virtual void applyOp(
00086 const RTOpPack::RTOpT<Scalar> &primary_op
00087 ,const int num_multi_vecs
00088 ,const MultiVectorBase<Scalar>*const multi_vecs[]
00089 ,const int num_targ_multi_vecs
00090 ,MultiVectorBase<Scalar>*const targ_multi_vecs[]
00091 ,RTOpPack::ReductTarget*const reduct_objs[]
00092 ,const Index primary_first_ele_offset
00093 ,const Index primary_sub_dim
00094 ,const Index primary_global_offset
00095 ,const Index secondary_first_ele_offset
00096 ,const Index secondary_sub_dim
00097 ) const;
00103 virtual void applyOp(
00104 const RTOpPack::RTOpT<Scalar> &primary_op
00105 ,const RTOpPack::RTOpT<Scalar> &secondary_op
00106 ,const int num_multi_vecs
00107 ,const MultiVectorBase<Scalar>*const multi_vecs[]
00108 ,const int num_targ_multi_vecs
00109 ,MultiVectorBase<Scalar>*const targ_multi_vecs[]
00110 ,RTOpPack::ReductTarget *reduct_obj
00111 ,const Index primary_first_ele_offset
00112 ,const Index primary_sub_dim
00113 ,const Index primary_global_offset
00114 ,const Index secondary_first_ele_offset
00115 ,const Index secondary_sub_dim
00116 ) const;
00132 virtual void acquireDetachedView(
00133 const Range1D &rowRng
00134 ,const Range1D &colRng
00135 ,RTOpPack::ConstSubMultiVectorView<Scalar> *sub_mv
00136 ) const;
00143 virtual void releaseDetachedView( RTOpPack::ConstSubMultiVectorView<Scalar>* sub_mv ) const;
00159 virtual void acquireDetachedView(
00160 const Range1D &rowRng
00161 ,const Range1D &colRng
00162 ,RTOpPack::SubMultiVectorView<Scalar> *sub_mv
00163 );
00170 virtual void commitDetachedView( RTOpPack::SubMultiVectorView<Scalar>* sub_mv );
00179 virtual Teuchos::RefCountPtr<MultiVectorBase<Scalar> > clone_mv() const;
00181
00182 };
00183
00184 }
00185
00186 #endif // THYRA_MULTI_VECTOR_DEFAULT_BASE_DECL_HPP