Teko
Version of the Day
Toggle main menu visibility
Loading...
Searching...
No Matches
src
NS
Teko_InvModALStrategy.hpp
1
// @HEADER
2
// *****************************************************************************
3
// Teko: A package for block and physics based preconditioning
4
//
5
// Copyright 2010 NTESS and the Teko contributors.
6
// SPDX-License-Identifier: BSD-3-Clause
7
// *****************************************************************************
8
// @HEADER
9
10
/*
11
* Author: Zhen Wang
12
* Email: wangz@ornl.gov
13
* zhen.wang@alum.emory.edu
14
*/
15
16
#ifndef __Teko_ModALStrategy_hpp__
17
#define __Teko_ModALStrategy_hpp__
18
19
#include "Teuchos_RCP.hpp"
20
21
#include "Thyra_LinearOpBase.hpp"
22
23
#include "
Teko_Utilities.hpp
"
24
#include "Teko_InverseFactory.hpp"
25
#include "Teko_BlockPreconditionerFactory.hpp"
26
27
namespace
Teko {
28
29
namespace
NS {
30
31
class
ModALPrecondState
;
32
33
class
InvModALStrategy {
34
public
:
36
InvModALStrategy();
37
38
InvModALStrategy(
const
Teuchos::RCP<InverseFactory>& factory);
39
40
InvModALStrategy(
const
Teuchos::RCP<InverseFactory>& factory, LinearOp& pressureMassMatrix);
41
42
InvModALStrategy(
const
Teuchos::RCP<InverseFactory>& invFactA,
43
const
Teuchos::RCP<InverseFactory>& invFactS);
44
45
InvModALStrategy(
const
Teuchos::RCP<InverseFactory>& invFactA,
46
const
Teuchos::RCP<InverseFactory>& invFactS, LinearOp& pressureMassMatrix);
47
49
virtual
~InvModALStrategy() {}
50
58
virtual
LinearOp getInvA11p(BlockPreconditionerState& state)
const
;
59
67
virtual
LinearOp getInvA22p(BlockPreconditionerState& state)
const
;
68
76
virtual
LinearOp getInvA33p(BlockPreconditionerState& state)
const
;
77
85
virtual
LinearOp getInvS(BlockPreconditionerState& state)
const
;
86
94
virtual
void
buildState(
const
BlockedLinearOp& A, BlockPreconditionerState& state)
const
;
95
99
virtual
void
initializeState(
const
BlockedLinearOp& A, ModALPrecondState* state)
const
;
100
107
virtual
void
computeInverses(
const
BlockedLinearOp& A, ModALPrecondState* state)
const
;
108
114
void
setPressureMassMatrix(
const
LinearOp& pressureMassMatrix);
115
121
void
setGamma(
double
gamma);
122
127
virtual
void
setSymmetric(
bool
isSymmetric) { isSymmetric_ = isSymmetric; }
128
129
protected
:
130
// In the modified AL preconditioner, we need to two methods,
131
// one for solving \f$ A_{ii}, i = 1, 2(, 3) \f$,
132
// the other for solving \f$ S \f$.
133
Teuchos::RCP<InverseFactory> invFactoryA_;
134
Teuchos::RCP<InverseFactory> invFactoryS_;
135
LinearOp pressureMassMatrix_;
136
double
gamma_;
137
138
DiagonalType
scaleType_;
139
bool
isSymmetric_;
140
int
dim_;
141
};
142
143
}
// end namespace NS
144
145
}
// end namespace Teko
146
147
#endif
/* __Teko_ModALStrategy_hpp__ */
Teko_Utilities.hpp
Teko::DiagonalType
DiagonalType
Definition
Teko_Utilities.hpp:809
Teko::NS::ModALPrecondState
Class for saving state variables for ModALPreconditionerFactory.
Definition
Teko_ModALPreconditionerFactory.hpp:20
Generated by
1.17.0