Thyra
Version of the Day
|
Abstract base class for all LinearOpBase
objects that can return an Epetra_Operator
view of themselves and details about how to apply the view.
More...
#include <Thyra_EpetraLinearOpBase.hpp>
Pure virtual functions that must be overridden in subclasses. | |
virtual void | getNonconstEpetraOpView (const Ptr< RCP< Epetra_Operator > > &epetraOp, const Ptr< EOpTransp > &epetraOpTransp, const Ptr< EApplyEpetraOpAs > &epetraOpApplyAs, const Ptr< EAdjointEpetraOp > &epetraOpAdjointSupport)=0 |
Return a smart pointer to a non-const Epetra_Operator view of this object and how the object is applied to implement *this linear operator. More... | |
virtual void | getEpetraOpView (const Ptr< RCP< const Epetra_Operator > > &epetraOp, const Ptr< EOpTransp > &epetraOpTransp, const Ptr< EApplyEpetraOpAs > &epetraOpApplyAs, const Ptr< EAdjointEpetraOp > &epetraOpAdjointSupport) const =0 |
Return a smart pointer to a const Epetra_Operator view of this object and how the object is applied to implement *this linear operator. More... | |
Abstract base class for all LinearOpBase
objects that can return an Epetra_Operator
view of themselves and details about how to apply the view.
This interface defines a key interoperability interface that allows a general client to extract an Epetra_Operator
view of a linear operator object. In some cases, *this
linear operator can be modifed through the Epetra_Operator
view and in some cases, it can not.
ToDo: Finish documentatation!
Definition at line 37 of file Thyra_EpetraLinearOpBase.hpp.
|
pure virtual |
Return a smart pointer to a non-const
Epetra_Operator
view of this object and how the object is applied to implement *this
linear operator.
epetraOp | [out] The non-const epetra operator view of *this . |
epetraOpTransp | [out] Determines if the operator is applied as its transpose or its non-transpose. The Client should use this value and ignore the value in (*epetraOp)->UseTranspose() since it has been shown to be problematic and error prone. |
epetraOpApplyAs | [out] Determines if the operator should be applied using (*epetraOp)->Apply(...) or using (*epetraOp)->ApplyInverse(...) . |
epetraOpAdjointSupport | [out] Determines if the operator supports transposes or not. |
Preconditions: epetraOp!=NULL
epetraOpOpTransp!=NULL
epetraOpApplyAs!=NULL
epetraOpAdjointSupport!=NULL
Posconditions: epetraOp->get() != NULL
The object accessed from *epetraOp
is only guaranteed to be valid while the returned Teuchos::RCP
object exits. This allows for some very specialized implementations where a Epetra_Operator
view of *this
can be acquired and released according to the lifetime of the returned Teuchos::RCP
object.
The Epetra_Operator
object may be dynamic casted to more specialized interfaces and therefore modified. Then, when the last RCP
object ancestor returned from this function goes away, then *this
will be updated to relect the change.
Warning! The client can not assume that the view in *(*epetraOp)
will be valid past the lifetime of *this
object which is providing the view! The client must take special care in the case!
Implemented in Thyra::EpetraLinearOp.
|
pure virtual |
Return a smart pointer to a const
Epetra_Operator
view of this object and how the object is applied to implement *this
linear operator.
epetraOp | [out] The const epetra operator view of *this . |
epetraOpTransp | [out] Determines if the operator is applied as its transpose or its non-transpose. The Client should use this value and ignore the value in (*epetraOp)->UseTranspose() since it has been shown to be problematic and error prone. |
epetraOpApplyAs | [out] Determines if the operator should be applied using (*epetraOp)->Apply(...) or using (*epetraOp)->ApplyInverse(...) . |
epetraOpAdjointSupport | [out] Determines if the operator supports transposes or not. |
Preconditions: epetraOp!=NULL
epetraOpOpTransp!=NULL
epetraOpApplyAs!=NULL
epetraOpAdjointSupport!=NULL
Posconditions: epetraOp->get() != NULL
The object accessed from *return
is only guaranteed to be valid while the returned Teuchos::RCP
object exits. This allows for some very specialized implementations where a Epetra_Operator
view of *this
can be acquired and released according to the lifetime of the returned Teuchos::RCP
object.
Note that if the client tries to constant cast the returned object and modify it that this returned view is not guaranteed to update *this
. If the goal is to modify *this
then the client should call the non-const
version of this function.
Warning! The client can not assume that the view in *(*epetraOp)
will be valid past the lifetime of *this
object which is providing the view! The client must take special care in the case!
Implemented in Thyra::EpetraLinearOp.