44 #include "Thyra_ScaledAdjointLinearOpBase.hpp"
46 class Epetra_Operator;
57 double wrappedScalar = 0.0;
58 EOpTransp wrappedTransp =
NOTRANS;
59 const LinearOpBase<double> *wrappedFwdOp = NULL;
60 ::Thyra::unwrap(fwdOp, &wrappedScalar, &wrappedTransp, &wrappedFwdOp);
62 dynamic_cast<const EpetraLinearOpBase*>(wrappedFwdOp);
71 const RCP<LinearOpBase<double> > &fwdOp,
73 const Ptr<EOpTransp> &epetraOpTransp,
74 const Ptr<EApplyEpetraOpAs> &epetraOpApplyAs,
75 const Ptr<EAdjointEpetraOp> &epetraOpAdjointSupport,
76 const Ptr<double> &epetraOpScalar
86 const RCP<
const LinearOpBase<double> > &fwdOp,
88 const Ptr<EOpTransp> &epetraOpTransp,
89 const Ptr<EApplyEpetraOpAs> &epetraOpApplyAs,
90 const Ptr<EAdjointEpetraOp> &epetraOpAdjointSupport,
91 const Ptr<double> &epetraOpScalar
94 using Teuchos::outArg;
95 double wrappedFwdOpScalar = 0.0;
96 EOpTransp wrappedFwdOpTransp =
NOTRANS;
98 unwrap(fwdOp,&wrappedFwdOpScalar, &wrappedFwdOpTransp, &wrappedFwdOp);
100 Teuchos::rcp_dynamic_cast<const EpetraLinearOpBase>(wrappedFwdOp,
true);
101 EOpTransp epetra_epetraOpTransp;
102 epetraFwdOp->getEpetraOpView(epetraOp, outArg(epetra_epetraOpTransp),
103 epetraOpApplyAs, epetraOpAdjointSupport);
104 *epetraOpTransp = trans_trans(real_trans(epetra_epetraOpTransp), wrappedFwdOpTransp);
105 *epetraOpScalar = wrappedFwdOpScalar;