|group||Collection of functions for wrapping and unwrapping Epetra objects|
|This set of functions provides some general utility code for wrapping Epetra objects in standard Thyra MPI subclass implementations and for getting Epetra views of Thyra objects. |
|group||Epetra to Thyra Operator/Vector Adapter Support Code|
|This is some basic support code that the Epetra to Thyra operator/vector adapter Code is built on. |
|group||Epetra_Operator extraction utility functions|
|These function allow the extraction of an |
|Abstract base class for all |
Epetra_Mapobject and returns a
Epetra_Vectorobject and returns a
Epetra_MultiVectorobject and returns a
Epetra_Operatorobject to form a
The above adapter code is based directly from the general Thyra Operator/Vector Base Support Subclasses for MPI-based SPMD Thyra Implementations. Therefore these Epetra adapted objects are automatically compatible with any other such MPI-based SPMD adapter subclasses.
There is, however, one issue that requires a little care and that is using arbitrary
Thyra::MultiVectorBase objects with the vector and multi-vector versions of
Thyra::EpetraLinearOp::apply(). The issue is that the underlying
Epetra_Operator::Apply() function can only accept
Epetra_MultiVector objects. The utility functions
Thyra::get_Epetra_MultiVector() return an
Epetra_MultiVector view of any
Thyra::MultiVectorBase object with a compatible range space. Studying the implementations of these utility functions will show you how simple it is to provide for this type of interoperabiity. This type of interoperabiity machinary should also be used for other types of concrete adapter subclasses.
Other types of code will need to extract an
Epetra_Vector view of a
Thyra::VectorBase object. For this purpose the
Thyra::get_Epetra_Vector() functions are provided.
The utility functions
Thyra::get_Epetra_Operator() are also provided that encapsulate the extraction of an "adapted"
Epetra_Operator object out of a
Thyra::EpetraLinearOp object through its
Thyra::LinearOpBase base interface. This is a common type of activity in object-oriented programming.