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"
71template <
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
93 const RCP<Tpetra::Operator<Scalar,LocalOrdinal,GlobalOrdinal,Node> > &
tpetraOperator
100 const RCP<
const Tpetra::Operator<Scalar,LocalOrdinal,GlobalOrdinal,Node> > &
tpetraOperator
124#ifdef HAVE_THYRA_TPETRA_EPETRA
130 void getNonconstEpetraOpView(
137 void getEpetraOpView(
189 const RowStatLinearOpBaseUtils::ERowStat
rowStat)
const;
193 const RowStatLinearOpBaseUtils::ERowStat
rowStat,
209#ifdef HAVE_THYRA_TPETRA_EPETRA
213 template<
class TpetraOperator_t>
227template <
class Scalar,
class LocalOrdinal,
class GlobalOrdinal,
class Node>
232 const RCP<Tpetra::Operator<Scalar,LocalOrdinal,GlobalOrdinal,Node> > &
tpetraOperator
246template <
class Scalar,
class LocalOrdinal,
class GlobalOrdinal,
class Node>
251 const RCP<
const Tpetra::Operator<Scalar,LocalOrdinal,GlobalOrdinal,Node> > &
tpetraOperator
Abstract base class for all LinearOpBase objects that can return an Epetra_Operator view of themselve...
Concrete Thyra::LinearOpBase subclass for Tpetra::Operator.
virtual bool rowStatIsSupportedImpl(const RowStatLinearOpBaseUtils::ERowStat rowStat) const
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
bool opSupportedImpl(Thyra::EOpTransp M_trans) const
virtual bool supportsScaleLeftImpl() const
RCP< const Thyra::VectorSpaceBase< Scalar > > range() const
Teuchos::ConstNonconstObjectContainer< Tpetra::Operator< Scalar, LocalOrdinal, GlobalOrdinal, Node > > tpetraOperator_
TpetraLinearOp()
Construct to uninitialized.
RCP< const VectorSpaceBase< Scalar > > rangeSpace_
virtual void getRowStatImpl(const RowStatLinearOpBaseUtils::ERowStat rowStat, const Ptr< VectorBase< Scalar > > &rowStatVec) const
void initializeImpl(const RCP< const VectorSpaceBase< Scalar > > &rangeSpace, const RCP< const VectorSpaceBase< Scalar > > &domainSpace, const RCP< TpetraOperator_t > &tpetraOperator)
virtual void scaleLeftImpl(const VectorBase< Scalar > &row_scaling)
virtual void scaleRightImpl(const VectorBase< Scalar > &col_scaling)
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.
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< 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.
RCP< const Tpetra::Operator< Scalar, LocalOrdinal, GlobalOrdinal, Node > > getConstTpetraOperator() const
Get embedded const Tpetra::Operator.
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.
virtual bool supportsScaleRightImpl() const
RCP< Tpetra::Operator< Scalar, LocalOrdinal, GlobalOrdinal, Node > > getTpetraOperator()
Get embedded non-const Tpetra::Operator.
RCP< const Thyra::VectorSpaceBase< Scalar > > domain() const
RCP< const VectorSpaceBase< Scalar > > domainSpace_
TEUCHOS_DEPRECATED RCP< T > rcp(T *p, Dealloc_T dealloc, bool owns_mem)