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"
26 class ModALPrecondState;
28 class InvModALStrategy
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_;
154 DiagonalType scaleType_;