10 #ifndef __Teko_BlockLowerTriInverseOp_hpp__
11 #define __Teko_BlockLowerTriInverseOp_hpp__
14 #include "Teko_BlockImplicitLinearOp.hpp"
62 virtual void implicitApply(
const BlockedMultiVector &x, BlockedMultiVector &y,
63 const double alpha = 1.0,
const double beta = 0.0)
const;
66 virtual void describe(Teuchos::FancyOStream &out_arg,
67 const Teuchos::EVerbosityLevel verbLevel)
const;
71 const BlockedLinearOp
L_;
74 Teuchos::RCP<const Thyra::ProductVectorSpaceBase<double> >
76 Teuchos::RCP<const Thyra::ProductVectorSpaceBase<double> >
80 mutable BlockedMultiVector srcScrap_;
81 mutable BlockedMultiVector dstScrap_;
82 mutable bool allocated =
false;
90 inline LinearOp createBlockLowerTriInverseOp(BlockedLinearOp &U,
91 const std::vector<LinearOp> &invDiag) {
95 inline LinearOp createBlockLowerTriInverseOp(BlockedLinearOp &L,
96 const std::vector<LinearOp> &invDiag,
97 const std::string &str) {
98 Teuchos::RCP<Thyra::LinearOpBase<double> > result =
99 Teuchos::rcp(
new BlockLowerTriInverseOp(L, invDiag));
100 result->setObjectLabel(str);
virtual void implicitApply(const BlockedMultiVector &x, BlockedMultiVector &y, const double alpha=1.0, const double beta=0.0) const =0
Perform a matrix vector multiply with this implicitly defined blocked operator.
virtual VectorSpace domain() const
Domain space of this operator.
const BlockedLinearOp L_
operator
Teuchos::RCP< const Thyra::ProductVectorSpaceBase< double > > productDomain_
Domain vector space.
virtual void implicitApply(const BlockedMultiVector &x, BlockedMultiVector &y, const double alpha=1.0, const double beta=0.0) const
Perform a matrix vector multiply with this operator.
std::vector< LinearOp > invDiag_
(Approximate) Inverses of the diagonal operators
A virtual class that simplifies the construction of custom operators.
This linear operator computes the inverse of a lower triangular matrix.
Teuchos::RCP< const Thyra::ProductVectorSpaceBase< double > > productRange_
Range vector space.
virtual VectorSpace range() const
Range space of this operator.