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"
18#include "Teko_ALOperator.hpp"
26class ModALPrecondState;
35 InvModALStrategy(
const Teuchos::RCP<InverseFactory> & factory);
37 InvModALStrategy(
const Teuchos::RCP<InverseFactory> & factory,
38 LinearOp & pressureMassMatrix);
40 InvModALStrategy(
const Teuchos::RCP<InverseFactory> & invFactA,
41 const Teuchos::RCP<InverseFactory> & invFactS);
43 InvModALStrategy(
const Teuchos::RCP<InverseFactory> & invFactA,
44 const Teuchos::RCP<InverseFactory> & invFactS,
45 LinearOp & pressureMassMatrix);
61 getInvA11p(BlockPreconditionerState & state)
const;
71 getInvA22p(BlockPreconditionerState & state)
const;
81 getInvA33p(BlockPreconditionerState & state)
const;
91 getInvS(BlockPreconditionerState & state)
const;
101 buildState(
const BlockedLinearOp & A, BlockPreconditionerState & state)
const;
107 initializeState(
const BlockedLinearOp & A, ModALPrecondState * state)
const;
116 computeInverses(
const BlockedLinearOp & A, ModALPrecondState * state)
const;
124 setPressureMassMatrix(
const LinearOp & pressureMassMatrix);
132 setGamma(
double gamma);
139 setSymmetric(
bool isSymmetric)
141 isSymmetric_ = isSymmetric;
149 Teuchos::RCP<InverseFactory> invFactoryA_;
150 Teuchos::RCP<InverseFactory> invFactoryS_;
151 LinearOp pressureMassMatrix_;
DiagonalType
Type describing the type of diagonal to construct.