10 #ifndef __Teko_SmootherPreconditionerFactory_hpp__
11 #define __Teko_SmootherPreconditionerFactory_hpp__
14 #include "Teko_PreconditionerFactory.hpp"
15 #include "Teko_ImplicitLinearOp.hpp"
16 #include "Teko_RequestHandlerContainer.hpp"
26 SmootherLinearOp(
const LinearOp &A,
const LinearOp &invM,
unsigned int applications,
27 bool useDestAsInitialGuess =
false);
28 SmootherLinearOp(
const LinearOp &A,
const LinearOp &invM,
unsigned int applications,
32 virtual VectorSpace
range()
const {
return invM_->range(); }
35 virtual VectorSpace
domain()
const {
return invM_->domain(); }
50 virtual void implicitApply(
const MultiVector &x, MultiVector &y,
const double alpha = 1.0,
51 const double beta = 0.0)
const;
70 unsigned int applications_;
71 InitialGuessType initialGuessType_;
74 Teuchos::RCP<RequestMesg> requestMesg_;
77 Teuchos::RCP<RequestHandler> requestHandler_;
80 SmootherLinearOp(
const SmootherLinearOp &);
83 LinearOp buildSmootherLinearOp(
const LinearOp &A,
const LinearOp &invM,
unsigned int applications,
84 bool useDestAsInitialGuess =
false);
85 LinearOp buildSmootherLinearOp(
const LinearOp &A,
const LinearOp &invM,
unsigned int applications,
86 unsigned int initialGuessBlock);
93 SmootherPreconditionerFactory();
108 virtual LinearOp buildPreconditionerOperator(LinearOp &lo, PreconditionerState &state)
const;
123 virtual void initializeFromParameterList(
const Teuchos::ParameterList &settings);
137 unsigned int sweepCount_;
138 InitialGuessType initialGuessType_;
139 unsigned int initialGuessBlock_;
142 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.