Thyra Version of the Day
Loading...
Searching...
No Matches

Node subclass for MultiVectorBase subclasses that allows the insertion of an application defined scalar product. More...

#include <Thyra_MultiVectorAdapterBase_decl.hpp>

Inheritance diagram for Thyra::MultiVectorAdapterBase< Scalar >:

Pure virtual functions to override in subclasses

virtual RCP< const ScalarProdVectorSpaceBase< Scalar > > rangeScalarProdVecSpc () const =0
virtual RCP< const ScalarProdVectorSpaceBase< Scalar > > domainScalarProdVecSpc () const =0
virtual void euclideanApply (const EOpTransp M_trans, const MultiVectorBase< Scalar > &X, const Ptr< MultiVectorBase< Scalar > > &Y, const Scalar alpha, const Scalar beta) const =0
 Apply the linear operator to a multi-vector with respect to a Euclidean vector space where the scalar product is the dot product.

Overridden functions from LinearOp

RCP< const VectorSpaceBase< Scalar > > range () const
 Returns this->rangeScalarProdVecSpc().
RCP< const VectorSpaceBase< Scalar > > domain () const
 Returns this->domainScalarProdVecSpc().

Overridden protected functions from LinearOpBase

bool opSupportedImpl (EOpTransp M_trans) const
void applyImpl (const EOpTransp M_trans, const MultiVectorBase< Scalar > &X, const Ptr< MultiVectorBase< Scalar > > &Y, const Scalar alpha, const Scalar beta) const

Additional Inherited Members

virtual RCP< MultiVectorBase< Scalar > > clone_mv () const
void assign (Scalar alpha)
 V = alpha.
void assign (const MultiVectorBase< Scalar > &mv)
 V = mv.
