10#ifndef THYRA_MULTI_VECTOR_BASE_HPP
11#define THYRA_MULTI_VECTOR_BASE_HPP
13#include "Thyra_MultiVectorBase_decl.hpp"
14#include "Thyra_LinearOpBase.hpp"
15#include "Thyra_VectorSpaceBase.hpp"
17#include "Thyra_VectorBase.hpp"
18#include "Thyra_VectorStdOps_decl.hpp"
51 case RowStatLinearOpBaseUtils::ROW_STAT_INV_ROW_SUM:
52 case RowStatLinearOpBaseUtils::ROW_STAT_ROW_SUM:
53 case RowStatLinearOpBaseUtils::ROW_STAT_INV_COL_SUM:
54 case RowStatLinearOpBaseUtils::ROW_STAT_COL_SUM:
69 case RowStatLinearOpBaseUtils::ROW_STAT_INV_ROW_SUM:
73 case RowStatLinearOpBaseUtils::ROW_STAT_ROW_SUM:
77 case RowStatLinearOpBaseUtils::ROW_STAT_INV_COL_SUM:
81 case RowStatLinearOpBaseUtils::ROW_STAT_COL_SUM:
106template<
class Scalar>
111 for(Ordinal i=0;i<this->
domain()->dim();i++)
115template<
class Scalar>
130 for(Ordinal i=0;i<this->
domain()->dim();i++)
136template<
class Scalar>
141 using Teuchos::ptrFromRef;
142 using Teuchos::tuple;
146 for (Ordinal i = 0; i < abs_mv->domain()->dim(); ++i)
147 abs_mv->col(i)->abs(*this->
col(i));
155template<
class Scalar>
159 using Teuchos::tuple;
160 using Teuchos::ptrInArg;
169 for (Ordinal i = 0; i <
norms.size(); ++i)
171 output->commitDetachedView(&view);
const ArrayRCP< Scalar > values() const
RCP< const LinearOpBase< Scalar > > scale(const Scalar &scalar, const RCP< const LinearOpBase< Scalar > > &Op, const std::string &label="")
Build an implicit const scaled linear operator.
void apply(const LinearOpBase< Scalar > &M, const EOpTransp M_trans, const MultiVectorBase< Scalar > &X, const Ptr< MultiVectorBase< Scalar > > &Y, const Scalar alpha=static_cast< Scalar >(1.0), const Scalar beta=static_cast< Scalar >(0.0))
Non-member function call for M.apply(...).
virtual RCP< const VectorSpaceBase< Scalar > > range() const =0
Return a smart pointer for the range space for this operator.
virtual RCP< const VectorSpaceBase< Scalar > > domain() const =0
Return a smart pointer for the domain space for this operator.
Interface for a collection of column vectors called a multi-vector.
virtual void scaleLeftImpl(const VectorBase< Scalar > &row_scaling)
virtual bool supportsScaleLeftImpl() const
virtual bool supportsScaleRightImpl() const
RCP< const VectorBase< Scalar > > col(Ordinal j) const
Calls colImpl().
virtual RCP< VectorBase< Scalar > > nonconstColImpl(Ordinal j)=0
Return a changeable view of a constituent column vector.
void norms(const MultiVectorBase< Scalar > &V, const ArrayView< typename ScalarTraits< Scalar >::magnitudeType > &norms)
Column-wise multi-vector natural norm.
virtual void scaleRightImpl(const VectorBase< Scalar > &col_scaling)
void absColSum(const Teuchos::Ptr< Thyra::VectorBase< Scalar > > &output) const
RCP< const LinearOpBase< Scalar > > clone() const
This function is simply overridden to return this->clone_mv().
virtual RCP< MultiVectorBase< Scalar > > clone_mv() const =0
Clone the multi-vector object (if supported).
virtual void getRowStatImpl(const RowStatLinearOpBaseUtils::ERowStat rowStat, const Ptr< VectorBase< Scalar > > &rowStatVec) const
void absRowSum(const Teuchos::Ptr< Thyra::VectorBase< Scalar > > &output) const
virtual RCP< const VectorBase< Scalar > > colImpl(Ordinal j) const
Return a non-changeable view of a constituent column vector.
void norms_1(const ArrayView< typename ScalarTraits< Scalar >::magnitudeType > &norms) const
Column-wise 1-norms.
virtual bool rowStatIsSupportedImpl(const RowStatLinearOpBaseUtils::ERowStat rowStat) const
Abstract interface for finite-dimensional dense vectors.
void ele_wise_scale(const VectorBase< Scalar > &x, const Ptr< VectorBase< Scalar > > &y)
Element-wise scaling: y(i) *= x(i), i = 0...y->space()->dim()-1.
void put_scalar(const Scalar &alpha, const Ptr< VectorBase< Scalar > > &y)
Assign all elements to a scalar: y(i) = alpha, i = 0...y->space()->dim()-1.
void reciprocal(const VectorBase< Scalar > &x, const Ptr< VectorBase< Scalar > > &y)
Element-wise reciprocal: y(i) = 1/x(i), i = 0...y->space()->dim()-1.
void acquireDetachedView(const Range1D &rng, RTOpPack::ConstSubVectorView< Scalar > *sub_vec) const
Calls acquireDetachedVectorViewImpl().
RCP< VectorBase< Scalar > > createMember(const RCP< const VectorSpaceBase< Scalar > > &vs, const std::string &label="")
Create a vector member from the vector space.
RCP< MultiVectorBase< Scalar > > createMembers(const RCP< const VectorSpaceBase< Scalar > > &vs, int numMembers, const std::string &label="")
Create a set of vector members (a MultiVectorBase) from the vector space.
#define TEUCHOS_ASSERT(assertion_test)
#define TEUCHOS_TEST_FOR_EXCEPT(throw_exception_test)
NOTRANS
Type for the dimension of a vector space. `**/ typedef Teuchos::Ordinal Ordinal;.
TypeTo as(const TypeFrom &t)
#define TEUCHOS_UNREACHABLE_RETURN(dummyReturnVal)