47 #ifndef __Teko_SmootherPreconditionerFactory_hpp__
48 #define __Teko_SmootherPreconditionerFactory_hpp__
51 #include "Teko_PreconditionerFactory.hpp"
52 #include "Teko_ImplicitLinearOp.hpp"
53 #include "Teko_RequestHandlerContainer.hpp"
63 SmootherLinearOp(
const LinearOp &A,
const LinearOp &invM,
unsigned int applications,
64 bool useDestAsInitialGuess =
false);
65 SmootherLinearOp(
const LinearOp &A,
const LinearOp &invM,
unsigned int applications,
69 virtual VectorSpace
range()
const {
return invM_->range(); }
72 virtual VectorSpace
domain()
const {
return invM_->domain(); }
87 virtual void implicitApply(
const MultiVector &x, MultiVector &y,
const double alpha = 1.0,
88 const double beta = 0.0)
const;
107 unsigned int applications_;
108 InitialGuessType initialGuessType_;
111 Teuchos::RCP<RequestMesg> requestMesg_;
114 Teuchos::RCP<RequestHandler> requestHandler_;
117 SmootherLinearOp(
const SmootherLinearOp &);
120 LinearOp buildSmootherLinearOp(
const LinearOp &A,
const LinearOp &invM,
unsigned int applications,
121 bool useDestAsInitialGuess =
false);
122 LinearOp buildSmootherLinearOp(
const LinearOp &A,
const LinearOp &invM,
unsigned int applications,
123 unsigned int initialGuessBlock);
130 SmootherPreconditionerFactory();
145 virtual LinearOp buildPreconditionerOperator(LinearOp &lo, PreconditionerState &state)
const;
160 virtual void initializeFromParameterList(
const Teuchos::ParameterList &settings);
174 unsigned int sweepCount_;
175 InitialGuessType initialGuessType_;
176 unsigned int initialGuessBlock_;
179 Teuchos::RCP<Teko::InverseFactory> precFactory_;
Abstract class which block preconditioner factories in Teko should be based on.
A virtual class that simplifies the construction of custom operators.
virtual void setRequestHandler(const Teuchos::RCP< RequestHandler > &rh)
Set the request handler with pointers to the appropriate callbacks.
virtual VectorSpace range() const
Range space of this operator.
virtual VectorSpace domain() const
Domain space of this operator.
virtual Teuchos::RCP< RequestHandler > getRequestHandler() const
Get the request handler with pointers to the appropriate callbacks.
virtual void implicitApply(const MultiVector &x, MultiVector &y, const double alpha=1.0, const double beta=0.0) const
Perform a matrix vector multiply with this implicitly defined blocked operator.