|
Thyra Package Browser (Single Doxygen Collection) Version of the Day
|
Node subclass that uses a default MultiVectorBase implementation to provide default implementations for as many other functions in MultiVectorBase interface the as is reasonable.
More...
#include <Thyra_MultiVectorDefaultBase_decl.hpp>

Overridden public member functions from MultiVectorBase | |
| virtual RCP< MultiVectorBase < Scalar > > | clone_mv () const |
| | |
Overridden protected member functions from MultiVectorBase | |
| 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) |
| | |
Node subclass that uses a default MultiVectorBase implementation to provide default implementations for as many other functions in MultiVectorBase interface the as is reasonable.
Notes to subclass developers
Only three function overrides are required in order to create a concrete MultiVectorBase subclass: range(), domain() and the non-const version of col(). All of the other functions have default implementations. However, a good implementation will provide optimized overrides of at least the functions apply() and applyTranspose(). The non-const versions of subView() should be overridden if subviews are important. The default implementation will not achieve near-optimal performance in many cases.
Definition at line 57 of file Thyra_MultiVectorDefaultBase_decl.hpp.
| RCP< MultiVectorBase< Scalar > > Thyra::MultiVectorDefaultBase< Scalar >::clone_mv | ( | ) | const [virtual] |
This implementation uses the vector space to create a new multi-vector object and then uses a transformation operator to assign the vector elements. A subclass should only override this function if it can do something more sophisticated (i.e. lazy evaluation) but in general, this is not needed.
Implements Thyra::MultiVectorBase< Scalar >.
Reimplemented in Thyra::DefaultProductMultiVector< Scalar >, and Thyra::VectorDefaultBase< Scalar >.
Definition at line 54 of file Thyra_MultiVectorDefaultBase_def.hpp.
References Thyra::assign(), Thyra::copy(), and Thyra::VectorSpaceBase< Scalar >::dim().
| RCP< const MultiVectorBase< Scalar > > Thyra::MultiVectorDefaultBase< Scalar >::contigSubViewImpl | ( | const Range1D & | colRng | ) | const [protected, virtual] |
Implements Thyra::MultiVectorBase< Scalar >.
Reimplemented in Thyra::DefaultSpmdMultiVector< Scalar >, Thyra::DefaultProductMultiVector< Scalar >, and Thyra::VectorDefaultBase< Scalar >.
Definition at line 74 of file Thyra_MultiVectorDefaultBase_def.hpp.
References Thyra::VectorSpaceBase< Scalar >::dim(), and Thyra::VectorSpaceBase< Scalar >::smallVecSpcFcty().
| RCP< MultiVectorBase< Scalar > > Thyra::MultiVectorDefaultBase< Scalar >::nonconstContigSubViewImpl | ( | const Range1D & | colRng | ) | [protected, virtual] |
Implements Thyra::MultiVectorBase< Scalar >.
Reimplemented in Thyra::DefaultSpmdMultiVector< Scalar >, Thyra::DefaultColumnwiseMultiVector< Scalar >, Thyra::DefaultProductMultiVector< Scalar >, and Thyra::VectorDefaultBase< Scalar >.
Definition at line 102 of file Thyra_MultiVectorDefaultBase_def.hpp.
References Thyra::VectorSpaceBase< Scalar >::dim(), and Thyra::VectorSpaceBase< Scalar >::smallVecSpcFcty().
| RCP< const MultiVectorBase< Scalar > > Thyra::MultiVectorDefaultBase< Scalar >::nonContigSubViewImpl | ( | const ArrayView< const int > & | cols | ) | const [protected, virtual] |
Implements Thyra::MultiVectorBase< Scalar >.
Reimplemented in Thyra::DefaultSpmdMultiVector< Scalar >, Thyra::DefaultProductMultiVector< Scalar >, and Thyra::VectorDefaultBase< Scalar >.
Definition at line 130 of file Thyra_MultiVectorDefaultBase_def.hpp.
References Thyra::VectorSpaceBase< Scalar >::dim(), and Thyra::VectorSpaceBase< Scalar >::smallVecSpcFcty().
| RCP< MultiVectorBase< Scalar > > Thyra::MultiVectorDefaultBase< Scalar >::nonconstNonContigSubViewImpl | ( | const ArrayView< const int > & | cols | ) | [protected, virtual] |
Implements Thyra::MultiVectorBase< Scalar >.
Reimplemented in Thyra::DefaultSpmdMultiVector< Scalar >, Thyra::DefaultProductMultiVector< Scalar >, and Thyra::VectorDefaultBase< Scalar >.
Definition at line 166 of file Thyra_MultiVectorDefaultBase_def.hpp.
References Thyra::VectorSpaceBase< Scalar >::dim(), and Thyra::VectorSpaceBase< Scalar >::smallVecSpcFcty().
| void Thyra::MultiVectorDefaultBase< Scalar >::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 [protected, virtual] |
This implementation calls VectorBase::applyOp() on each column this->col(j) for j = 0 ... this->range()->dim()-1.
Implements Thyra::MultiVectorBase< Scalar >.
Reimplemented in Thyra::SpmdMultiVectorBase< Scalar >, and Thyra::DefaultProductMultiVector< Scalar >.
Definition at line 201 of file Thyra_MultiVectorDefaultBase_def.hpp.
References Thyra::VectorSpaceBase< Scalar >::dim().
Referenced by Thyra::DefaultProductMultiVector< Scalar >::mvMultiReductApplyOpImpl().
| void Thyra::MultiVectorDefaultBase< Scalar >::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 [protected, virtual] |
This implementation calls applyOp() where an array of reduction objects is taken.
Implements Thyra::MultiVectorBase< Scalar >.
Definition at line 260 of file Thyra_MultiVectorDefaultBase_def.hpp.
References Thyra::VectorSpaceBase< Scalar >::dim().
| void Thyra::MultiVectorDefaultBase< Scalar >::acquireDetachedMultiVectorViewImpl | ( | const Range1D & | rowRng, |
| const Range1D & | colRng, | ||
| RTOpPack::ConstSubMultiVectorView< Scalar > * | sub_mv | ||
| ) | const [protected, virtual] |
This implementation is based on the vector operation VectorBase::acquireDetachedView() called on the non-changeable vector objects returned from col(). Note that the footprint of the reduction object (both internal and external state) will be O(rowRng.size()*colRng.size()). For serial applications this is fairly reasonable and will not be a major performance penalty. For parallel applications, however, this is a terrible implementation and must be overridden if rowRng.size() is large at all. Although, this function should not even be used in cases where the multi-vector is very large. If a subclass does override this function, it must also override releaseDetachedView() which has an implementation which is a companion to this function's implementation.
Implements Thyra::MultiVectorBase< Scalar >.
Reimplemented in Thyra::SpmdMultiVectorBase< Scalar >, Thyra::DefaultProductMultiVector< Scalar >, and Thyra::VectorDefaultBase< Scalar >.
Definition at line 308 of file Thyra_MultiVectorDefaultBase_def.hpp.
Referenced by Thyra::SpmdMultiVectorBase< Scalar >::acquireDetachedMultiVectorViewImpl(), Thyra::DefaultProductMultiVector< Scalar >::acquireDetachedMultiVectorViewImpl(), and Thyra::MultiVectorDefaultBase< Scalar >::acquireNonconstDetachedMultiVectorViewImpl().
| void Thyra::MultiVectorDefaultBase< Scalar >::releaseDetachedMultiVectorViewImpl | ( | RTOpPack::ConstSubMultiVectorView< Scalar > * | sub_mv | ) | const [protected, virtual] |
This implementation is a companion to the implementation for acquireDetachedView(). If acquireDetachedView() is overridden by a subclass then this function must be overridden also!
Implements Thyra::MultiVectorBase< Scalar >.
Reimplemented in Thyra::SpmdMultiVectorBase< Scalar >, Thyra::DefaultProductMultiVector< Scalar >, and Thyra::VectorDefaultBase< Scalar >.
Definition at line 358 of file Thyra_MultiVectorDefaultBase_def.hpp.
Referenced by Thyra::SpmdMultiVectorBase< Scalar >::releaseDetachedMultiVectorViewImpl(), and Thyra::DefaultProductMultiVector< Scalar >::releaseDetachedMultiVectorViewImpl().
| void Thyra::MultiVectorDefaultBase< Scalar >::acquireNonconstDetachedMultiVectorViewImpl | ( | const Range1D & | rowRng, |
| const Range1D & | colRng, | ||
| RTOpPack::SubMultiVectorView< Scalar > * | sub_mv | ||
| ) | [protected, virtual] |
This implementation is based on the vector operation VectorBase::acquireDetachedView() called on the changeable vector objects returned from col(). Note that the footprint of the reduction object (both internal and external state) will be O(rowRng.size()*colRng.size()). For serial applications this is fairly reasonable and will not be a major performance penalty. For parallel applications, however, this is a terrible implementation and must be overridden if rowRng.size() is large at all. Although, this function should not even be used in case where the multi-vector is very large. If a subclass does override this function, it must also override commitDetachedView() which has an implementation which is a companion to this function's implementation.
Implements Thyra::MultiVectorBase< Scalar >.
Reimplemented in Thyra::SpmdMultiVectorBase< Scalar >, Thyra::DefaultProductMultiVector< Scalar >, and Thyra::VectorDefaultBase< Scalar >.
Definition at line 368 of file Thyra_MultiVectorDefaultBase_def.hpp.
References Thyra::MultiVectorDefaultBase< Scalar >::acquireDetachedMultiVectorViewImpl().
Referenced by Thyra::SpmdMultiVectorBase< Scalar >::acquireNonconstDetachedMultiVectorViewImpl(), and Thyra::DefaultProductMultiVector< Scalar >::acquireNonconstDetachedMultiVectorViewImpl().
| void Thyra::MultiVectorDefaultBase< Scalar >::commitNonconstDetachedMultiVectorViewImpl | ( | RTOpPack::SubMultiVectorView< Scalar > * | sub_mv | ) | [protected, virtual] |
This implementation is a companion to the default implementation for acquireDetachedView(). If acquireDetachedView() is overridden by a subclass then this function must be overridden also!
Implements Thyra::MultiVectorBase< Scalar >.
Reimplemented in Thyra::SpmdMultiVectorBase< Scalar >, Thyra::DefaultProductMultiVector< Scalar >, and Thyra::VectorDefaultBase< Scalar >.
Definition at line 389 of file Thyra_MultiVectorDefaultBase_def.hpp.
Referenced by Thyra::SpmdMultiVectorBase< Scalar >::commitNonconstDetachedMultiVectorViewImpl(), and Thyra::DefaultProductMultiVector< Scalar >::commitNonconstDetachedMultiVectorViewImpl().
1.7.4