47 #ifndef __Teko_BlockUpperTriInverseOp_hpp__ 
   48 #define __Teko_BlockUpperTriInverseOp_hpp__ 
   51 #include "Teko_BlockImplicitLinearOp.hpp" 
   97    virtual void implicitApply(
const BlockedMultiVector & x, BlockedMultiVector & y,
 
   98               const double alpha = 1.0, 
const double beta = 0.0) 
const;
 
  114               const BlockedMultiVector & x, BlockedMultiVector & y,
 
  115               const double alpha = 1.0, 
const double beta = 0.0) 
const;
 
  118    virtual void describe(Teuchos::FancyOStream &out_arg,
 
  119                          const Teuchos::EVerbosityLevel verbLevel) 
const;
 
  123    const BlockedLinearOp 
U_;  
 
  130    mutable BlockedMultiVector srcScrap_;
 
  131    mutable BlockedMultiVector dstScrap_;
 
  139 inline LinearOp createBlockUpperTriInverseOp(BlockedLinearOp & U,
const std::vector<LinearOp> & invDiag)
 
  144 inline LinearOp createBlockUpperTriInverseOp(BlockedLinearOp & U,
const std::vector<LinearOp> & invDiag,
const std::string & str)
 
  146    Teuchos::RCP<Thyra::LinearOpBase<double> > result = Teuchos::rcp(
new BlockUpperTriInverseOp(U,invDiag));
 
  147    result->setObjectLabel(str);
 
virtual VectorSpace domain() const 
Domain space of this operator. 
 
std::vector< LinearOp > invDiag_
(Approximate) Inverses of the diagonal operators 
 
virtual VectorSpace range() const 
Range space of this operator. 
 
Teuchos::RCP< const Thyra::ProductVectorSpaceBase< double > > productRange_
Range 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. 
 
const BlockedLinearOp U_
operator  
 
A virtual class that simplifies the construction of custom operators. 
 
Teuchos::RCP< const Thyra::ProductVectorSpaceBase< double > > productDomain_
Domain vector space. 
 
This linear operator computes the inverse of a upper triangular matrix.