Teko
Version of the Day
Toggle main menu visibility
Loading...
Searching...
No Matches
src
NS
Teko_InvModALStrategy.hpp
1
/*
2
* Author: Zhen Wang
3
* Email: wangz@ornl.gov
4
* zhen.wang@alum.emory.edu
5
*/
6
7
#ifndef __Teko_ModALStrategy_hpp__
8
#define __Teko_ModALStrategy_hpp__
9
10
#include "Teuchos_RCP.hpp"
11
12
#include "Thyra_LinearOpBase.hpp"
13
14
#include "
Teko_Utilities.hpp
"
15
#include "Teko_InverseFactory.hpp"
16
#include "Teko_BlockPreconditionerFactory.hpp"
17
18
namespace
Teko
19
{
20
21
namespace
NS
22
{
23
24
class
ModALPrecondState
;
25
26
class
InvModALStrategy
27
{
28
public
:
29
31
InvModALStrategy();
32
33
InvModALStrategy(
const
Teuchos::RCP<InverseFactory> & factory);
34
35
InvModALStrategy(
const
Teuchos::RCP<InverseFactory> & factory,
36
LinearOp & pressureMassMatrix);
37
38
InvModALStrategy(
const
Teuchos::RCP<InverseFactory> & invFactA,
39
const
Teuchos::RCP<InverseFactory> & invFactS);
40
41
InvModALStrategy(
const
Teuchos::RCP<InverseFactory> & invFactA,
42
const
Teuchos::RCP<InverseFactory> & invFactS,
43
LinearOp & pressureMassMatrix);
44
46
virtual
47
~InvModALStrategy()
48
{
49
}
50
58
virtual
LinearOp
59
getInvA11p(BlockPreconditionerState & state)
const
;
60
68
virtual
LinearOp
69
getInvA22p(BlockPreconditionerState & state)
const
;
70
78
virtual
LinearOp
79
getInvA33p(BlockPreconditionerState & state)
const
;
80
88
virtual
LinearOp
89
getInvS(BlockPreconditionerState & state)
const
;
90
98
virtual
void
99
buildState(
const
BlockedLinearOp & A, BlockPreconditionerState & state)
const
;
100
104
virtual
void
105
initializeState(
const
BlockedLinearOp & A, ModALPrecondState * state)
const
;
106
113
virtual
void
114
computeInverses(
const
BlockedLinearOp & A, ModALPrecondState * state)
const
;
115
121
void
122
setPressureMassMatrix(
const
LinearOp & pressureMassMatrix);
123
129
void
130
setGamma(
double
gamma);
131
136
virtual
void
137
setSymmetric(
bool
isSymmetric)
138
{
139
isSymmetric_ = isSymmetric;
140
}
141
142
protected
:
143
144
// In the modified AL preconditioner, we need to two methods,
145
// one for solving \f$ A_{ii}, i = 1, 2(, 3) \f$,
146
// the other for solving \f$ S \f$.
147
Teuchos::RCP<InverseFactory> invFactoryA_;
148
Teuchos::RCP<InverseFactory> invFactoryS_;
149
LinearOp pressureMassMatrix_;
150
double
gamma_;
151
152
DiagonalType
scaleType_;
153
bool
isSymmetric_;
154
int
dim_;
155
};
156
157
}
// end namespace NS
158
159
}
// end namespace Teko
160
161
#endif
/* __Teko_ModALStrategy_hpp__ */
Teko_Utilities.hpp
Teko::DiagonalType
DiagonalType
Definition
Teko_Utilities.hpp:823
Teko::NS::ModALPrecondState
Class for saving state variables for ModALPreconditionerFactory.
Definition
Teko_ModALPreconditionerFactory.hpp:23
Generated by
1.17.0