47#ifndef __Teko_BlockPreconditionerFactory_hpp__
48#define __Teko_BlockPreconditionerFactory_hpp__
50#include "Teuchos_ParameterListAcceptor.hpp"
53#include "Thyra_SolveSupportTypes.hpp"
54#include "Thyra_LinearOpSourceBase.hpp"
55#include "Thyra_PreconditionerFactoryBase.hpp"
56#include "Thyra_DefaultBlockedLinearOp.hpp"
57#include "Thyra_DefaultPreconditioner.hpp"
61#include "Teko_InverseLibrary.hpp"
62#include "Teko_CloneFactory.hpp"
63#include "Teko_PreconditionerState.hpp"
64#include "Teko_PreconditionerFactory.hpp"
68using Thyra::LinearOpBase;
69using Thyra::DefaultPreconditioner;
72using Teuchos::ParameterList;
144 bool isCompatible(
const Thyra::LinearOpSourceBase<double> &fwdOpSrc)
const;
const BlockedMultiVector toBlockedMultiVector(const MultiVector &bmv)
Convert to a BlockedMultiVector from a MultiVector.
Abstract class which block preconditioner factories in Teko should be based on.
virtual LinearOp buildPreconditionerOperator(BlockedLinearOp &blo, BlockPreconditionerState &state) const =0
Function that is called to build the preconditioner for the linear operator that is passed in.
bool isCompatible(const Thyra::LinearOpSourceBase< double > &fwdOpSrc) const
is this operator compatiable with the preconditioner factory?
virtual RCP< PreconditionerState > buildPreconditionerState() const
Function that permits the construction of an arbitrary BlockPreconditionerState object.
RCP< BlockPreconditionerState > buildBlockPreconditionerState() const
Function that constructs a BlockPreconditionerState object.
An implementation of a state object for block preconditioners.
virtual const Teko::BlockedMultiVector getBlockedSourceVector() const
Set the vector associated with this operator (think nonlinear system)
virtual void setBlockSourceVector(const Teko::BlockedMultiVector &srcVec)
Set the vector associated with this operator (think nonlinear system)
Abstract class which block preconditioner factories in Teko should be based on.
An implementation of a state object preconditioners.
virtual void setSourceVector(const Teko::MultiVector &srcVec)
Set the vector associated with this operator (think nonlinear system)
virtual const Teko::MultiVector getSourceVector() const
Set the vector associated with this operator (think nonlinear system)