7#ifndef __Teko_ModALStrategy_hpp__
8#define __Teko_ModALStrategy_hpp__
10#include "Teuchos_RCP.hpp"
12#include "Thyra_LinearOpBase.hpp"
15#include "Teko_InverseFactory.hpp"
16#include "Teko_BlockPreconditionerFactory.hpp"
24class ModALPrecondState;
33 InvModALStrategy(
const Teuchos::RCP<InverseFactory> & factory);
35 InvModALStrategy(
const Teuchos::RCP<InverseFactory> & factory,
36 LinearOp & pressureMassMatrix);
38 InvModALStrategy(
const Teuchos::RCP<InverseFactory> & invFactA,
39 const Teuchos::RCP<InverseFactory> & invFactS);
41 InvModALStrategy(
const Teuchos::RCP<InverseFactory> & invFactA,
42 const Teuchos::RCP<InverseFactory> & invFactS,
43 LinearOp & pressureMassMatrix);
59 getInvA11p(BlockPreconditionerState & state)
const;
69 getInvA22p(BlockPreconditionerState & state)
const;
79 getInvA33p(BlockPreconditionerState & state)
const;
89 getInvS(BlockPreconditionerState & state)
const;
99 buildState(
const BlockedLinearOp & A, BlockPreconditionerState & state)
const;
105 initializeState(
const BlockedLinearOp & A, ModALPrecondState * state)
const;
114 computeInverses(
const BlockedLinearOp & A, ModALPrecondState * state)
const;
122 setPressureMassMatrix(
const LinearOp & pressureMassMatrix);
130 setGamma(
double gamma);
137 setSymmetric(
bool isSymmetric)
139 isSymmetric_ = isSymmetric;
147 Teuchos::RCP<InverseFactory> invFactoryA_;
148 Teuchos::RCP<InverseFactory> invFactoryS_;
149 LinearOp pressureMassMatrix_;
DiagonalType
Type describing the type of diagonal to construct.