void scale (Scalar alpha)
void update (Scalar alpha, const MultiVectorBase< Scalar > &mv)
void linear_combination (const ArrayView< const Scalar > &alpha, const ArrayView< const Ptr< const MultiVectorBase< Scalar > > > &mv, const Scalar &beta)
 Y.col(j)(i) = beta*Y.col(j)(i) + sum( alpha[k]*X[k].col(j)(i),
void dots (const MultiVectorBase< Scalar > &mv, const ArrayView< Scalar > &prods) const
 Column-wise Euclidean dot product.
void norms_1 (const ArrayView< typename ScalarTraits< Scalar >::magnitudeType > &norms) const
 Column-wise 1-norms.
void norms_2 (const ArrayView< typename ScalarTraits< Scalar >::magnitudeType > &norms) const
 Column-wise 2-norms.
void norms_inf (const ArrayView< typename ScalarTraits< Scalar >::magnitudeType > &norms) const
 Column-wise infinity-norms.
RCP< const VectorBase< Scalar > > col (Ordinal j) const
 Calls colImpl().
RCP< VectorBase< Scalar > > col (Ordinal j)
 Calls nonconstColImpl().
RCP< const MultiVectorBase< Scalar > > subView (const Range1D &colRng) const
 Calls contigSubViewImpl().
RCP< MultiVectorBase< Scalar > > subView (const Range1D &colRng)
 Calls nonconstContigSubViewImpl().
RCP< const MultiVectorBase< Scalar > > subView (const ArrayView< const int > &cols) const
 nonContigSubViewImpl().
RCP< MultiVectorBase< Scalar > > subView (const ArrayView< const int > &cols)
 nonconstNonContigSubViewImpl().
void applyOp (const RTOpPack::RTOpT< Scalar > &primary_op, const ArrayView< const Ptr< const MultiVectorBase< Scalar > > > &multi_vecs, const ArrayView< const Ptr< MultiVectorBase< Scalar > > > &targ_multi_vecs, const ArrayView< const Ptr< RTOpPack::ReductTarget > > &reduct_objs, const Ordinal primary_global_offset) const
 Calls mvMultiReductApplyOpImpl().
void applyOp (const RTOpPack::RTOpT< Scalar > &primary_op, const RTOpPack::RTOpT< Scalar > &secondary_op, const ArrayView< const Ptr< const MultiVectorBase< Scalar > > > &multi_vecs, const ArrayView< const Ptr< MultiVectorBase< Scalar > > > &targ_multi_vecs, const Ptr< RTOpPack::ReductTarget > &reduct_obj, const Ordinal primary_global_offset) const
 mvSingleReductApplyOpImpl().
void acquireDetachedView (const Range1D &rowRng, const Range1D &colRng, RTOpPack::ConstSubMultiVectorView< Scalar > *sub_mv) const
 Calls acquireDetachedMultiVectorViewImpl().
void releaseDetachedView (RTOpPack::ConstSubMultiVectorView< Scalar > *sub_mv) const
 Calls releaseDetachedMultiVectorViewImpl().
void acquireDetachedView (const Range1D &rowRng, const Range1D &colRng, RTOpPack::SubMultiVectorView< Scalar > *sub_mv)
 Calls acquireNonconstDetachedMultiVectorViewImpl().
void commitDetachedView (RTOpPack::SubMultiVectorView< Scalar > *sub_mv)
 Calls commitNonconstDetachedMultiVectorViewImpl().
RCP< const LinearOpBase< Scalar > > clone () const
 This function is simply overridden to return this->clone_mv().
bool opSupported (EOpTransp M_trans) const
 Return if the M_trans operation of apply() is supported or not.
void apply (const EOpTransp M_trans, const MultiVectorBase< Scalar > &X, const Ptr< MultiVectorBase< Scalar > > &Y, const Scalar alpha, const Scalar beta) const
 Apply the linear operator to a multi-vector : Y = alpha*op(M)*X + beta*Y.
bool rowStatIsSupported (const RowStatLinearOpBaseUtils::ERowStat rowStat) const
 Determine if a given row stat is supported.
void getRowStat (const RowStatLinearOpBaseUtils::ERowStat rowStat, const Ptr< VectorBase< Scalar > > &rowStatVec) const
 Get some statistics about a supported row.
bool supportsScaleLeft () const
 Determines if this objects supports left scaling.
bool supportsScaleRight () const
 Determines if this objects supports right scaling.
void scaleLeft (const VectorBase< Scalar > &row_scaling)
 Left scales operator with diagonal scaling operator.
void scaleRight (const VectorBase< Scalar > &col_scaling)
 Right scales operator with diagonal scaling operator.
virtual void assignImpl (Scalar alpha)
 Default implementation of assign(scalar) using RTOps.
virtual void assignMultiVecImpl (const MultiVectorBase< Scalar > &mv)
 Default implementation of assign(MV) using RTOps.
virtual void scaleImpl (Scalar alpha)
 Default implementation of scale using RTOps.
virtual void updateImpl (Scalar alpha, const MultiVectorBase< Scalar > &mv)
 Default implementation of update using RTOps.
virtual void linearCombinationImpl (const ArrayView< const Scalar > &alpha, const ArrayView< const Ptr< const MultiVectorBase< Scalar > > > &mv, const Scalar &beta)
 Default implementation of linear_combination using RTOps.
virtual void dotsImpl (const MultiVectorBase< Scalar > &mv, const ArrayView< Scalar > &prods) const
 Default implementation of dots using RTOps.
virtual void norms1Impl (const ArrayView< typename ScalarTraits< Scalar >::magnitudeType > &norms) const
 Default implementation of norms_1 using RTOps.
virtual void norms2Impl (const ArrayView< typename ScalarTraits< Scalar >::magnitudeType > &norms) const
 Default implementation of norms_2 using RTOps.
virtual void normsInfImpl (const ArrayView< typename ScalarTraits< Scalar >::magnitudeType > &norms) const
 Default implementation of norms_inf using RTOps.
RCP< const MultiVectorBase< Scalar > > contigSubViewImpl (const Range1D &colRng) const
RCP< MultiVectorBase< Scalar > > nonconstContigSubViewImpl (const Range1D &colRng)
RCP< const MultiVectorBase< Scalar > > nonContigSubViewImpl (const ArrayView< const int > &cols) const
RCP< MultiVectorBase< Scalar > > nonconstNonContigSubViewImpl (const ArrayView< const int > &cols)
virtual void mvMultiReductApplyOpImpl (const RTOpPack::RTOpT< Scalar > &primary_op, const ArrayView< const Ptr< const MultiVectorBase< Scalar > > > &multi_vecs, const ArrayView< const Ptr< MultiVectorBase< Scalar > > > &targ_multi_vecs, const ArrayView< const Ptr< RTOpPack::ReductTarget > > &reduct_objs, const Ordinal primary_global_offset) const
virtual void mvSingleReductApplyOpImpl (const RTOpPack::RTOpT< Scalar > &primary_op, const RTOpPack::RTOpT< Scalar > &secondary_op, const ArrayView< const Ptr< const MultiVectorBase< Scalar > > > &multi_vecs, const ArrayView< const Ptr< MultiVectorBase< Scalar > > > &targ_multi_vecs, const Ptr< RTOpPack::ReductTarget > &reduct_obj, const Ordinal primary_global_offset) const
virtual void acquireDetachedMultiVectorViewImpl (const Range1D &rowRng, const Range1D &colRng, RTOpPack::ConstSubMultiVectorView< Scalar > *sub_mv) const
virtual void releaseDetachedMultiVectorViewImpl (RTOpPack::ConstSubMultiVectorView< Scalar > *sub_mv) const
virtual void acquireNonconstDetachedMultiVectorViewImpl (const Range1D &rowRng, const Range1D &colRng, RTOpPack::SubMultiVectorView< Scalar > *sub_mv)
virtual void commitNonconstDetachedMultiVectorViewImpl (RTOpPack::SubMultiVectorView< Scalar > *sub_mv)
virtual RCP< const VectorBase< Scalar > > colImpl (Ordinal j) const
 Return a non-changeable view of a constituent column vector.
virtual RCP< VectorBase< Scalar > > nonconstColImpl (Ordinal j)=0
 Return a changeable view of a constituent column vector.
virtual bool rowStatIsSupportedImpl (const RowStatLinearOpBaseUtils::ERowStat rowStat) const
virtual void getRowStatImpl (const RowStatLinearOpBaseUtils::ERowStat rowStat, const Ptr< VectorBase< Scalar > > &rowStatVec) const
virtual bool supportsScaleLeftImpl () const
virtual bool supportsScaleRightImpl () const
virtual void scaleLeftImpl (const VectorBase< Scalar > &row_scaling)
virtual void scaleRightImpl (const VectorBase< Scalar > &col_scaling)
void absRowSum (const Teuchos::Ptr< Thyra::VectorBase< Scalar > > &output) const
void absColSum (const Teuchos::Ptr< Thyra::VectorBase< Scalar > > &output) const
std::string description () const
 Default description that gives the label, type, and dimenstion .
void describe (Teuchos::FancyOStream &out, const Teuchos::EVerbosityLevel verbLevel) const
 Generates a default outputting for all linear operators.

Detailed Description

template<class Scalar>
class Thyra::MultiVectorAdapterBase< Scalar >

Node subclass for MultiVectorBase subclasses that allows the insertion of an application defined scalar product.

Most concrete MultiVector adapter subclasses should derive from this base subclass in order to allow for the incorporate of application-defined scalar products.

ToDo: Finish Documentation!

Definition at line 35 of file Thyra_MultiVectorAdapterBase_decl.hpp.

Member Function Documentation

◆ rangeScalarProdVecSpc()

template<class Scalar>
virtual RCP< const ScalarProdVectorSpaceBase< Scalar > > Thyra::MultiVectorAdapterBase< Scalar >::rangeScalarProdVecSpc ( ) const
pure virtual

◆ domainScalarProdVecSpc()

template<class Scalar>
virtual RCP< const ScalarProdVectorSpaceBase< Scalar > > Thyra::MultiVectorAdapterBase< Scalar >::domainScalarProdVecSpc ( ) const
pure virtual

◆ euclideanApply()

template<class Scalar>
virtual void Thyra::MultiVectorAdapterBase< Scalar >::euclideanApply ( const EOpTransp M_trans,
const MultiVectorBase< Scalar > & X,
const Ptr< MultiVectorBase< Scalar > > & Y,
const Scalar alpha,
const Scalar beta ) const
pure virtual

Apply the linear operator to a multi-vector with respect to a Euclidean vector space where the scalar product is the dot product.

Preconditions:

  • this->applySupports(conj)==true

Implemented in Thyra::SpmdMultiVectorDefaultBase< Scalar >, and Thyra::TpetraMultiVector< Scalar, LocalOrdinal, GlobalOrdinal, Node >.

◆ range()

template<class Scalar>
RCP< const VectorSpaceBase< Scalar > > Thyra::MultiVectorAdapterBase< Scalar >::range ( ) const
virtual

Returns this->rangeScalarProdVecSpc().

Implements Thyra::LinearOpBase< Scalar >.

Definition at line 26 of file Thyra_MultiVectorAdapterBase_def.hpp.

◆ domain()

template<class Scalar>
RCP< const VectorSpaceBase< Scalar > > Thyra::MultiVectorAdapterBase< Scalar >::domain ( ) const
virtual

◆ opSupportedImpl()

template<class Scalar>
bool Thyra::MultiVectorAdapterBase< Scalar >::opSupportedImpl ( EOpTransp M_trans) const
protectedvirtual

◆ applyImpl()

template<class Scalar>
void Thyra::MultiVectorAdapterBase< Scalar >::applyImpl ( const EOpTransp M_trans,
const MultiVectorBase< Scalar > & X,
const Ptr< MultiVectorBase< Scalar > > & Y,
const Scalar alpha,
const Scalar beta ) const
protectedvirtual

The documentation for this class was generated from the following files: