42 #ifndef THYRA_TPETRA_LINEAR_OP_DECL_HPP 43 #define THYRA_TPETRA_LINEAR_OP_DECL_HPP 45 #include "Thyra_LinearOpDefaultBase.hpp" 46 #include "Thyra_TpetraVectorSpace_decl.hpp" 47 #include "Thyra_ScaledLinearOpBase.hpp" 48 #include "Thyra_RowStatLinearOpBase.hpp" 49 #include "Tpetra_Operator.hpp" 50 #include "Teuchos_ConstNonconstObjectContainer.hpp" 52 #if defined(HAVE_THYRA_EPETRA) && defined(HAVE_TPETRA_EPETRA) 53 # define HAVE_THYRA_TPETRA_EPETRA 56 #ifdef HAVE_THYRA_TPETRA_EPETRA 57 # include "Thyra_EpetraLinearOpBase.hpp" 58 # include "Tpetra_EpetraRowMatrix.hpp" 71 template <
class Scalar,
class LocalOrdinal,
class GlobalOrdinal=LocalOrdinal,
72 class Node=KokkosClassic::DefaultNode::DefaultNodeType>
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
104 RCP<Tpetra::Operator<Scalar,LocalOrdinal,GlobalOrdinal,Node> >
108 RCP<const Tpetra::Operator<Scalar,LocalOrdinal,GlobalOrdinal,Node> >
117 RCP<const Thyra::VectorSpaceBase<Scalar> >
range()
const;
120 RCP<const Thyra::VectorSpaceBase<Scalar> >
domain()
const;
124 #ifdef HAVE_THYRA_TPETRA_EPETRA 130 void getNonconstEpetraOpView(
131 const Ptr<RCP<Epetra_Operator> > &epetraOp,
132 const Ptr<EOpTransp> &epetraOpTransp,
133 const Ptr<EApplyEpetraOpAs> &epetraOpApplyAs,
134 const Ptr<EAdjointEpetraOp> &epetraOpAdjointSupport
137 void getEpetraOpView(
138 const Ptr<RCP<const Epetra_Operator> > &epetraOp,
139 const Ptr<EOpTransp> &epetraOpTransp,
140 const Ptr<EApplyEpetraOpAs> &epetraOpApplyAs,
141 const Ptr<EAdjointEpetraOp> &epetraOpAdjointSupport
146 #endif // HAVE_THYRA_TPETRA_EPETRA 189 const RowStatLinearOpBaseUtils::ERowStat rowStat)
const;
193 const RowStatLinearOpBaseUtils::ERowStat rowStat,
200 RCP<const VectorSpaceBase<Scalar> >
203 RCP<const VectorSpaceBase<Scalar> >
206 Teuchos::ConstNonconstObjectContainer<Tpetra::Operator<Scalar,LocalOrdinal,GlobalOrdinal,Node> >
209 #ifdef HAVE_THYRA_TPETRA_EPETRA 210 mutable RCP<Epetra_Operator> epetraOp_;
213 template<
class TpetraOperator_t>
217 const RCP<TpetraOperator_t> &tpetraOperator
227 template <
class Scalar,
class LocalOrdinal,
class GlobalOrdinal,
class Node>
228 RCP<TpetraLinearOp<Scalar, LocalOrdinal, GlobalOrdinal, Node> >
232 const RCP<Tpetra::Operator<Scalar,LocalOrdinal,GlobalOrdinal,Node> > &tpetraOperator
235 const RCP<TpetraLinearOp<Scalar, LocalOrdinal, GlobalOrdinal, Node> > op =
237 op->initialize(rangeSpace, domainSpace, tpetraOperator);
246 template <
class Scalar,
class LocalOrdinal,
class GlobalOrdinal,
class Node>
247 RCP<const TpetraLinearOp<Scalar, LocalOrdinal, GlobalOrdinal, Node> >
251 const RCP<
const Tpetra::Operator<Scalar,LocalOrdinal,GlobalOrdinal,Node> > &tpetraOperator
254 const RCP<TpetraLinearOp<Scalar, LocalOrdinal, GlobalOrdinal, Node> > op =
256 op->constInitialize(rangeSpace, domainSpace, tpetraOperator);
264 #endif // THYRA_TPETRA_LINEAR_OP_DECL_HPP bool opSupportedImpl(Thyra::EOpTransp M_trans) const
EOpTransp
Enumeration for determining how a linear operator is applied. `*.
RCP< const Thyra::VectorSpaceBase< Scalar > > range() const
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.
RCP< const Thyra::VectorSpaceBase< Scalar > > domain() const
Abstract base class for all LinearOpBase objects that can return an Epetra_Operator view of themselve...
Node subclass that provides a good default implementation for the describe() function.
virtual bool supportsScaleLeftImpl() const
Abstract interface for objects that represent a space for vectors.
Interface for a collection of column vectors called a multi-vector.
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.
RCP< const Tpetra::Operator< Scalar, LocalOrdinal, GlobalOrdinal, Node > > getConstTpetraOperator() const
Get embedded const Tpetra::Operator.
RCP< Tpetra::Operator< Scalar, LocalOrdinal, GlobalOrdinal, Node > > getTpetraOperator()
Get embedded non-const Tpetra::Operator.
Abstract interface for finite-dimensional dense vectors.
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
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 bool rowStatIsSupportedImpl(const RowStatLinearOpBaseUtils::ERowStat rowStat) const
virtual void getRowStatImpl(const RowStatLinearOpBaseUtils::ERowStat rowStat, const Ptr< VectorBase< Scalar > > &rowStatVec) const
Applies left or right sclaing to the linear operator.
virtual void scaleLeftImpl(const VectorBase< Scalar > &row_scaling)
virtual void scaleRightImpl(const VectorBase< Scalar > &col_scaling)
Interface for exxtracting row statistics as a VectorBase from a supporting LinearOpBase object...
void initialize(const RCP< const VectorSpaceBase< Scalar > > &rangeSpace, const RCP< const VectorSpaceBase< Scalar > > &domainSpace, const RCP< Tpetra::Operator< Scalar, LocalOrdinal, GlobalOrdinal, Node > > &tpetraOperator)
Initialize.
virtual bool supportsScaleRightImpl() const
Concrete Thyra::LinearOpBase subclass for Tpetra::Operator.