Thyra  Version of the Day
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Modules
Development of Concrete Thyra Operator/Vector Subclass Implementations (Adapter Support)

In order for abstract numerical algorithms (ANAs) developed with Thyra or accessed using Thyra to be useful, concrete implementations of the Thyra operator/vector fundamental interfaces must be provided. However, because of a number of convenient C++ subclasses described here, a developer of such implementation subclasses does not really need to understand much at all about the philosophy or details behind the fundamental Thyra interfaces in order to provide implementations for the most common use cases. More...

Collaboration diagram for Development of Concrete Thyra Operator/Vector Subclass Implementations (Adapter Support):

Modules

 Miscellaneous Support Code for Developing Thyra Operator/Vector Subclass Implementations
 This is some basic C++ code to support the development of Thyra subclass implementations.
 
 Basic Support Subclasses Abstracting Application-Specific Scalar Products
 
 Thyra Operator/Vector Subclasses for SPMD Distributed-Memory Platforms
 The package Thyra includes subclasses for common serial and SPMD vector spaces, vectors, and multi-vectors which are described here.
 

Detailed Description

In order for abstract numerical algorithms (ANAs) developed with Thyra or accessed using Thyra to be useful, concrete implementations of the Thyra operator/vector fundamental interfaces must be provided. However, because of a number of convenient C++ subclasses described here, a developer of such implementation subclasses does not really need to understand much at all about the philosophy or details behind the fundamental Thyra interfaces in order to provide implementations for the most common use cases.

One of the main motivations behind the design of the Thyra operator/vector fundamental interfaces is the uniform support for many different computing environments such as serial shared-memory (i.e. SMP) and a variety of distributed-memory models (e.g. SPMD (single program, multiple data), client-server, master-slave and client-server/master-slave). While this is the case, the overwhelming majority of concrete implementations of these types will be in more typical SMP serial shared-memory or SPMD distributed-memory environments. Because of this, the Trilinos package Thyra contains a set of base subclasses that makes the development of concrete vector space, vector, multi-vector and linear operator subclasses as easy as possible. However, the Thyra operator/vector fundamental interfaces allow for almost limitless possibilities with respect to the types of implementations so it is not reasonable to provide pre-packaged support for all of the possibilities.

Heads Up! In case you think you will have to develop your own concrete Thyra::VectorSpaceBase, Thyra::VectorBase or Thyra::MultiVectorBase subclasses in addition to whatever Thyra::LinearOpBase subclasses that you need for you application, you are probably wrong! You most likely will not need to create any concrete Thyra::VectorSpaceBase, Thyra::VectorBase or Thyra::MultiVectorBase subclasses and instead should only need to develop concrete Thyra::LinearOpBase subclass(es) by deriving from Thyra::SpmdLinearOpBase for serial and SPMD platforms. As described below, general yet efficient implementations of concrete Thyra::VectorSpaceBase, Thyra::VectorBase and Thyra::MultiVectorBase subclasses for serial and SPMD platforms are already available.

Next, we provide a description of the various types of support code for creating concrete implementations as well as concrete implementations that are available. Just browse the categories that you are interested in.

Overview of Concrete Thyra Subclass Implementations

Other Use Cases