#include <Thyra_SerialMultiVectorBaseDecl.hpp>
Inheritance diagram for Thyra::SerialMultiVectorBase< Scalar >:
Constructors / initializers / accessors | |
| SerialMultiVectorBase () | |
| | |
Pure virtual methods to be overridden by subclasses | |
| virtual void | getData (const Scalar **values, Index *leadingDim) const =0 |
Returns a const pointer to a Fortran-style view of the local multi-vector data. | |
| virtual void | freeData (const Scalar *values) const =0 |
Free view of local data that was gotten from getData(). | |
| virtual void | getData (Scalar **values, Index *leadingDim)=0 |
Returns a non-const pointer to a Fortran-style view of the local multi-vector data. | |
| virtual void | commitData (Scalar *values)=0 |
Commit view of local data that was gotten from getData(). | |
Overridden from MultiVectorBase | |
Calls EuclideanLinearOpBase::apply() to disambiguate apply() | |
| void | applyOp (const RTOpPack::RTOpT< Scalar > &primary_op, const int num_multi_vecs, const MultiVectorBase< Scalar > *multi_vecs[], const int num_targ_multi_vecs, MultiVectorBase< Scalar > *targ_multi_vecs[], RTOpPack::ReductTarget *reduct_objs[], const Index primary_first_ele, const Index primary_sub_dim, const Index primary_global_offset, const Index secondary_first_ele, const Index secondary_sub_dim) const |
| | |
| void | getSubMultiVector (const Range1D &rowRng, const Range1D &colRng, RTOpPack::SubMultiVectorT< Scalar > *sub_mv) const |
| | |
| void | freeSubMultiVector (RTOpPack::SubMultiVectorT< Scalar > *sub_mv) const |
| | |
| void | getSubMultiVector (const Range1D &rowRng, const Range1D &colRng, RTOpPack::MutableSubMultiVectorT< Scalar > *sub_mv) |
| | |
| void | commitSubMultiVector (RTOpPack::MutableSubMultiVectorT< Scalar > *sub_mv) |
| | |
Overridden from SingleScalarEuclideanLinearOpBase | |
| bool | opSupported (ETransp M_trans) const |
For complex Scalar types returns true for NOTRANS, TRANS, and CONJTRANS and for real types returns true for all values of M_trans. | |
| void | euclideanApply (const ETransp M_trans, const MultiVectorBase< Scalar > &X, MultiVectorBase< Scalar > *Y, const Scalar alpha, const Scalar beta) const |
| Uses GEMM(...) to implement. | |
Miscellaneous functions for subclasses to call | |
| virtual void | updateSpace () |
Subclasses should call whenever the structure of any VectorSpaceBase changes. | |
| Range1D | validateRowRange (const Range1D &rowRng) const |
| Validate and resize the row range. | |
| Range1D | validateColRange (const Range1D &rowCol) const |
| Validate and resize the column range. | |
By inheriting from this base class, multi-vector implementations allow their multi-vector objects to be seamlessly combined with other serial multi-vector objects (of different concrete types) in applyOp() and apply().
This base class contains implementations of applyOp() and apply() that rely on implementations of the methods (const) getSubMultiVector(), freeSubMultiVector(), (non-const) getSubMultiVector() and commitSubMultiVector() (which all have default implementations in this subclass). As long as the number of elements is fairly large, the virtual function call overhead will be minimal and this will result in a near optimal implementation.
Notes to subclass developers
Concrete subclasses must override only four functions that give direct access to MultiVectorBase data: <getData(const Scalar**,Index*), freeData(const Scalar**,Index*), getData(Scalar**,Index*), commitData(Scalar**,Index*).
Definition at line 66 of file Thyra_SerialMultiVectorBaseDecl.hpp.
|
|||||||||
|
Definition at line 49 of file Thyra_SerialMultiVectorBase.hpp. |
|
||||||||||||||||
|
Returns a
Implemented in Thyra::SerialMultiVectorStd< Scalar >. |
|
||||||||||
|
Free view of local data that was gotten from
Implemented in Thyra::SerialMultiVectorStd< Scalar >. |
|
||||||||||||||||
|
Returns a non-
commitData() must be called to commit changes to the data.
Implemented in Thyra::SerialMultiVectorStd< Scalar >. |
|
||||||||||
|
Commit view of local data that was gotten from
Implemented in Thyra::SerialMultiVectorStd< Scalar >. |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Definition at line 76 of file Thyra_SerialMultiVectorBase.hpp. |
|
||||||||||||||||||||
|
Definition at line 116 of file Thyra_SerialMultiVectorBase.hpp. |
|
||||||||||
|
Definition at line 139 of file Thyra_SerialMultiVectorBase.hpp. |
|
||||||||||||||||||||
|
Definition at line 148 of file Thyra_SerialMultiVectorBase.hpp. |
|
||||||||||
|
Definition at line 171 of file Thyra_SerialMultiVectorBase.hpp. |
|
||||||||||
|
For complex
Implements Thyra::SingleScalarEuclideanLinearOpBase< Scalar >. Definition at line 185 of file Thyra_SerialMultiVectorBase.hpp. |
|
||||||||||||||||||||||||||||
|
Uses GEMM(...) to implement. ToDo: Finish documentation! Implements Thyra::SingleScalarEuclideanLinearOpBase< Scalar >. Definition at line 192 of file Thyra_SerialMultiVectorBase.hpp. |
|
|||||||||
|
Subclasses should call whenever the structure of any This function can be overridden by subclasses but this particular function implementation must be called from within any override. Definition at line 298 of file Thyra_SerialMultiVectorBase.hpp. |
|
||||||||||
|
Validate and resize the row range. This function throws an exception if the input range is invalid Definition at line 314 of file Thyra_SerialMultiVectorBase.hpp. |
|
||||||||||
|
Validate and resize the column range. This function throws an exception if the input range is invalid Definition at line 329 of file Thyra_SerialMultiVectorBase.hpp. |
1.3.9.1