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,
bool useDestAsInitialGuess=
false);
64 SmootherLinearOp(
const LinearOp & A,
const LinearOp & invM,
unsigned int applications,
unsigned int block);
67 virtual VectorSpace
range()
const
68 {
return invM_->range(); }
72 {
return invM_->domain(); }
87 virtual void implicitApply(
const MultiVector & x, MultiVector & y,
88 const double alpha = 1.0,
const double beta = 0.0)
const;
98 typedef enum {Unspecified, RequestInitialGuess, DestAsInitialGuess, NoInitialGuess} InitialGuessType;
102 unsigned int applications_;
103 InitialGuessType initialGuessType_;
106 Teuchos::RCP<RequestMesg> requestMesg_;
109 Teuchos::RCP<RequestHandler> requestHandler_;
112 SmootherLinearOp(
const SmootherLinearOp &);
115 LinearOp buildSmootherLinearOp(
const LinearOp & A,
const LinearOp & invM,
unsigned int applications,
bool useDestAsInitialGuess=
false);
116 LinearOp buildSmootherLinearOp(
const LinearOp & A,
const LinearOp & invM,
unsigned int applications,
unsigned int initialGuessBlock);
120 class SmootherPreconditionerFactory
124 SmootherPreconditionerFactory();
139 virtual LinearOp buildPreconditionerOperator(LinearOp & lo,PreconditionerState & state)
const;
154 virtual void initializeFromParameterList(
const Teuchos::ParameterList & settings);
160 typedef enum {Unspecified, RequestInitialGuess, DestAsInitialGuess, NoInitialGuess} InitialGuessType;
163 unsigned int sweepCount_;
164 InitialGuessType initialGuessType_;
165 unsigned int initialGuessBlock_;
168 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.