Collaboration diagram for Basic Support Subclasses Abstracting Application-Specific Scalar Products:The Fundamental Thyra Operator/Vector Interfaces define an interface for providing ANAs with the functionality they need concerning application-specific scalar products without concern for how such scalar products are implemented or how such scalar products relate to the implementation of vectors, multi-vectors or linear operators. While this is most straightforward for clients of these interfaces, it is not the most convenient for subclass implementation developers. The first level of basic subclasses for supporting the development of concrete Thyra operator/vector implementations involves separating out the definition of the scalar product from the basic vector and multi-vector data structures and the factory methods for creating them. The base subclasses for supporting application-defined scalar products are shown in the UML class diagram below. More...
Classes | |
| class | Thyra::EuclideanLinearOpBase< RangeScalar, DomainScalar > |
| Base interface for Euclidean linear operators. More... | |
| class | Thyra::EuclideanScalarProd< Scalar > |
| Concrete implementation of a scalar product for a Euclidean vector space (i.e. using the dot product). More... | |
| class | Thyra::LinearOpScalarProd< Scalar > |
| Concrete implementation of a scalar product using a symmetric positive-definite linear operator. More... | |
| class | Thyra::ScalarProdBase< Scalar > |
| Abstract interface for scalar products. More... | |
| class | Thyra::ScalarProdVectorSpaceBase< Scalar > |
Base subclass for VectorSpaceBase that allows the definition of an application-specific scalar product to be swapped in and out. More... | |
Support base subclasses for abstracting application-specific scalar products (Note: above graphic is not hyperlinked!)
Thyra::ScalarProdBase defines an interface for an application-specific scalar product independent from a vector space.
Thyra::ScalarProdVectorSpaceBase is subclass of Thyra::VectorSpaceBase that defines the scalar product functions in terms of an aggregate Thyra::ScalarProdBase object that can be swapped in and out (see the C++ code for the Thyra::ScalarProdVectorSpaceBase::scalarProd() function as an example).
Thyra::EuclideanScalarProd is a standard implementation subclass of Thyra::ScalarProdBase for Euclidean scalar products (i.e. using the dot product). This is the default scalar product definition used by Thyra::ScalarProdVectorSpaceBase and all of its subclass objects.
Thyra::LinearOpScalarProd is a more general implementation of a scalar product that uses an arbitrary symmetric positive-definite Thyra::LinearOpBase object (shown using the op relationship in the above UML class diagram).
Thyra::EuclideanLinearOpBase is a base subclass that allows the development of general concrete implementations of Thyra::LinearOpBase that are independent of an application-specific scalar product. This base subclass defines the functions Thyra::EuclideanLinearOpBase::euclideanApply() and Thyra::EuclideanLinearOpBase::euclideanApplyTranspose() which are called by Thyra::ScalarProdBase::apply() to modify the application of an Euclidean linear operator for the definition of the scalar product (see the C++ code for the overridden Thyra::EuclideanLinearOpBase::apply() and Thyra::EuclideanLinearOpBase::applyTranspose() functions). This base class is most helpful for the definition of concrete Thyra::MultiVectorBase subclasses. More specialized linear operators that already define the operator with respect to application-specific scalar product should not derive from this subclass but should instead derive directly from Thyra:LinearOpBase.
The base subclasses Thyra::ScalarProdVectorSpaceBase and Thyra::EuclideanLinearOpBase are used for almost all of the other adapter support subclasses and concrete implementations in the Thyra package.
1.4.7