47 #ifndef __Teko_MultiPreconditionerFactory_hpp__
48 #define __Teko_MultiPreconditionerFactory_hpp__
50 #include "Teko_BlockPreconditionerFactory.hpp"
52 #include "Teko_BlockImplicitLinearOp.hpp"
64 Teuchos::RCP<BlockPreconditionerState> StateOne_;
65 Teuchos::RCP<BlockPreconditionerState> StateTwo_;
96 const Teko::LinearOp &M2): A_(A), M1_(M1), M2_(M2) { }
98 virtual Teko::VectorSpace
range()
const {
return M1_->range(); }
99 virtual Teko::VectorSpace
domain()
const {
return M1_->domain();}
100 virtual void implicitApply(
const Teko::BlockedMultiVector & r, Teko::BlockedMultiVector & y,
101 const double alpha = 1.0,
const double beta = 0.0)
const;
106 Teko::LinearOp A_, M1_, M2_;
123 const Teuchos::RCP<const Teko::BlockPreconditionerFactory> & SecondFactory);
138 Teuchos::RCP<const Teko::BlockPreconditionerFactory> FirstFactory_;
139 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.