10#ifndef THYRA_TPETRA_LINEAR_OP_DECL_HPP
11#define THYRA_TPETRA_LINEAR_OP_DECL_HPP
13#include "Thyra_LinearOpDefaultBase.hpp"
14#include "Thyra_TpetraVectorSpace_decl.hpp"
15#include "Thyra_ScaledLinearOpBase.hpp"
16#include "Thyra_RowStatLinearOpBase.hpp"
17#include "Tpetra_Operator.hpp"
18#include "Tpetra_CrsMatrix.hpp"
19#include "Teuchos_ConstNonconstObjectContainer.hpp"
21#if defined(HAVE_THYRA_EPETRA) && defined(HAVE_TPETRA_EPETRA)
22# define HAVE_THYRA_TPETRA_EPETRA
25#ifdef HAVE_THYRA_TPETRA_EPETRA
26# include "Thyra_EpetraLinearOpBase.hpp"
27# include "Tpetra_EpetraRowMatrix.hpp"
40template <
class Scalar,
class LocalOrdinal,
class GlobalOrdinal=LocalOrdinal,
41 class Node=Tpetra::KokkosClassic::DefaultNode::DefaultNodeType>
46#ifdef HAVE_THYRA_TPETRA_EPETRA
47 ,
virtual public EpetraLinearOpBase
64 const RCP<Tpetra::Operator<Scalar,LocalOrdinal,GlobalOrdinal,Node> > &tpetraOperator
71 const RCP<
const Tpetra::Operator<Scalar,LocalOrdinal,GlobalOrdinal,Node> > &tpetraOperator
95#ifdef HAVE_THYRA_TPETRA_EPETRA
101 void getNonconstEpetraOpView(
108 void getEpetraOpView(
160 const RowStatLinearOpBaseUtils::ERowStat rowStat)
const;
164 const RowStatLinearOpBaseUtils::ERowStat rowStat,
180#ifdef HAVE_THYRA_TPETRA_EPETRA
184 template<
class TpetraOperator_t>
198template <
class Scalar,
class LocalOrdinal,
class GlobalOrdinal,
class Node>
203 const RCP<Tpetra::Operator<Scalar,LocalOrdinal,GlobalOrdinal,Node> > &tpetraOperator);
210template <
class Scalar,
class LocalOrdinal,
class GlobalOrdinal,
class Node>
215 const RCP<
const Tpetra::Operator<Scalar,LocalOrdinal,GlobalOrdinal,Node> > &tpetraOperator);
Node subclass that provides a good default implementation for the describe() function.
Interface for a collection of column vectors called a multi-vector.
Interface for exxtracting row statistics as a VectorBase from a supporting LinearOpBase object.
Applies left or right sclaing to the linear operator.
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
TpetraLinearOp()
Construct to uninitialized.
virtual void getRowStatImpl(const RowStatLinearOpBaseUtils::ERowStat rowStat, const Ptr< VectorBase< Scalar > > &rowStatVec) const
virtual void scaleLeftImpl(const VectorBase< Scalar > &row_scaling)
virtual void scaleRightImpl(const VectorBase< Scalar > &col_scaling)
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 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
Abstract interface for finite-dimensional dense vectors.
Abstract interface for objects that represent a space for vectors.
EOpTransp
Enumeration for determining how a linear operator is applied. `*.