42 #ifndef THYRA_EPETRA_LINEAR_OP_HPP 
   43 #define THYRA_EPETRA_LINEAR_OP_HPP 
   45 #include "Thyra_LinearOpBase.hpp" 
   47 #include "Thyra_ScaledLinearOpBase.hpp" 
   48 #include "Thyra_RowStatLinearOpBase.hpp" 
   49 #include "Thyra_SpmdVectorSpaceBase.hpp" 
   51 #include "Epetra_RowMatrix.h" 
   79   : 
virtual public LinearOpBase<double>,
 
   80     virtual public ScaledLinearOpBase<double>,
 
   81     virtual public RowStatLinearOpBase<double>,
 
  205     const RCP<
const VectorSpaceBase<double> > &
range,
 
  206     const RCP<
const VectorSpaceBase<double> > &
domain,
 
  232     EOpTransp *opTrans = NULL,
 
  235     RCP<
const VectorSpaceBase<double> > *
range = NULL,
 
  236     RCP<
const VectorSpaceBase<double> > *
domain = NULL
 
  273     const Ptr<EOpTransp> &epetraOpTransp,
 
  274     const Ptr<EApplyEpetraOpAs> &epetraOpApplyAs,
 
  275     const Ptr<EAdjointEpetraOp> &epetraOpAdjointSupport
 
  280     const Ptr<EOpTransp> &epetraOpTransp,
 
  281     const Ptr<EApplyEpetraOpAs> &epetraOpApplyAs,
 
  282     const Ptr<EAdjointEpetraOp> &epetraOpAdjointSupport
 
  324     const EOpTransp M_trans,
 
  325     const MultiVectorBase<double> &X,
 
  326     const Ptr<MultiVectorBase<double> > &Y,
 
  343   virtual void scaleLeftImpl(
const VectorBase<double> &row_scaling);
 
  346   virtual void scaleRightImpl(
const VectorBase<double> &col_scaling);
 
  355     const RowStatLinearOpBaseUtils::ERowStat rowStat) 
const;
 
  359     const RowStatLinearOpBaseUtils::ERowStat rowStat,
 
  360     const Ptr<VectorBase<double> > &rowStatVec) 
const;
 
  445 partialNonconstEpetraLinearOp(
 
  446   const RCP<
const VectorSpaceBase<double> > &range,
 
  447   const RCP<
const VectorSpaceBase<double> > &domain,
 
  449   EOpTransp opTrans = NOTRANS,
 
  461 nonconstEpetraLinearOp(
 
  463   EOpTransp opTrans = NOTRANS,
 
  479   EOpTransp opTrans = NOTRANS,
 
  493 nonconstEpetraLinearOp(
 
  495   const std::string &label,
 
  496   EOpTransp opTrans = NOTRANS,
 
  512   const std::string &label,
 
  513   EOpTransp opTrans = NOTRANS,
 
  524 #endif  // THYRA_EPETRA_LINEAR_OP_HPP 
RCP< const SpmdVectorSpaceBase< double > > spmdDomain() const 
Return a smart pointer to the SpmdVectorSpaceBase object for the domain. 
 
virtual RCP< const SpmdVectorSpaceBase< double > > allocateDomain(const RCP< Epetra_Operator > &op, EOpTransp op_trans) const 
Allocate the domain space of the operator. 
 
Concrete LinearOpBase adapter subclass for Epetra_Operator object. 
 
virtual bool supportsScaleRightImpl() const 
 
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. 
 
RCP< const SpmdVectorSpaceBase< double > > spmdRange() const 
Return a smart pointer to the SpmdVectorSpaceBase object for the range. 
 
virtual bool rowStatIsSupportedImpl(const RowStatLinearOpBaseUtils::ERowStat rowStat) const 
 
virtual bool supportsScaleLeftImpl() const 
 
Abstract base class for all LinearOpBase objects that can return an Epetra_Operator view of themselve...
 
RCP< const SpmdVectorSpaceBase< double > > domain_
 
std::string description() const 
 
void getEpetraOpView(const Ptr< RCP< const Epetra_Operator > > &epetraOp, const Ptr< EOpTransp > &epetraOpTransp, const Ptr< EApplyEpetraOpAs > &epetraOpApplyAs, const Ptr< EAdjointEpetraOp > &epetraOpAdjointSupport) const 
 
RCP< const SpmdVectorSpaceBase< double > > range_
 
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. 
 
virtual void scaleLeftImpl(const VectorBase< double > &row_scaling)
 
EAdjointEpetraOp adjointSupport_
 
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)
 
void computeAbsRowSum(Epetra_Vector &rowStatVec_in) const 
Compute the absolute row sum for this matrix. 
 
const Epetra_Map & getRangeMap() const 
 
RCP< const VectorSpaceBase< double > > range() const 
 
RCP< const VectorSpaceBase< double > > domain() const 
 
void applyImpl(const EOpTransp M_trans, const MultiVectorBase< double > &X, const Ptr< MultiVectorBase< double > > &Y, const double alpha, const double beta) const 
 
void describe(FancyOStream &out, const Teuchos::EVerbosityLevel verbLevel) const 
 
basic_FancyOStream< char > FancyOStream
 
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. 
 
const Epetra_Map & getDomainMap() const 
 
virtual void getRowStatImpl(const RowStatLinearOpBaseUtils::ERowStat rowStat, const Ptr< VectorBase< double > > &rowStatVec) const 
 
virtual RCP< const SpmdVectorSpaceBase< double > > allocateRange(const RCP< Epetra_Operator > &op, EOpTransp op_trans) const 
Allocate the range space of the operator. 
 
bool opSupportedImpl(EOpTransp M_trans) const 
 
Apply using Epetra_Operator::Apply(...) 
 
virtual void scaleRightImpl(const VectorBase< double > &col_scaling)
 
EApplyEpetraOpAs applyAs_
 
RCP< Epetra_Operator > op_
 
RCP< const LinearOpBase< double > > clone() const 
 
RCP< Epetra_RowMatrix > rowMatrix_
 
RCP< Epetra_Operator > epetra_op()