1 #include "Teko_ReorderedLinearOp.hpp" 5 ReorderedLinearOp::ReorderedLinearOp(
const Teuchos::RCP<const BlockReorderManager> & mgr,
6 const Teuchos::RCP<Thyra::LinearOpBase<double> > & blockedOp)
7 : mgr_(mgr), blockedOp_(blockedOp)
10 range_ = buildFlatVectorSpace(*mgr_,blockedOp_->range());
11 domain_ = buildFlatVectorSpace(*mgr_,blockedOp_->domain());
25 const double alpha,
const double beta)
const 27 using Teuchos::rcp_dynamic_cast;
29 Teuchos::RCP<const Thyra::MultiVectorBase<double> > reorderX
34 Thyra::apply(*blockedOp_,Thyra::NOTRANS,*reorderX,reorderY.ptr(),alpha,beta);
virtual void implicitApply(const MultiVector &x, MultiVector &y, const double alpha=1.0, const double beta=0.0) const
Perform a matrix vector multiply with this implicitly defined blocked operator.
Teuchos::RCP< const Thyra::MultiVectorBase< double > > buildReorderedMultiVector(const BlockReorderManager &mgr, const Teuchos::RCP< const Thyra::ProductMultiVectorBase< double > > &blkVec)
Convert a flat multi vector into a reordered multivector.
virtual VectorSpace range() const
Range space of this operator.
virtual VectorSpace domain() const
Domain space of this operator.