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);
128 Teko::LinearOp buildPreconditionerOperator(Teko::BlockedLinearOp & blo,
132 virtual Teuchos::RCP<Teko::PreconditionerState> buildPreconditionerState()
const;
138 Teuchos::RCP<const Teko::BlockPreconditionerFactory> FirstFactory_;
139 Teuchos::RCP<const Teko::BlockPreconditionerFactory> SecondFactory_;
142 virtual void initializeFromParameterList(
const Teuchos::ParameterList & pl);
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 LinearOp buildPreconditionerOperator(BlockedLinearOp &blo, BlockPreconditionerState &state) const =0
Function that is called to build the preconditioner for the linear operator that is passed in...
Abstract class which block preconditioner factories in Teko should be based on.
An implementation of a state object for block preconditioners.
virtual Teko::VectorSpace range() const
Range space of this operator.
A virtual class that simplifies the construction of custom operators.
virtual Teko::VectorSpace domain() const
Domain space of this operator.
MultPrecsLinearOp(const Teko::LinearOp &A, const Teko::LinearOp &M1, const Teko::LinearOp &M2)
Constructor.