42 #ifndef THYRA_TPETRA_LINEAR_OP_DECL_HPP 
   43 #define THYRA_TPETRA_LINEAR_OP_DECL_HPP 
   45 #include "Thyra_LinearOpDefaultBase.hpp" 
   47 #include "Thyra_ScaledLinearOpBase.hpp" 
   48 #include "Thyra_RowStatLinearOpBase.hpp" 
   49 #include "Tpetra_Operator.hpp" 
   52 #if defined(HAVE_THYRA_EPETRA) && defined(HAVE_TPETRA_EPETRA) 
   53 #  define HAVE_THYRA_TPETRA_EPETRA 
   56 #ifdef HAVE_THYRA_TPETRA_EPETRA 
   58 #  include "Tpetra_EpetraRowMatrix.hpp" 
   71 template <
class Scalar, 
class LocalOrdinal, 
class GlobalOrdinal=LocalOrdinal,
 
   72   class Node=KokkosClassic::DefaultNode::DefaultNodeType>
 
   74   : 
virtual public Thyra::LinearOpDefaultBase<Scalar>,
 
   75     virtual public ScaledLinearOpBase<Scalar>,
 
   76     virtual public Thyra::RowStatLinearOpBase<Scalar>
 
   77 #ifdef HAVE_THYRA_TPETRA_EPETRA 
   91     const RCP<
const VectorSpaceBase<Scalar> > &rangeSpace,
 
   92     const RCP<
const VectorSpaceBase<Scalar> > &domainSpace,
 
   93     const RCP<Tpetra::Operator<Scalar,LocalOrdinal,GlobalOrdinal,Node> > &tpetraOperator
 
   98     const RCP<
const VectorSpaceBase<Scalar> > &rangeSpace,
 
   99     const RCP<
const VectorSpaceBase<Scalar> > &domainSpace,
 
  100     const RCP<
const Tpetra::Operator<Scalar,LocalOrdinal,GlobalOrdinal,Node> > &tpetraOperator
 
  124 #ifdef HAVE_THYRA_TPETRA_EPETRA 
  130   void getNonconstEpetraOpView(
 
  132     const Ptr<EOpTransp> &epetraOpTransp,
 
  133     const Ptr<EApplyEpetraOpAs> &epetraOpApplyAs,
 
  134     const Ptr<EAdjointEpetraOp> &epetraOpAdjointSupport
 
  137   void getEpetraOpView(
 
  139     const Ptr<EOpTransp> &epetraOpTransp,
 
  140     const Ptr<EApplyEpetraOpAs> &epetraOpApplyAs,
 
  141     const Ptr<EAdjointEpetraOp> &epetraOpAdjointSupport
 
  146 #endif // HAVE_THYRA_TPETRA_EPETRA 
  158     const Thyra::EOpTransp M_trans,
 
  159     const Thyra::MultiVectorBase<Scalar> &X_in,
 
  160     const Teuchos::Ptr<Thyra::MultiVectorBase<Scalar> > &Y_inout,
 
  177   virtual void scaleLeftImpl(
const VectorBase<Scalar> &row_scaling);
 
  180   virtual void scaleRightImpl(
const VectorBase<Scalar> &col_scaling);
 
  189     const RowStatLinearOpBaseUtils::ERowStat rowStat) 
const;
 
  193     const RowStatLinearOpBaseUtils::ERowStat rowStat,
 
  194     const Ptr<VectorBase<Scalar> > &rowStatVec) 
const;
 
  209 #ifdef HAVE_THYRA_TPETRA_EPETRA 
  213   template<
class TpetraOperator_t>
 
  215     const RCP<
const VectorSpaceBase<Scalar> > &rangeSpace,
 
  216     const RCP<
const VectorSpaceBase<Scalar> > &domainSpace,
 
  227 template <
class Scalar, 
class LocalOrdinal, 
class GlobalOrdinal, 
class Node>
 
  230   const RCP<
const VectorSpaceBase<Scalar> > &rangeSpace,
 
  231   const RCP<
const VectorSpaceBase<Scalar> > &domainSpace,
 
  232   const RCP<Tpetra::Operator<Scalar,LocalOrdinal,GlobalOrdinal,Node> > &tpetraOperator
 
  237   op->initialize(rangeSpace, domainSpace, tpetraOperator);
 
  246 template <
class Scalar, 
class LocalOrdinal, 
class GlobalOrdinal, 
class Node>
 
  249   const RCP<
