Thyra
Version of the Day
|
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...
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. | |
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.
Basic Support Subclasses Abstracting Application-Specific Scalar Products
Click here if you want to know about high-level support subclasses for separating out the definition of the scalar product from the data structures and factory methods for specific computing platforms. All of the concrete Thyra implementation subclasses outlined below derive from and use these base interfaces. However, knowing the details of these base interfaces is not critical for developing concrete implementations in most situations unless application-defined scalar products are needed. The Euclidean scalar product is used automatically by default and if that is all you need then you can ignore these base classes.
Support subclasses for specific types of computing platforms
Below we outline support code contained in the Thyra package for different categories of computing platforms.
Note! Before attempting to create your own concrete subclasses of the Thyra operator/vector fundamental interfaces please browse the links below so that you know what support is already available. In many cases, most of the concrete implementation software that you need for Thyra is already provided.
Thyra Operator/Vector Subclasses for SPMD Distributed-Memory Platforms
Click here if you want to know about support for developing Thyra subclass implementations for serial and SPMD distributed-memory platforms. These platforms are most commonly used in large-scale scientific computing. Note that the above link also describes very general and efficient concrete SPMD subclasses for vector spaces, vectors, and multi-vectors as well as a support class for creating concrete SPMD linear operator implementations. All of these classes are based on a small abstract communication layer Teuchos::Comm
and is independent of MPI or any other concrete interprocess communication protocol.