44 #include "Thyra_AddedLinearOpBase.hpp" 
   45 #include "Thyra_ScaledAdjointLinearOpBase.hpp" 
   49 #include "Thyra_DiagonalLinearOpBase.hpp" 
   50 #include "Thyra_DefaultDiagonalLinearOp.hpp" 
   51 #include "Thyra_IdentityLinearOpBase.hpp" 
   52 #include "Thyra_VectorStdOps.hpp" 
   53 #include "Epetra_Map.h" 
   54 #include "Epetra_LocalMap.h" 
   55 #include "Epetra_SerialComm.h" 
   56 #include "Epetra_Vector.h" 
   57 #include "Epetra_CrsMatrix.h" 
   59 #include "EpetraExt_ConfigDefs.h" 
   60 #include "EpetraExt_MatrixMatrix.h" 
   61 #include "EpetraExt_MMHelpers.h" 
   62 #include "EpetraExt_Transpose_RowMatrix.h" 
   65 #include "EpetraExt_RowMatrixOut.h" 
   75       const LinearOpBase<double> &)
 const 
   85    return nonconstEpetraLinearOp();
 
   90    const LinearOpBase<double> &op_in,
 
   91    const Ptr<LinearOpBase<double> > &op_inout)
 const 
   94    using EpetraExt::MatrixMatrix;
 
   96    using Teuchos::rcp_dynamic_cast;
 
  103    const AddedLinearOpBase<double> & add_op =
 
  104          dyn_cast<
const AddedLinearOpBase<double> >(op_in);
 
  113    double A_scalar = 0.0;
 
  116    unwrap( op_A, &A_scalar, &A_transp, &A );
 
  121    double B_scalar = 0.0;
 
  124    unwrap( op_B, &B_scalar, &B_transp, &B );
 
  132    if(rcp_dynamic_cast<
const Thyra::IdentityLinearOpBase<double> >(A)!=
Teuchos::null) {
 
  134      Thyra::V_S( d.
ptr(), 1.0 ); 
 
  135      A = Thyra::diagonal(d);
 
  137    if(rcp_dynamic_cast<
const Thyra::IdentityLinearOpBase<double> >(B)!=
Teuchos::null) {
 
  139      Thyra::V_S( d.
ptr(), 1.0 ); 
 
  140      B = Thyra::diagonal(d);
 
  146       = rcp_dynamic_cast<
const DiagonalLinearOpBase<double> >(A);
 
  148       = rcp_dynamic_cast<
const DiagonalLinearOpBase<double> >(B);
 
  170             rcp_dynamic_cast<Epetra_CrsMatrix>(thyra_epetra_op_inout.
epetra_op());
 
  171       Epetra_CrsMatrix * epetra_op_raw = epetra_op.
get();
 
  174       const int add_epetra_B_err 
 
  175          = EpetraExt::MatrixMatrix::Add(*epetra_A,A_transp==
CONJTRANS,A_scalar,*epetra_B,B_transp==
CONJTRANS,B_scalar,epetra_op_raw);
 
  181       epetra_op->FillComplete(epetra_A->DomainMap(),epetra_A->RangeMap()); 
 
  191       double matScalar = (dA!=
Teuchos::null) ? B_scalar : A_scalar; 
 
  193       double diagScalar = (dA!=
Teuchos::null) ? A_scalar : B_scalar; 
 
  201             rcp_dynamic_cast<Epetra_CrsMatrix>(thyra_epetra_op_inout.
epetra_op());
 
  204          epetra_op = 
Teuchos::rcp(
new Epetra_CrsMatrix(*crsMat));
 
  206          *epetra_op = *crsMat;
 
  212          epetra_op->Scale(matScalar);
 
  217                                  "Thyra::EpetraExtractAddTransformer::transform ExtractDiagonalCopy failed!");;    
 
  218       diagonal->Update(diagScalar,*v,1.0); 
 
  220                                  "Thyra::EpetraExtractAddTransformer::transform ReplaceDiagonalValues failed!");;    
 
  227                                  "Your case of adding Epetra operators is not yet implemented! Contact the Thyra developers.");
 
Concrete LinearOpBase adapter subclass for Epetra_Operator object. 
 
#define TEUCHOS_TEST_FOR_EXCEPTION(throw_exception_test, Exception, msg)
 
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. 
 
TEUCHOS_DEPRECATED RCP< T > rcp(T *p, Dealloc_T dealloc, bool owns_mem)
 
T_To & dyn_cast(T_From &from)
 
RCP< Epetra_Vector > get_Epetra_Vector(const Epetra_Map &map, const RCP< VectorBase< double > > &v)
Get a non-const Epetra_Vector view from a non-const VectorBase object if possible. 
 
Teuchos::RCP< Epetra_Operator > get_Epetra_Operator(LinearOpBase< double > &op)
Full specialization for Scalar=double. 
 
#define TEUCHOS_ASSERT(assertion_test)
 
#define TEUCHOS_ASSERT_EQUALITY(val1, val2)
 
#define TEUCHOS_TEST_FOR_EXCEPT(throw_exception_test)
 
#define TEUCHOS_UNREACHABLE_RETURN(dummyReturnVal)
 
RCP< Epetra_Operator > epetra_op()