10 #ifndef __Teko_TpetraInverseOpWrapper_hpp__ 
   11 #define __Teko_TpetraInverseOpWrapper_hpp__ 
   13 #include "Teko_TpetraOperatorWrapper.hpp" 
   14 #include "Teko_ConfigDefs.hpp" 
   15 #include "Tpetra_MultiVector.hpp" 
   18 namespace TpetraHelpers {
 
   20 class TpetraInverseOpWrapper : 
public TpetraOperatorWrapper {
 
   22   TpetraInverseOpWrapper(
const RCP<const MappingStrategy>& forwardMaps)
 
   23       : TpetraOperatorWrapper(forwardMaps) {}
 
   25   TpetraInverseOpWrapper(
const RCP<
const Thyra::LinearOpBase<ST> >& thyraOp)
 
   26       : TpetraOperatorWrapper(thyraOp) {}
 
   29   virtual void apply(
const Tpetra::MultiVector<ST, LO, GO, NT>& X,
 
   30                      Tpetra::MultiVector<ST, LO, GO, NT>& Y,
 
   31                      Teuchos::ETransp mode = Teuchos::NO_TRANS,
 
   32                      ST alpha              = Teuchos::ScalarTraits<ST>::one(),
 
   33                      ST beta               = Teuchos::ScalarTraits<ST>::zero()) 
const;
 
   36   virtual void applyInverse(
const Tpetra::MultiVector<ST, LO, GO, NT>& X,
 
   37                             Tpetra::MultiVector<ST, LO, GO, NT>& Y,
 
   38                             Teuchos::ETransp mode = Teuchos::NO_TRANS,
 
   39                             ST alpha              = Teuchos::ScalarTraits<ST>::one(),
 
   40                             ST beta               = Teuchos::ScalarTraits<ST>::zero()) 
const;
 
   48   TpetraInverseOpWrapper() {}