42 #ifndef THYRA_EPETRA_LINEAR_OP_HPP 43 #define THYRA_EPETRA_LINEAR_OP_HPP 45 #include "Thyra_LinearOpBase.hpp" 46 #include "Thyra_EpetraLinearOpBase.hpp" 47 #include "Thyra_ScaledLinearOpBase.hpp" 48 #include "Thyra_RowStatLinearOpBase.hpp" 49 #include "Thyra_SpmdVectorSpaceBase.hpp" 51 #include "Epetra_RowMatrix.h" 148 const RCP<Epetra_Operator> &op,
207 const RCP<Epetra_Operator> &op,
231 RCP<Epetra_Operator> *op= NULL,
247 RCP<const SpmdVectorSpaceBase<double> >
spmdRange()
const;
257 RCP<const SpmdVectorSpaceBase<double> >
spmdDomain()
const;
263 RCP<const Epetra_Operator>
epetra_op()
const;
272 const Ptr<RCP<Epetra_Operator> > &epetraOp,
273 const Ptr<EOpTransp> &epetraOpTransp,
274 const Ptr<EApplyEpetraOpAs> &epetraOpApplyAs,
275 const Ptr<EAdjointEpetraOp> &epetraOpAdjointSupport
279 const Ptr<RCP<const Epetra_Operator> > &epetraOp,
280 const Ptr<EOpTransp> &epetraOpTransp,
281 const Ptr<EApplyEpetraOpAs> &epetraOpApplyAs,
282 const Ptr<EAdjointEpetraOp> &epetraOpAdjointSupport
291 RCP<const VectorSpaceBase<double> >
range()
const;
294 RCP<const VectorSpaceBase<double> >
domain()
const;
297 RCP<const LinearOpBase<double> >
clone()
const;
309 const Teuchos::EVerbosityLevel verbLevel
355 const RowStatLinearOpBaseUtils::ERowStat rowStat)
const;
359 const RowStatLinearOpBaseUtils::ERowStat rowStat,
377 virtual RCP< const SpmdVectorSpaceBase<double> >
379 const RCP<Epetra_Operator> &op,
393 virtual RCP< const SpmdVectorSpaceBase<double> >
395 const RCP<Epetra_Operator> &op,
406 bool isFullyInitialized_;
407 RCP<Epetra_Operator> op_;
408 RCP<Epetra_RowMatrix> rowMatrix_;
412 RCP<const SpmdVectorSpaceBase<double> > range_;
413 RCP<const SpmdVectorSpaceBase<double> > domain_;
418 const Epetra_Map& getRangeMap()
const;
419 const Epetra_Map& getDomainMap()
const;
428 void computeAbsRowSum(Epetra_Vector & rowStatVec_in)
const;
437 RCP<EpetraLinearOp> nonconstEpetraLinearOp();
445 partialNonconstEpetraLinearOp(
448 const RCP<Epetra_Operator> &op,
461 nonconstEpetraLinearOp(
462 const RCP<Epetra_Operator> &op,
476 RCP<const EpetraLinearOp>
478 const RCP<const Epetra_Operator> &op,
493 nonconstEpetraLinearOp(
494 const RCP<Epetra_Operator> &op,
495 const std::string &label,
509 RCP<const EpetraLinearOp>
511 const RCP<const Epetra_Operator> &op,
512 const std::string &label,
524 #endif // THYRA_EPETRA_LINEAR_OP_HPP Concrete LinearOpBase adapter subclass for Epetra_Operator object.
virtual RCP< const SpmdVectorSpaceBase< double > > allocateRange(const RCP< Epetra_Operator > &op, EOpTransp op_trans) const
Allocate the range space of the operator.
virtual bool supportsScaleLeftImpl() const
EOpTransp
Enumeration for determining how a linear operator is applied. `*.
void partiallyInitialize(const RCP< const VectorSpaceBase< double > > &range, const RCP< const VectorSpaceBase< double > > &domain, const RCP< Epetra_Operator > &op, EOpTransp opTrans=NOTRANS, EApplyEpetraOpAs applyAs=EPETRA_OP_APPLY_APPLY, EAdjointEpetraOp adjointSupport=EPETRA_OP_ADJOINT_SUPPORTED)
Partially initialize.
virtual void getRowStatImpl(const RowStatLinearOpBaseUtils::ERowStat rowStat, const Ptr< VectorBase< double > > &rowStatVec) const
Use the non-transposed operator.
Abstract base class for all LinearOpBase objects that can return an Epetra_Operator view of themselve...
RCP< const SpmdVectorSpaceBase< double > > spmdDomain() const
Return a smart pointer to the SpmdVectorSpaceBase object for the domain.
void getEpetraOpView(const Ptr< RCP< const Epetra_Operator > > &epetraOp, const Ptr< EOpTransp > &epetraOpTransp, const Ptr< EApplyEpetraOpAs > &epetraOpApplyAs, const Ptr< EAdjointEpetraOp > &epetraOpAdjointSupport) const
Abstract interface for objects that represent a space for vectors.
void initialize(const RCP< Epetra_Operator > &op, EOpTransp opTrans=NOTRANS, EApplyEpetraOpAs applyAs=EPETRA_OP_APPLY_APPLY, EAdjointEpetraOp adjointSupport=EPETRA_OP_ADJOINT_SUPPORTED, const RCP< const VectorSpaceBase< double > > &range=Teuchos::null, const RCP< const VectorSpaceBase< double > > &domain=Teuchos::null)
Fully initialize.
void describe(FancyOStream &out, const Teuchos::EVerbosityLevel verbLevel) const
virtual void scaleLeftImpl(const VectorBase< double > &row_scaling)
Interface for a collection of column vectors called a multi-vector.
RCP< const LinearOpBase< double > > clone() const
EAdjointEpetraOp
Determine if adjoints are supported on Epetra_Opeator or not.
EpetraLinearOp()
Construct to uninitialized.
void setFullyInitialized(bool isFullyInitialized=true)
Set to fully initialized.
void getNonconstEpetraOpView(const Ptr< RCP< Epetra_Operator > > &epetraOp, const Ptr< EOpTransp > &epetraOpTransp, const Ptr< EApplyEpetraOpAs > &epetraOpApplyAs, const Ptr< EAdjointEpetraOp > &epetraOpAdjointSupport)
Abstract interface for finite-dimensional dense vectors.
virtual bool rowStatIsSupportedImpl(const RowStatLinearOpBaseUtils::ERowStat rowStat) const
Base class for all linear operators.
virtual RCP< const SpmdVectorSpaceBase< double > > allocateDomain(const RCP< Epetra_Operator > &op, EOpTransp op_trans) const
Allocate the domain space of the operator.
RCP< const VectorSpaceBase< double > > range() const
Applies left or right sclaing to the linear operator.
RCP< const VectorSpaceBase< double > > domain() const
RCP< const SpmdVectorSpaceBase< double > > spmdRange() const
Return a smart pointer to the SpmdVectorSpaceBase object for the range.
Interface for exxtracting row statistics as a VectorBase from a supporting LinearOpBase object...
EApplyEpetraOpAs
Determine how the apply an Epetra_Operator as a linear operator.
void uninitialize(RCP< Epetra_Operator > *op=NULL, EOpTransp *opTrans=NULL, EApplyEpetraOpAs *applyAs=NULL, EAdjointEpetraOp *adjointSupport=NULL, RCP< const VectorSpaceBase< double > > *range=NULL, RCP< const VectorSpaceBase< double > > *domain=NULL)
Set to uninitialized and optionally return the current state.
bool opSupportedImpl(EOpTransp M_trans) const
Apply using Epetra_Operator::Apply(...)
Base abstract VectorSpaceBase class for all SPMD-based vector spaces.
virtual void scaleRightImpl(const VectorBase< double > &col_scaling)
virtual bool supportsScaleRightImpl() const
std::string description() const
void applyImpl(const EOpTransp M_trans, const MultiVectorBase< double > &X, const Ptr< MultiVectorBase< double > > &Y, const double alpha, const double beta) const
bool isFullyInitialized(const LinearOpBase< double > &M)
Determines if a linear operator is in the "Fully Initialized" state or not.
RCP< Epetra_Operator > epetra_op()