Thyra Package Browser (Single Doxygen Collection)  Version of the Day
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
List of all members
Thyra::EpetraLinearOpBase Class Referenceabstract

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>

Inheritance diagram for Thyra::EpetraLinearOpBase:
Inheritance graph
[legend]

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...
 

Additional Inherited Members

- Public Member Functions inherited from Teuchos::Describable
DescribableStreamManipulatorState describe (const Describable &describable, const EVerbosityLevel verbLevel=Describable::verbLevel_default)
 
std::ostream & operator<< (std::ostream &os, const DescribableStreamManipulatorState &d)
 
virtual std::string description () const
 
virtual void describe (FancyOStream &out, const EVerbosityLevel verbLevel=verbLevel_default) const
 
void describe (std::ostream &out, const EVerbosityLevel verbLevel=verbLevel_default) const
 
virtual ~Describable ()
 
 LabeledObject ()
 
virtual ~LabeledObject ()
 
virtual void setObjectLabel (const std::string &objectLabel)
 
virtual std::string getObjectLabel () const
 
- Static Public Attributes inherited from Teuchos::Describable
static const EVerbosityLevel verbLevel_default
 

Detailed Description

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.

Member Function Documentation

virtual void Thyra::EpetraLinearOpBase::getNonconstEpetraOpView ( const Ptr< RCP< Epetra_Operator > > &  epetraOp,
const Ptr< EOpTransp > &  epetraOpTransp,
const Ptr< EApplyEpetraOpAs > &  epetraOpApplyAs,
const Ptr< EAdjointEpetraOp > &  epetraOpAdjointSupport 
)
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.

Parameters
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.

virtual void Thyra::EpetraLinearOpBase::getEpetraOpView ( const Ptr< RCP< const Epetra_Operator > > &  epetraOp,
const Ptr< EOpTransp > &  epetraOpTransp,
const Ptr< EApplyEpetraOpAs > &  epetraOpApplyAs,
const Ptr< EAdjointEpetraOp > &  epetraOpAdjointSupport 
) const
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.

Parameters
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.

Referenced by Thyra::DiagonalEpetraLinearOpWithSolveFactory::initializeOp(), and Thyra::DiagonalEpetraLinearOpWithSolveFactory::isCompatible().


The documentation for this class was generated from the following file: