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;
104 Teko::LinearOp A_, M1_, M2_;
121 const Teuchos::RCP<const Teko::BlockPreconditionerFactory> & SecondFactory);
126 Teko::LinearOp buildPreconditionerOperator(Teko::BlockedLinearOp & blo,
130 virtual Teuchos::RCP<Teko::PreconditionerState> buildPreconditionerState()
const;
134 Teuchos::RCP<const Teko::BlockPreconditionerFactory> FirstFactory_;
135 Teuchos::RCP<const Teko::BlockPreconditionerFactory> SecondFactory_;
138 virtual void initializeFromParameterList(
const Teuchos::ParameterList & pl);
virtual Teko::VectorSpace domain() const
Domain space of this operator.
virtual Teko::VectorSpace range() const
Range space of this operator.
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.