52 #ifndef __Teko_LU2x2InverseOp_hpp__
53 #define __Teko_LU2x2InverseOp_hpp__
56 #include "Teko_BlockImplicitLinearOp.hpp"
114 LU2x2InverseOp(
const BlockedLinearOp &A,
const LinearOp &invA00,
const LinearOp &invS);
127 LU2x2InverseOp(
const BlockedLinearOp &A,
const LinearOp &hatInvA00,
const LinearOp &tildeInvA00,
128 const LinearOp &invS);
151 virtual void implicitApply(
const BlockedMultiVector &x, BlockedMultiVector &y,
152 const double alpha = 1.0,
const double beta = 0.0)
const;
155 virtual void describe(Teuchos::FancyOStream &out_arg,
156 const Teuchos::EVerbosityLevel verbLevel)
const;
162 const BlockedLinearOp
A_;
171 Teuchos::RCP<const Thyra::ProductVectorSpaceBase<double> >
173 Teuchos::RCP<const Thyra::ProductVectorSpaceBase<double> >
214 const std::string &str) {
215 Teuchos::RCP<Thyra::LinearOpBase<double> > result =
217 result->setObjectLabel(str);
238 return Teuchos::rcp(
new LU2x2InverseOp(A, hatInvA00, tildeInvA00, invS));
257 LinearOp &invS,
const std::string &str) {
258 Teuchos::RCP<Thyra::LinearOpBase<double> > result =
259 Teuchos::rcp(
new LU2x2InverseOp(A, hatInvA00, tildeInvA00, invS));
260 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.
This linear operator approximates the inverse of a block operator using a block decomposition...
const LinearOp hatInvA00_
inverse of
Teuchos::RCP< const Thyra::ProductVectorSpaceBase< double > > productRange_
Range vector space.
const LinearOp A01_
operator
LinearOp createLU2x2InverseOp(BlockedLinearOp &A, LinearOp &hatInvA00, LinearOp &tildeInvA00, LinearOp &invS)
Constructor method for building LU2x2InverseOp.
Teuchos::RCP< const Thyra::ProductVectorSpaceBase< double > > productDomain_
Domain vector space.
virtual VectorSpace domain() const
Domain space of this operator.
LinearOp createLU2x2InverseOp(BlockedLinearOp &A, LinearOp &hatInvA00, LinearOp &tildeInvA00, LinearOp &invS, const std::string &str)
Constructor method for building LU2x2InverseOp.
LinearOp createLU2x2InverseOp(BlockedLinearOp &A, LinearOp &invA00, LinearOp &invS, const std::string &str)
Constructor method for building LU2x2InverseOp.
const BlockedLinearOp A_
operator
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.
A virtual class that simplifies the construction of custom operators.
const LinearOp invS_
inverse of
LinearOp createLU2x2InverseOp(BlockedLinearOp &A, LinearOp &invA00, LinearOp &invS)
Constructor method for building LU2x2InverseOp.
virtual VectorSpace range() const
Range space of this operator.
const LinearOp A10_
operator
const LinearOp tildeInvA00_
inverse of