Thyra
Version of the Day
|
Base interface for product vectors. More...
#include <Thyra_ProductVectorBase.hpp>
Public Member Functions | |
virtual RCP< VectorBase< Scalar > > | getNonconstVectorBlock (const int k)=0 |
Returns a non-persisting non-const view of the (zero-based) k th block vector. More... | |
virtual RCP< const VectorBase < Scalar > > | getVectorBlock (const int k) const =0 |
Returns a non-persisting const view of the (zero-based) k th block vector. More... | |
Public Member Functions inherited from Thyra::VectorBase< Scalar > | |
void | assign (const VectorBase< Scalar > &x) |
Vector assignment: More... | |
void | randomize (Scalar l, Scalar u) |
Random vector generation: More... | |
void | update (Scalar alpha, const VectorBase< Scalar > &x) |
AXPY: More... | |
void | linear_combination (const ArrayView< const Scalar > &alpha, const ArrayView< const Ptr< const VectorBase< Scalar > > > &x, const Scalar &beta) |
Linear combination: More... | |
Scalar | dot (const VectorBase< Scalar > &x) const |
Euclidean dot product: result = x^H * this . More... | |
Teuchos::ScalarTraits< Scalar > ::magnitudeType | norm_1 () const |
One (1) norm: result = ||v||1 . More... | |
Teuchos::ScalarTraits< Scalar > ::magnitudeType | norm_2 () const |
Euclidean (2) norm: result = ||v||2 . More... | |
Teuchos::ScalarTraits< Scalar > ::magnitudeType | norm_2 (const VectorBase< Scalar > &x) const |
Weighted Euclidean (2) norm: result = ||v||2 . More... | |
Teuchos::ScalarTraits< Scalar > ::magnitudeType | norm_inf () const |
Infinity norm: result = ||v||inf . More... | |
virtual RCP< const VectorSpaceBase< Scalar > > | space () const =0 |
Return a smart pointer to the vector space that this vector belongs to. More... | |
void | applyOp (const RTOpPack::RTOpT< Scalar > &op, const ArrayView< const Ptr< const VectorBase< Scalar > > > &vecs, const ArrayView< const Ptr< VectorBase< Scalar > > > &targ_vecs, const Ptr< RTOpPack::ReductTarget > &reduct_obj, const Ordinal global_offset) const |
Calls applyOpImpl(). More... | |
virtual RCP< VectorBase< Scalar > > | clone_v () const =0 |
Returns a seprate cloned copy of *this vector with the same values but different storage. More... | |
void | acquireDetachedView (const Range1D &rng, RTOpPack::ConstSubVectorView< Scalar > *sub_vec) const |
Calls acquireDetachedVectorViewImpl(). More... | |
void | releaseDetachedView (RTOpPack::ConstSubVectorView< Scalar > *sub_vec) const |
Calls releaseDetachedVectorViewImpl(). More... | |
void | acquireDetachedView (const Range1D &rng, RTOpPack::SubVectorView< Scalar > *sub_vec) |
Calls acquireNonconstDetachedVectorViewImpl(). More... | |
void | commitDetachedView (RTOpPack::SubVectorView< Scalar > *sub_vec) |
Calls commitDetachedView(). More... | |
void | setSubVector (const RTOpPack::SparseSubVectorT< Scalar > &sub_vec) |
Calls setSubVectorImpl(). More... | |
Public Member Functions inherited from Thyra::MultiVectorBase< Scalar > | |
void | assign (Scalar alpha) |
V = alpha. More... | |
void | assign (const MultiVectorBase< Scalar > &mv) |
V = mv. More... | |
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), More... | |
void | dots (const MultiVectorBase< Scalar > &mv, const ArrayView< Scalar > &prods) const |
Column-wise Euclidean dot product. More... | |
void | norms_1 (const ArrayView< typename ScalarTraits< Scalar >::magnitudeType > &norms) const |
Column-wise 1-norms. More... | |
void | norms_2 (const ArrayView< typename ScalarTraits< Scalar >::magnitudeType > &norms) const |
Column-wise 2-norms. More... | |
void | norms_inf (const ArrayView< typename ScalarTraits< Scalar >::magnitudeType > &norms) const |
Column-wise infinity-norms. More... | |
RCP< const VectorBase< Scalar > > | col (Ordinal j) const |
Calls colImpl(). More... | |
RCP< VectorBase< Scalar > > | col (Ordinal j) |
Calls nonconstColImpl(). More... | |
RCP< const MultiVectorBase < Scalar > > | subView (const Range1D &colRng) const |
Calls contigSubViewImpl(). More... | |
RCP< MultiVectorBase< Scalar > > | subView (const Range1D &colRng) |
Calls nonconstContigSubViewImpl(). More... | |
RCP< const MultiVectorBase < Scalar > > | subView (const ArrayView< const int > &cols) const |
nonContigSubViewImpl(). More... | |
RCP< MultiVectorBase< Scalar > > | subView (const ArrayView< const int > &cols) |
nonconstNonContigSubViewImpl(). More... | |
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(). More... | |
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(). More... | |
void | acquireDetachedView (const Range1D &rowRng, const Range1D &colRng, RTOpPack::ConstSubMultiVectorView< Scalar > *sub_mv) const |
Calls acquireDetachedMultiVectorViewImpl(). More... | |
void | releaseDetachedView (RTOpPack::ConstSubMultiVectorView< Scalar > *sub_mv) const |
Calls releaseDetachedMultiVectorViewImpl(). More... | |
void | acquireDetachedView (const Range1D &rowRng, const Range1D &colRng, RTOpPack::SubMultiVectorView< Scalar > *sub_mv) |
Calls acquireNonconstDetachedMultiVectorViewImpl(). More... | |
void | commitDetachedView (RTOpPack::SubMultiVectorView< Scalar > *sub_mv) |
Calls commitNonconstDetachedMultiVectorViewImpl(). More... | |
virtual RCP< MultiVectorBase < Scalar > > | clone_mv () const =0 |
Clone the multi-vector object (if supported). More... | |
RCP< const LinearOpBase< Scalar > > | clone () const |
This function is simply overridden to return this->clone_mv() . More... | |
Public Member Functions inherited from Thyra::LinearOpBase< Scalar > | |
virtual RCP< const VectorSpaceBase< Scalar > > | range () const =0 |
Return a smart pointer for the range space for this operator. More... | |
virtual RCP< const VectorSpaceBase< Scalar > > | domain () const =0 |
Return a smart pointer for the domain space for this operator. More... | |
bool | opSupported (EOpTransp M_trans) const |
Return if the M_trans operation of apply() is supported or not. More... | |
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 . More... | |
Public Member Functions inherited from Thyra::RowStatLinearOpBase< Scalar > | |
bool | rowStatIsSupported (const RowStatLinearOpBaseUtils::ERowStat rowStat) const |
Determine if a given row stat is supported. More... | |
void | getRowStat (const RowStatLinearOpBaseUtils::ERowStat rowStat, const Ptr< VectorBase< Scalar > > &rowStatVec) const |
Get some statistics about a supported row. More... | |
Public Member Functions inherited from Thyra::ScaledLinearOpBase< Scalar > | |
bool | supportsScaleLeft () const |
Determines if this objects supports left scaling. More... | |
bool | supportsScaleRight () const |
Determines if this objects supports right scaling. More... | |
void | scaleLeft (const VectorBase< Scalar > &row_scaling) |
Left scales operator with diagonal scaling operator. More... | |
void | scaleRight (const VectorBase< Scalar > &col_scaling) |
Right scales operator with diagonal scaling operator. More... | |
Public Member Functions inherited from Thyra::ProductMultiVectorBase< Scalar > | |
virtual Teuchos::RCP< const ProductVectorSpaceBase< Scalar > > | productSpace () const =0 |
Returns the associated product vector space that represents the range. More... | |
virtual bool | blockIsConst (const int k) const =0 |
Return if the kth multi-vector block is const-only. More... | |
virtual Teuchos::RCP < MultiVectorBase< Scalar > > | getNonconstMultiVectorBlock (const int k)=0 |
Returns a non-persisting non-const view of the zero-based kth block multi-vector. More... | |
virtual Teuchos::RCP< const MultiVectorBase< Scalar > > | getMultiVectorBlock (const int k) const =0 |
Returns a non-persisting const view of the (zero-based) kth block multi-vector. More... | |
Related Functions | |
(Note that these are not member functions.) | |
template<class Scalar > | |
RCP< Thyra::ProductVectorBase < Scalar > > | nonconstProductVectorBase (const RCP< Thyra::VectorBase< Scalar > > &v) |
Dynamic cast from a VectorBase to a ProductVectorBase object and thow exception if this fails. More... | |
template<class Scalar > | |
RCP< const Thyra::ProductVectorBase < Scalar > > | productVectorBase (const RCP< const Thyra::VectorBase< Scalar > > &v) |
Dynamic cast from a const VectorBase to a const ProductVectorBase object and thow exception if this fails. More... | |
Related Functions inherited from Thyra::VectorBase< Scalar > | |
template<class Scalar > | |
void | applyOp (const RTOpPack::RTOpT< Scalar > &op, const ArrayView< const Ptr< const VectorBase< Scalar > > > &vecs, const ArrayView< const Ptr< VectorBase< Scalar > > > &targ_vecs, const Ptr< RTOpPack::ReductTarget > &reduct_obj, const Ordinal global_offset=0) |
Apply a reduction/transformation operator over a set of vectors: op(op(v[0]...v[nv-1],z[0]...z[nz-1]),(*reduct_obj)) -> z[0]...z[nz-1],(*reduct_obj) . More... | |
template<class Scalar > | |
Scalar | sum (const VectorBase< Scalar > &v) |
Sum of vector elements: result = sum( v(i), i = 0...v.space()->dim()-1 ) . More... | |
template<class Scalar > | |
Scalar | scalarProd (const VectorBase< Scalar > &x, const VectorBase< Scalar > &y) |
Scalar product result = <x,y> . More... | |
template<class Scalar > | |
Scalar | inner (const VectorBase< Scalar > &x, const VectorBase< Scalar > &y) |
Inner/Scalar product result = <x,y> . More... | |
template<class Scalar > | |
Teuchos::ScalarTraits< Scalar > ::magnitudeType | norm (const VectorBase< Scalar > &v) |
Natural norm: result = sqrt(<v,v>) . More... | |
template<class Scalar > | |
Teuchos::ScalarTraits< Scalar > ::magnitudeType | norm_1 (const VectorBase< Scalar > &v) |
One (1) norm: result = ||v||1 . More... | |
template<class Scalar > | |
Teuchos::ScalarTraits< Scalar > ::magnitudeType | norm_2 (const VectorBase< Scalar > &v) |
Euclidean (2) norm: result = ||v||2 . More... | |
template<class Scalar > | |
Teuchos::ScalarTraits< Scalar > ::magnitudeType | norm_2 (const VectorBase< Scalar > &w, const VectorBase< Scalar > &v) |
Weighted Euclidean (2) norm: result = sqrt( sum( w(i)*conj(v(i))*v(i)) ) . More... | |
template<class Scalar > | |
Teuchos::ScalarTraits< Scalar > ::magnitudeType | norm_inf (const VectorBase< Scalar > &v_rhs) |
Infinity norm: result = ||v||inf . More... | |
template<class Scalar > | |
Scalar | dot (const VectorBase< Scalar > &x, const VectorBase< Scalar > &y) |
Dot product: result = conj(x)'*y . More... | |
template<class Scalar > | |
Scalar | get_ele (const VectorBase< Scalar > &v, Ordinal i) |
Get single element: result = v(i) . More... | |
template<class Scalar > | |
void | set_ele (Ordinal i, Scalar alpha, const Ptr< VectorBase< Scalar > > &v) |
Set single element: v(i) = alpha . More... | |
template<class Scalar > | |
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 . More... | |
template<class Scalar > | |
void | copy (const VectorBase< Scalar > &x, const Ptr< VectorBase< Scalar > > &y) |
Vector assignment: y(i) = x(i), i = 0...y->space()->dim()-1 . More... | |
template<class Scalar > | |
void | add_scalar (const Scalar &alpha, const Ptr< VectorBase< Scalar > > &y) |
Add a scalar to all elements: y(i) += alpha, i = 0...y->space()->dim()-1 . More... | |
template<class Scalar > | |
void | scale (const Scalar &alpha, const Ptr< VectorBase< Scalar > > &y) |
Scale all elements by a scalar: y(i) *= alpha, i = 0...y->space()->dim()-1 . More... | |
template<class Scalar > | |
void | abs (const VectorBase< Scalar > &x, const Ptr< VectorBase< Scalar > > &y) |
Element-wise absolute value: y(i) = abs(x(i)), i = 0...y->space()->dim()-1 . More... | |
template<class Scalar > | |
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 . More... | |
template<class Scalar > | |
void | ele_wise_prod (const Scalar &alpha, const VectorBase< Scalar > &x, const VectorBase< Scalar > &v, const Ptr< VectorBase< Scalar > > &y) |
Element-wise product update: y(i) += alpha * x(i) * v(i), i = 0...y->space()->dim()-1 . More... | |
template<class Scalar > | |
void | pair_wise_max (const Scalar &alpha, const VectorBase< Scalar > &x, const VectorBase< Scalar > &v, const Ptr< VectorBase< Scalar > > &y) |
Element-wise maximum: y(i) = alpha * max(x(i), v(i)), i = 0...y->space()->dim()-1 . More... | |
template<class Scalar > | |
void | ele_wise_conj_prod (const Scalar &alpha, const VectorBase< Scalar > &x, const VectorBase< Scalar > &v, const Ptr< VectorBase< Scalar > > &y) |
Element-wise conjugate product update: y(i) += alpha * conj(x(i)) * v(i), i = 0...y->space()->dim()-1 . More... | |
template<class Scalar > | |
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 . More... | |
template<class Scalar > | |
void | Vp_StVtV (const Ptr< VectorBase< Scalar > > &y, const Scalar &alpha, const VectorBase< Scalar > &x, const VectorBase< Scalar > &v) |
Element-wise product update: y(i) += alpha * x(i) * v(i), i = 0...y->space()->dim()-1 . More... | |
template<class Scalar > | |
void | ele_wise_prod_update (const Scalar &alpha, const VectorBase< Scalar > &x, const Ptr< VectorBase< Scalar > > &y) |
Element-wise product update: y(i) *= alpha * x(i), i = 0...y->space()->dim()-1 . More... | |
template<class Scalar > | |
void | pair_wise_max_update (const Scalar &alpha, const VectorBase< Scalar > &x, const Ptr< VectorBase< Scalar > > &y) |
Element-wise maximum update: y(i) = alpha * max(x(i), y(i)), i = 0...y->space()->dim()-1 . More... | |
template<class Scalar > | |
void | Vt_StV (const Ptr< VectorBase< Scalar > > &y, const Scalar &alpha, const VectorBase< Scalar > &x) |
Element-wise product update: y(i) *= alpha * x(i), i = 0...y->space()->dim()-1 . More... | |
template<class Scalar > | |
void | ele_wise_divide (const Scalar &alpha, const VectorBase< Scalar > &x, const VectorBase< Scalar > &v, const Ptr< VectorBase< Scalar > > &y) |
Element-wise division update: y(i) += alpha * x(i) / v(i), i = 0...y->space()->dim()-1 . More... | |
template<class Scalar > | |
void | linear_combination (const ArrayView< const Scalar > &alpha, const ArrayView< const Ptr< const VectorBase< Scalar > > > &x, const Scalar &beta, const Ptr< VectorBase< Scalar > > &y) |
Linear combination: y(i) = beta*y(i) + sum( alpha[k]*x[k](i), k=0...m-1 ), i = 0...y->space()->dim()-1 . More... | |
template<class Scalar > | |
void | seed_randomize (unsigned int s) |
Seed the random number generator used in randomize() . More... | |
template<class Scalar > | |
void | randomize (Scalar l, Scalar u, const Ptr< VectorBase< Scalar > > &v) |
Random vector generation: v(i) = rand(l,u), , i = 1...v->space()->dim() . More... | |
template<class Scalar > | |
void | assign (const Ptr< VectorBase< Scalar > > &y, const Scalar &alpha) |
Assign all elements to a scalar: y(i) = alpha, i = 0...y->space()->dim()-1 . More... | |
template<class Scalar > | |
void | assign (const Ptr< VectorBase< Scalar > > &y, const VectorBase< Scalar > &x) |
Vector assignment: y(i) = x(i), i = 0...y->space()->dim()-1 . More... | |
template<class Scalar > | |
void | Vp_S (const Ptr< VectorBase< Scalar > > &y, const Scalar &alpha) |
Add a scalar to all elements: y(i) += alpha, i = 0...y->space()->dim()-1 . More... | |
template<class Scalar > | |
void | Vt_S (const Ptr< VectorBase< Scalar > > &y, const Scalar &alpha) |
Scale all elements by a scalar: y(i) *= alpha, i = 0...y->space()->dim()-1 . More... | |
template<class Scalar > | |
void | V_StV (const Ptr< VectorBase< Scalar > > &y, const Scalar &alpha, const VectorBase< Scalar > &x) |
Assign scaled vector: y(i) = alpha * x(i), i = 0...y->space()->dim()-1 . More... | |
template<class Scalar > | |
void | Vp_StV (const Ptr< VectorBase< Scalar > > &y, const Scalar &alpha, const VectorBase< Scalar > &x) |
AXPY: y(i) = alpha * x(i) + y(i), i = 0...y->space()->dim()-1 . More... | |
template<class Scalar > | |
void | Vp_V (const Ptr< VectorBase< Scalar > > &y, const VectorBase< Scalar > &x, const Scalar &beta=static_cast< Scalar >(1.0)) |
y(i) = x(i) + beta*y(i), i = 0...y->space()->dim()-1 . More... | |
template<class Scalar > | |
void | V_V (const Ptr< VectorBase< Scalar > > &y, const VectorBase< Scalar > &x) |
y(i) = x(i), i = 0...y->space()->dim()-1 . More... | |
template<class Scalar > | |
void | V_S (const Ptr< VectorBase< Scalar > > &y, const Scalar &alpha) |
y(i) = alpha, i = 0...y->space()->dim()-1 . More... | |
template<class Scalar > | |
void | V_VpV (const Ptr< VectorBase< Scalar > > &z, const VectorBase< Scalar > &x, const VectorBase< Scalar > &y) |
z(i) = x(i) + y(i), i = 0...z->space()->dim()-1 . More... | |
template<class Scalar > | |
void | V_VmV (const Ptr< VectorBase< Scalar > > &z, const VectorBase< Scalar > &x, const VectorBase< Scalar > &y) |
z(i) = x(i) - y(i), i = 0...z->space()->dim()-1 . More... | |
template<class Scalar > | |
void | V_StVpV (const Ptr< VectorBase< Scalar > > &z, const Scalar &alpha, const VectorBase< Scalar > &x, const VectorBase< Scalar > &y) |
z(i) = alpha*x(i) + y(i), i = 0...z->space()->dim()-1 . More... | |
template<class Scalar > | |
void | V_VpStV (const Ptr< VectorBase< Scalar > > &z, const VectorBase< Scalar > &x, const Scalar &alpha, const VectorBase< Scalar > &y) |
z(i) = x(i) + alpha*y(i), i = 0...z->space()->dim()-1 . More... | |
template<class Scalar > | |
void | V_StVpStV (const Ptr< VectorBase< Scalar > > &z, const Scalar &alpha, const VectorBase< Scalar > &x, const Scalar &beta, const VectorBase< Scalar > &y) |
z(i) = alpha*x(i) + beta*y(i), i = 0...z->space()->dim()-1 . More... | |
template<class Scalar > | |
Scalar | min (const VectorBase< Scalar > &x) |
Min element: result = min{ x(i), i = 0...x.space()->dim()-1 } . More... | |
template<class Scalar > | |
void | min (const VectorBase< Scalar > &x, const Ptr< Scalar > &maxEle, const Ptr< Ordinal > &maxIndex) |
Min element and its index: Returns maxEle = x(k) and maxIndex = k such that x(k) <= x(i) for all i = 0...x.space()->dim()-1 . More... | |
template<class Scalar > | |
void | minGreaterThanBound (const VectorBase< Scalar > &x, const Scalar &bound, const Ptr< Scalar > &minEle, const Ptr< Ordinal > &minIndex) |
Minimum element greater than some bound and its index: Returns minEle = x(k) and minIndex = k such that x(k) <= x(i) for all i where x(i) > bound . More... | |
template<class Scalar > | |
Scalar | max (const VectorBase< Scalar > &x) |
Max element: result = max{ x(i), i = 1...n } . More... | |
template<class Scalar > | |
void | max (const VectorBase< Scalar > &x, const Ptr< Scalar > &maxEle, const Ptr< Ordinal > &maxIndex) |
Max element and its index: Returns maxEle = x(k) and maxIndex = k such that x(k) >= x(i) for i = 0...x.space()->dim()-1 . More... | |
template<class Scalar > | |
void | maxLessThanBound (const VectorBase< Scalar > &x, const Scalar &bound, const Ptr< Scalar > &maxEle, const Ptr< Ordinal > &maxIndex) |
Max element less than bound and its index: Returns maxEle = x(k) and maxIndex = k such that x(k) >= x(i) for all i where x(i) < bound . More... | |
Related Functions inherited from Thyra::MultiVectorBase< Scalar > | |
template<class Scalar > | |
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=0) |
Apply a reduction/transformation operator column by column and return an array of the reduction objects. More... | |
template<class Scalar > | |
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=0) |
Apply a reduction/transformation operator column by column and reduce the intermediate reduction objects into one reduction object. More... | |
template<class Scalar > | |
void | norms (const MultiVectorBase< Scalar > &V, const ArrayView< typename ScalarTraits< Scalar >::magnitudeType > &norms) |
Column-wise multi-vector natural norm. More... | |
template<class Scalar , class NormOp > | |
void | reductions (const MultiVectorBase< Scalar > &V, const NormOp &op, const ArrayView< typename ScalarTraits< Scalar >::magnitudeType > &norms) |
Column-wise multi-vector reductions. More... | |
template<class Scalar > | |
void | norms_1 (const MultiVectorBase< Scalar > &V, const ArrayView< typename ScalarTraits< Scalar >::magnitudeType > &norms) |
Column-wise multi-vector one norm. More... | |
template<class Scalar > | |
void | norms_2 (const MultiVectorBase< Scalar > &V, const ArrayView< typename ScalarTraits< Scalar >::magnitudeType > &norms) |
Column-wise multi-vector 2 (Euclidean) norm. More... | |
template<class Scalar > | |
void | norms_inf (const MultiVectorBase< Scalar > &V, const ArrayView< typename ScalarTraits< Scalar >::magnitudeType > &norms) |
Column-wise multi-vector infinity norm. More... | |
template<class Scalar > | |
Array< typename ScalarTraits < Scalar >::magnitudeType > | norms_inf (const MultiVectorBase< Scalar > &V) |
Column-wise multi-vector infinity norm. More... | |
template<class Scalar > | |
void | dots (const MultiVectorBase< Scalar > &V1, const MultiVectorBase< Scalar > &V2, const ArrayView< Scalar > &dots) |
Multi-vector dot product. More... | |
template<class Scalar > | |
void | sums (const MultiVectorBase< Scalar > &V, const ArrayView< Scalar > &sums) |
Multi-vector column sum. More... | |
template<class Scalar > | |
ScalarTraits< Scalar > ::magnitudeType | norm_1 (const MultiVectorBase< Scalar > &V) |
Take the induced matrix one norm of a multi-vector. More... | |
template<class Scalar > | |
void | scale (Scalar alpha, const Ptr< MultiVectorBase< Scalar > > &V) |
V = alpha*V. More... | |
template<class Scalar > | |
void | scaleUpdate (const VectorBase< Scalar > &a, const MultiVectorBase< Scalar > &U, const Ptr< MultiVectorBase< Scalar > > &V) |
A*U + V -> V (where A is a diagonal matrix with diagonal a). More... | |
template<class Scalar > | |
void | assign (const Ptr< MultiVectorBase< Scalar > > &V, Scalar alpha) |
V = alpha. More... | |
template<class Scalar > | |
void | assign (const Ptr< MultiVectorBase< Scalar > > &V, const MultiVectorBase< Scalar > &U) |
V = U. More... | |
template<class Scalar > | |
void | update (Scalar alpha, const MultiVectorBase< Scalar > &U, const Ptr< MultiVectorBase< Scalar > > &V) |
alpha*U + V -> V. More... | |
template<class Scalar > | |
void | update (const ArrayView< const Scalar > &alpha, Scalar beta, const MultiVectorBase< Scalar > &U, const Ptr< MultiVectorBase< Scalar > > &V) |
alpha[j]*beta*U(j) + V(j) - > V(j), for j = 0 ,,, More... | |
template<class Scalar > | |
void | update (const MultiVectorBase< Scalar > &U, const ArrayView< const Scalar > &alpha, Scalar beta, const Ptr< MultiVectorBase< Scalar > > &V) |
U(j) + alpha[j]*beta*V(j) - > V(j), for j = 0 ,,, U.domain()->dim()-1. More... | |
template<class Scalar > | |
void | linear_combination (const ArrayView< const Scalar > &alpha, const ArrayView< const Ptr< const MultiVectorBase< Scalar > > > &X, const Scalar &beta, const Ptr< MultiVectorBase< Scalar > > &Y) |
Y.col(j)(i) = beta*Y.col(j)(i) + sum( alpha[k]*X[k].col(j)(i), k=0...m-1 ) , for i = 0...Y->range()->dim()-1 , j = 0...Y->domain()->dim()-1 . More... | |
template<class Scalar > | |
void | randomize (Scalar l, Scalar u, const Ptr< MultiVectorBase< Scalar > > &V) |
Generate a random multi-vector with elements uniformly distributed elements. More... | |
template<class Scalar > | |
void | Vt_S (const Ptr< MultiVectorBase< Scalar > > &Z, const Scalar &alpha) |
Z(i,j) *= alpha, i = 0...Z->range()->dim()-1, j = 0...Z->domain()->dim()-1 . More... | |
template<class Scalar > | |
void | Vp_S (const Ptr< MultiVectorBase< Scalar > > &Z, const Scalar &alpha) |
Z(i,j) += alpha, i = 0...Z->range()->dim()-1, j = 0...Z->domain()->dim()-1 . More... | |
template<class Scalar > | |
void | Vp_V (const Ptr< MultiVectorBase< Scalar > > &Z, const MultiVectorBase< Scalar > &X) |
Z(i,j) += X(i,j), i = 0...Z->range()->dim()-1, j = 0...Z->domain()->dim()-1 . More... | |
template<class Scalar > | |
void | V_VpV (const Ptr< MultiVectorBase< Scalar > > &Z, const MultiVectorBase< Scalar > &X, const MultiVectorBase< Scalar > &Y) |
Z(i,j) = X(i,j) + Y(i,j), i = 0...Z->range()->dim()-1, j = 0...Z->domain()->dim()-1 . More... | |
template<class Scalar > | |
void | V_VmV (const Ptr< MultiVectorBase< Scalar > > &Z, const MultiVectorBase< Scalar > &X, const MultiVectorBase< Scalar > &Y) |
Z(i,j) = X(i,j) - Y(i,j), i = 0...Z->range()->dim()-1, j = 0...Z->domain()->dim()-1 . More... | |
template<class Scalar > | |
void | V_StVpV (const Ptr< MultiVectorBase< Scalar > > &Z, const Scalar &alpha, const MultiVectorBase< Scalar > &X, const MultiVectorBase< Scalar > &Y) |
Z(i,j) = alpha*X(i,j) + Y(i), i = 0...z->space()->dim()-1 , , j = 0...Z->domain()->dim()-1. More... | |
Related Functions inherited from Thyra::LinearOpBase< Scalar > | |
template<class Scalar > | |
bool | isFullyUninitialized (const LinearOpBase< Scalar > &M) |
Determines if a linear operator is in the "Fully Uninitialized" state or not. More... | |
template<class Scalar > | |
bool | isPartiallyInitialized (const LinearOpBase< Scalar > &M) |
Determines if a linear operator is in the "Partially Initialized" state or not. More... | |
template<class Scalar > | |
bool | isFullyInitialized (const LinearOpBase< Scalar > &M) |
Determines if a linear operator is in the "Fully Initialized" state or not. More... | |
template<class Scalar > | |
bool | opSupported (const LinearOpBase< Scalar > &M, EOpTransp M_trans) |
Determines if an operation is supported for a single scalar type. More... | |
template<class Scalar > | |
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(...) . More... | |
void | apply (const LinearOpBase< double > &M, const EOpTransp M_trans, const MultiVectorBase< double > &X, const Ptr< MultiVectorBase< double > > &Y, const double alpha=1.0, const double beta=0.0) |
Calls apply<double>(...) . More... | |
Additional Inherited Members | |
Protected Member Functions inherited from Thyra::VectorBase< Scalar > | |
virtual void | assignVecImpl (const VectorBase< Scalar > &x)=0 |
Virtual implementation for NVI assign. More... | |
virtual void | randomizeImpl (Scalar l, Scalar u)=0 |
Virtual implementation for NVI randomize. More... | |
virtual void | absImpl (const VectorBase< Scalar > &x)=0 |
Virtual implementation for NVI abs. More... | |
virtual void | reciprocalImpl (const VectorBase< Scalar > &x)=0 |
Virtual implementation for NVI reciprocal. More... | |
virtual void | eleWiseScaleImpl (const VectorBase< Scalar > &x)=0 |
Virtual implementation for NVI ele_wise_scale. More... | |
virtual void | updateVecImpl (Scalar alpha, const VectorBase< Scalar > &x)=0 |
Virtual implementation for NVI update. More... | |
virtual void | linearCombinationVecImpl (const ArrayView< const Scalar > &alpha, const ArrayView< const Ptr< const VectorBase< Scalar > > > &x, const Scalar &beta)=0 |
Virtual implementation for NVI linear_combination. More... | |
virtual Scalar | dotImpl (const VectorBase< Scalar > &x) const =0 |
Virtual implementation for NVI dot. More... | |
virtual Teuchos::ScalarTraits < Scalar >::magnitudeType | norm1Impl () const =0 |
Virtual implementation for NVI norm_1. More... | |
virtual Teuchos::ScalarTraits < Scalar >::magnitudeType | norm2Impl () const =0 |
Virtual implementation for NVI norm_2. More... | |
virtual Teuchos::ScalarTraits < Scalar >::magnitudeType | norm2WeightedImpl (const VectorBase< Scalar > &x) const =0 |
Virtual implementation for NVI norm_2 (weighted). More... | |
virtual Teuchos::ScalarTraits < Scalar >::magnitudeType | normInfImpl () const =0 |
Virtual implementation for NVI norm_inf. More... | |
virtual void | applyOpImpl (const RTOpPack::RTOpT< Scalar > &op, const ArrayView< const Ptr< const VectorBase< Scalar > > > &vecs, const ArrayView< const Ptr< VectorBase< Scalar > > > &targ_vecs, const Ptr< RTOpPack::ReductTarget > &reduct_obj, const Ordinal global_offset) const =0 |
Apply a reduction/transformation operator over a set of vectors: op(op(v[0]...v[nv-1],z[0]...z[nz-1]),(*reduct_obj)) -> z[0]...z[nz-1],(*reduct_obj) . More... | |
virtual void | acquireDetachedVectorViewImpl (const Range1D &rng, RTOpPack::ConstSubVectorView< Scalar > *sub_vec) const =0 |
Get a non-mutable explicit view of a sub-vector. More... | |
virtual void | releaseDetachedVectorViewImpl (RTOpPack::ConstSubVectorView< Scalar > *sub_vec) const =0 |
Free an explicit view of a sub-vector. More... | |
virtual void | acquireNonconstDetachedVectorViewImpl (const Range1D &rng, RTOpPack::SubVectorView< Scalar > *sub_vec)=0 |
Get a mutable explicit view of a sub-vector. More... | |
virtual void | commitNonconstDetachedVectorViewImpl (RTOpPack::SubVectorView< Scalar > *sub_vec)=0 |
Commit changes for a mutable explicit view of a sub-vector. More... | |
virtual void | setSubVectorImpl (const RTOpPack::SparseSubVectorT< Scalar > &sub_vec)=0 |
Set a specific sub-vector. More... | |
Protected Member Functions inherited from Thyra::MultiVectorBase< Scalar > | |
void | absRowSum (const Teuchos::Ptr< Thyra::VectorBase< Scalar > > &output) const |
void | absColSum (const Teuchos::Ptr< Thyra::VectorBase< Scalar > > &output) const |
virtual void | assignImpl (Scalar alpha)=0 |
Virtual implementation for NVI assign(Scalar). More... | |
virtual void | assignMultiVecImpl (const MultiVectorBase< Scalar > &mv)=0 |
Virtual implementation for NVI assign(MV). More... | |
virtual void | scaleImpl (Scalar alpha)=0 |
Virtual implementation for NVI scale(). More... | |
virtual void | updateImpl (Scalar alpha, const MultiVectorBase< Scalar > &mv)=0 |
Virtual implementation for NVI update(). More... | |
virtual void | linearCombinationImpl (const ArrayView< const Scalar > &alpha, const ArrayView< const Ptr< const MultiVectorBase< Scalar > > > &mv, const Scalar &beta)=0 |
Virtual implementation for NVI linear_combination(). More... | |
virtual void | dotsImpl (const MultiVectorBase< Scalar > &mv, const ArrayView< Scalar > &prods) const =0 |
Virtual implementation for NVI dots(). More... | |
virtual void | norms1Impl (const ArrayView< typename ScalarTraits< Scalar >::magnitudeType > &norms) const =0 |
Virtual implementation for NVI norms_1(). More... | |
virtual void | norms2Impl (const ArrayView< typename ScalarTraits< Scalar >::magnitudeType > &norms) const =0 |
Virtual implementation for NVI norms_2(). More... | |
virtual void | normsInfImpl (const ArrayView< typename ScalarTraits< Scalar >::magnitudeType > &norms) const =0 |
Virtual implementation for NVI norms_inf(). More... | |
virtual RCP< const VectorBase < Scalar > > | colImpl (Ordinal j) const |
Return a non-changeable view of a constituent column vector. More... | |
virtual RCP< VectorBase< Scalar > > | nonconstColImpl (Ordinal j)=0 |
Return a changeable view of a constituent column vector. More... | |
virtual RCP< const MultiVectorBase< Scalar > > | contigSubViewImpl (const Range1D &colRng) const =0 |
Return a non-changeable sub-view of a contiguous set of columns of the this multi-vector. More... | |
virtual RCP< MultiVectorBase < Scalar > > | nonconstContigSubViewImpl (const Range1D &colRng)=0 |
Return a changeable sub-view of a contiguous set of columns of the this multi-vector. More... | |
virtual RCP< const MultiVectorBase< Scalar > > | nonContigSubViewImpl (const ArrayView< const int > &cols) const =0 |
Return a non-changeable sub-view of a non-contiguous set of columns of this multi-vector. More... | |
virtual RCP< MultiVectorBase < Scalar > > | nonconstNonContigSubViewImpl (const ArrayView< const int > &cols)=0 |
Return a changeable sub-view of a non-contiguous set of columns of this multi-vector. More... | |
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 =0 |
Apply a reduction/transformation operator column by column and return an array of the reduction objects. More... | |
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 =0 |
Apply a reduction/transformation operator column by column and reduce the intermediate reduction objects into a single reduction object. More... | |
virtual void | acquireDetachedMultiVectorViewImpl (const Range1D &rowRng, const Range1D &colRng, RTOpPack::ConstSubMultiVectorView< Scalar > *sub_mv) const =0 |
Get a non-changeable explicit view of a sub-multi-vector. More... | |
virtual void | releaseDetachedMultiVectorViewImpl (RTOpPack::ConstSubMultiVectorView< Scalar > *sub_mv) const =0 |
Free a non-changeable explicit view of a sub-multi-vector. More... | |
virtual void | acquireNonconstDetachedMultiVectorViewImpl (const Range1D &rowRng, const Range1D &colRng, RTOpPack::SubMultiVectorView< Scalar > *sub_mv)=0 |
Get a changeable explicit view of a sub-multi-vector. More... | |
virtual void | commitNonconstDetachedMultiVectorViewImpl (RTOpPack::SubMultiVectorView< Scalar > *sub_mv)=0 |
Commit changes for a changeable explicit view of a sub-multi-vector. More... | |
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) |
Protected Member Functions inherited from Thyra::LinearOpBase< Scalar > | |
virtual bool | opSupportedImpl (EOpTransp M_trans) const =0 |
Override in subclass. More... | |
virtual void | applyImpl (const EOpTransp M_trans, const MultiVectorBase< Scalar > &X, const Ptr< MultiVectorBase< Scalar > > &Y, const Scalar alpha, const Scalar beta) const =0 |
Override in subclass. More... | |
Protected Member Functions inherited from Thyra::RowStatLinearOpBase< Scalar > | |
Protected Member Functions inherited from Thyra::ScaledLinearOpBase< Scalar > |
Base interface for product vectors.
This class defines an abstract interface for a vector that is built out of the one or more other vectors to form what mathematicians like to call a "product vector".
A product vector is simply the concatenation of two or more vectors to form a larger "composite" vector. Specifically, a product vector with numBlock
constituent block vectors represents the blocked vector
[ v[0] ] [ v[1] ] this = [ . ] [ v[numBlocks-1] ]
The constituent vectors v[k]
can be accessed through the const
and non-const
access functions getBlock()
.
A product vector knows its product space which is returned by the productSpace() function. A ProductVectorBase
object is created by a ProductVectorSpaceBase
object and never directly created by clients.
This class is only an interface. A standard implementation of this interface that should be sufficient for 99% or so of use cases is provided in the concrete subclass DefaultProductVector
.
Definition at line 55 of file Thyra_ProductVectorBase.hpp.
|
pure virtual |
Returns a non-persisting non-const
view of the (zero-based) k
th block vector.
k | [in] The (zero-based) k th block index specifying which vector block to access. |
Preconditions:
productSpace().get()!=NULL
0 <= k && k < productSpace()->numBlocks()
blockIsConst(k)==false
Note that *this
is not guaranteed to be modified until the smart pointer returned from this function, as well as any other smart pointers created from this smart pointer, are destroyed. This requirement allows more flexibility in how this function is implemented.
Also note that no further interactions with *this
should be performed until the view returned from this function is released as described above.
Implemented in Thyra::DefaultProductVector< Scalar >, Thyra::DefaultMultiVectorProductVector< Scalar >, and Thyra::DefaultClusteredSpmdProductVector< Scalar >.
|
pure virtual |
Returns a non-persisting const
view of the (zero-based) k
th block vector.
k | [in] The (zero-based) k th block index specifying which vectorblock to access. |
Preconditions:
productSpace().get()!=NULL
0 <= k <= productSpace()->numBlocks()-1tt>
Implemented in Thyra::DefaultProductVector< Scalar >, Thyra::DefaultMultiVectorProductVector< Scalar >, and Thyra::DefaultClusteredSpmdProductVector< Scalar >.
|
related |
Dynamic cast from a VectorBase
to a ProductVectorBase
object and thow exception if this fails.
Definition at line 116 of file Thyra_ProductVectorBase.hpp.
|
related |
Dynamic cast from a const VectorBase
to a const ProductVectorBase
object and thow exception if this fails.
Definition at line 132 of file Thyra_ProductVectorBase.hpp.