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);
90class SmootherPreconditionerFactory :
public virtual Teko::PreconditionerFactory {
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.
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.