10 #ifndef __Teko_MultiPreconditionerFactory_hpp__
11 #define __Teko_MultiPreconditionerFactory_hpp__
13 #include "Teko_BlockPreconditionerFactory.hpp"
15 #include "Teko_BlockImplicitLinearOp.hpp"
27 Teuchos::RCP<BlockPreconditionerState> StateOne_;
28 Teuchos::RCP<BlockPreconditionerState> StateTwo_;
57 MultPrecsLinearOp(
const Teko::LinearOp &A,
const Teko::LinearOp &M1,
const Teko::LinearOp &M2)
58 : A_(A), M1_(M1), M2_(M2) {}
60 virtual Teko::VectorSpace
range()
const {
return M1_->range(); }
61 virtual Teko::VectorSpace
domain()
const {
return M1_->domain(); }
62 virtual void implicitApply(
const Teko::BlockedMultiVector &r, Teko::BlockedMultiVector &y,
63 const double alpha = 1.0,
const double beta = 0.0)
const;
68 Teko::LinearOp A_, M1_, M2_;
84 const Teuchos::RCP<const Teko::BlockPreconditionerFactory> &FirstFactory,
85 const Teuchos::RCP<const Teko::BlockPreconditionerFactory> &SecondFactory);
100 Teuchos::RCP<const Teko::BlockPreconditionerFactory> FirstFactory_;
101 Teuchos::RCP<const Teko::BlockPreconditionerFactory> SecondFactory_;
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 Teko::VectorSpace domain() const
Domain space of this operator.
virtual LinearOp buildPreconditionerOperator(BlockedLinearOp &blo, BlockPreconditionerState &state) const =0
Function that is called to build the preconditioner for the linear operator that is passed in...
virtual Teuchos::RCP< Teko::PreconditionerState > buildPreconditionerState() const
Build the MultPrecondState object.
virtual Teko::VectorSpace range() const
Range space of this operator.
virtual void initializeFromParameterList(const Teuchos::ParameterList &pl)
Initialize from a parameter list.
Abstract class which block preconditioner factories in Teko should be based on.
An implementation of a state object for block preconditioners.
A virtual class that simplifies the construction of custom operators.
MultPrecsLinearOp(const Teko::LinearOp &A, const Teko::LinearOp &M1, const Teko::LinearOp &M2)
Constructor.
Teko::LinearOp buildPreconditionerOperator(Teko::BlockedLinearOp &blo, Teko::BlockPreconditionerState &state) const
Function inherited from Teko::BlockPreconditionerFactory.
virtual void implicitApply(const Teko::BlockedMultiVector &r, Teko::BlockedMultiVector &y, const double alpha=1.0, const double beta=0.0) const
Perform a matrix vector multiply with this implicitly defined blocked operator.