const VectorSpaceBase<Scalar> > &rangeSpace,
 
  250   const RCP<
const VectorSpaceBase<Scalar> > &domainSpace,
 
  251   const RCP<
const Tpetra::Operator<Scalar,LocalOrdinal,GlobalOrdinal,Node> > &tpetraOperator
 
  256   op->constInitialize(rangeSpace, domainSpace, tpetraOperator);
 
  264 #endif  // THYRA_TPETRA_LINEAR_OP_DECL_HPP 
void initializeImpl(const RCP< const VectorSpaceBase< Scalar > > &rangeSpace, const RCP< const VectorSpaceBase< Scalar > > &domainSpace, const RCP< TpetraOperator_t > &tpetraOperator)
 
void constInitialize(const RCP< const VectorSpaceBase< Scalar > > &rangeSpace, const RCP< const VectorSpaceBase< Scalar > > &domainSpace, const RCP< const Tpetra::Operator< Scalar, LocalOrdinal, GlobalOrdinal, Node > > &tpetraOperator)
Initialize. 
 
Abstract base class for all LinearOpBase objects that can return an Epetra_Operator view of themselve...
 
virtual void getRowStatImpl(const RowStatLinearOpBaseUtils::ERowStat rowStat, const Ptr< VectorBase< Scalar > > &rowStatVec) const 
 
bool opSupportedImpl(Thyra::EOpTransp M_trans) const 
 
RCP< const Tpetra::Operator< Scalar, LocalOrdinal, GlobalOrdinal, Node > > getConstTpetraOperator() const 
Get embedded const Tpetra::Operator. 
 
void applyImpl(const Thyra::EOpTransp M_trans, const Thyra::MultiVectorBase< Scalar > &X_in, const Teuchos::Ptr< Thyra::MultiVectorBase< Scalar > > &Y_inout, const Scalar alpha, const Scalar beta) const 
 
virtual bool rowStatIsSupportedImpl(const RowStatLinearOpBaseUtils::ERowStat rowStat) const 
 
TEUCHOS_DEPRECATED RCP< T > rcp(T *p, Dealloc_T dealloc, bool owns_mem)
 
RCP< const TpetraLinearOp< Scalar, LocalOrdinal, GlobalOrdinal, Node > > constTpetraLinearOp(const RCP< const VectorSpaceBase< Scalar > > &rangeSpace, const RCP< const VectorSpaceBase< Scalar > > &domainSpace, const RCP< const Tpetra::Operator< Scalar, LocalOrdinal, GlobalOrdinal, Node > > &tpetraOperator)
Nonmmeber constructor for TpetraLinearOp. 
 
virtual bool supportsScaleLeftImpl() const 
 
RCP< const Thyra::VectorSpaceBase< Scalar > > range() const 
 
RCP< Tpetra::Operator< Scalar, LocalOrdinal, GlobalOrdinal, Node > > getTpetraOperator()
Get embedded non-const Tpetra::Operator. 
 
RCP< TpetraLinearOp< Scalar, LocalOrdinal, GlobalOrdinal, Node > > tpetraLinearOp(const RCP< const VectorSpaceBase< Scalar > > &rangeSpace, const RCP< const VectorSpaceBase< Scalar > > &domainSpace, const RCP< Tpetra::Operator< Scalar, LocalOrdinal, GlobalOrdinal, Node > > &tpetraOperator)
Nonmmeber constructor for TpetraLinearOp. 
 
TpetraLinearOp()
Construct to uninitialized. 
 
virtual void scaleLeftImpl(const VectorBase< Scalar > &row_scaling)
 
Teuchos::ConstNonconstObjectContainer< Tpetra::Operator< Scalar, LocalOrdinal, GlobalOrdinal, Node > > tpetraOperator_
 
virtual void scaleRightImpl(const VectorBase< Scalar > &col_scaling)
 
RCP< const VectorSpaceBase< Scalar > > rangeSpace_
 
virtual bool supportsScaleRightImpl() const 
 
RCP< const VectorSpaceBase< Scalar > > domainSpace_
 
void initialize(const RCP< const VectorSpaceBase< Scalar > > &rangeSpace, const RCP< const VectorSpaceBase< Scalar > > &domainSpace, const RCP< Tpetra::Operator< Scalar, LocalOrdinal, GlobalOrdinal, Node > > &tpetraOperator)
Initialize. 
 
RCP< const Thyra::VectorSpaceBase< Scalar > > domain() const 
 
Concrete Thyra::LinearOpBase subclass for Tpetra::Operator.