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 &);
83LinearOp buildSmootherLinearOp(
const LinearOp &A,
const LinearOp &invM,
unsigned int applications,
84 bool useDestAsInitialGuess =
false);
85LinearOp 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_;
A virtual class that simplifies the construction of custom operators.
Abstract class which block preconditioner factories in Teko should be based on.
virtual VectorSpace range() const
Range space of this operator.
virtual void setRequestHandler(const Teuchos::RCP< RequestHandler > &rh)
Set 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.
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.