Stokhos Package Browser (Single Doxygen Collection)
Version of the Day
Main Page
Related Pages
Modules
Namespaces
Classes
Files
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Groups
Pages
src
epetra
Stokhos_GaussSeidelPreconditioner.hpp
Go to the documentation of this file.
1
// @HEADER
2
// *****************************************************************************
3
// Stokhos Package
4
//
5
// Copyright 2009 NTESS and the Stokhos contributors.
6
// SPDX-License-Identifier: BSD-3-Clause
7
// *****************************************************************************
8
// @HEADER
9
10
#ifndef STOKHOS_GAUSS_SEIDEL_PRECONDITIONER_HPP
11
#define STOKHOS_GAUSS_SEIDEL_PRECONDITIONER_HPP
12
13
#include "
Stokhos_ConfigDefs.h
"
14
15
#ifdef HAVE_STOKHOS_NOX
16
17
#include "NOX_Config.h"
18
19
#ifdef HAVE_NOX_EPETRAEXT
20
21
#include "
Teuchos_RCP.hpp
"
22
23
#include "
Stokhos_SGPreconditioner.hpp
"
24
#include "EpetraExt_MultiComm.h"
25
#include "
Stokhos_OrthogPolyBasis.hpp
"
26
#include "
Stokhos_EpetraSparse3Tensor.hpp
"
27
#include "
Epetra_Map.h
"
28
#include "
Epetra_Export.h
"
29
#include "NOX_Epetra_LinearSystem.H"
30
#include "
Teuchos_ParameterList.hpp
"
31
#include "EpetraExt_BlockMultiVector.h"
32
33
namespace
Stokhos {
34
39
class
GaussSeidelPreconditioner :
public
Stokhos::SGPreconditioner
{
40
41
public
:
42
44
GaussSeidelPreconditioner(
45
const
Teuchos::RCP<const EpetraExt::MultiComm>
& sg_comm,
46
const
Teuchos::RCP
<
const
Stokhos::OrthogPolyBasis<int,double>
>& sg_basis,
47
const
Teuchos::RCP<const Stokhos::EpetraSparse3Tensor>
& epetraCijk,
48
const
Teuchos::RCP<const Epetra_Map>
& base_map,
49
const
Teuchos::RCP<const Epetra_Map>
& sg_map,
50
const
Teuchos::RCP<NOX::Epetra::LinearSystem>
& det_solver,
51
const
Teuchos::RCP<Teuchos::ParameterList>
& params);
52
54
virtual
~GaussSeidelPreconditioner();
55
58
60
virtual
void
61
setupPreconditioner(
const
Teuchos::RCP<Stokhos::SGOperator>
& sg_op,
62
const
Epetra_Vector
& x);
63
65
68
70
virtual
int
SetUseTranspose(
bool
UseTranspose);
71
76
virtual
int
Apply(
const
Epetra_MultiVector
& Input,
77
Epetra_MultiVector
& Result)
const
;
78
83
virtual
int
ApplyInverse(
const
Epetra_MultiVector
& X,
84
Epetra_MultiVector
& Y)
const
;
85
87
virtual
double
NormInf()
const
;
88
90
virtual
const
char
* Label ()
const
;
91
93
virtual
bool
UseTranspose()
const
;
94
99
virtual
bool
HasNormInf()
const
;
100
105
virtual
const
Epetra_Comm
& Comm()
const
;
106
111
virtual
const
Epetra_Map
& OperatorDomainMap ()
const
;
112
117
virtual
const
Epetra_Map
& OperatorRangeMap ()
const
;
118
120
121
private
:
122
124
GaussSeidelPreconditioner(
const
GaussSeidelPreconditioner&);
125
127
GaussSeidelPreconditioner& operator=(
const
GaussSeidelPreconditioner&);
128
129
protected
:
130
132
std::string label;
133
135
Teuchos::RCP<const EpetraExt::MultiComm>
sg_comm;
136
138
Teuchos::RCP<const Stokhos::OrthogPolyBasis<int,double>
> sg_basis;
139
141
Teuchos::RCP<const Stokhos::EpetraSparse3Tensor>
epetraCijk;
142
144
Teuchos::RCP<const Epetra_Map>
base_map;
145
147
Teuchos::RCP<const Epetra_Map>
sg_map;
148
150
bool
is_stoch_parallel;
151
153
Teuchos::RCP<const Epetra_BlockMap>
stoch_row_map;
154
156
Teuchos::RCP<NOX::Epetra::LinearSystem>
det_solver;
157
159
Teuchos::RCP<Teuchos::ParameterList>
params;
160
162
bool
useTranspose;
163
165
Teuchos::RCP<Stokhos::SGOperator>
sg_op;
166
168
Teuchos::RCP<Stokhos::EpetraOperatorOrthogPoly >
sg_poly;
169
171
typedef
Stokhos::Sparse3Tensor<int,double>
Cijk_type
;
172
174
Teuchos::RCP<const Cijk_type >
Cijk;
175
177
mutable
Teuchos::RCP<EpetraExt::BlockMultiVector>
sg_df_block;
178
180
mutable
Teuchos::RCP<EpetraExt::BlockMultiVector>
sg_y_block;
181
183
mutable
Teuchos::RCP<Epetra_MultiVector>
kx;
184
186
bool
is_parallel;
187
189
Teuchos::RCP<const Epetra_BlockMap>
sg_col_map;
190
192
Teuchos::RCP<Epetra_Export>
col_exporter;
193
195
mutable
Teuchos::RCP<EpetraExt::BlockMultiVector>
sg_df_col;
196
198
mutable
Teuchos::RCP<EpetraExt::BlockMultiVector>
sg_df_tmp;
199
200
201
};
// class GaussSeidelPreconditioner
202
203
}
// namespace Stokhos
204
205
#endif
206
207
#endif
208
209
#endif // STOKHOS_GAUSS_SEIDEL_PRECONDITIONER_HPP
Epetra_MultiVector
Epetra_Map
Stokhos::Sparse3Tensor< int, double >
Epetra_Export.h
Epetra_Vector
Stokhos::OrthogPolyBasis< int, double >
Epetra_Comm
Teuchos_ParameterList.hpp
Stokhos_SGPreconditioner.hpp
Sparse3TensorUnitTest::Cijk_type
Stokhos::Sparse3Tensor< int, double > Cijk_type
Definition:
Stokhos_Sparse3TensorUnitTest.cpp:20
Stokhos_OrthogPolyBasis.hpp
Epetra_Map.h
Teuchos::RCP< const EpetraExt::MultiComm >
Stokhos_EpetraSparse3Tensor.hpp
Stokhos::SGPreconditioner
An abstract class to represent a generic stochastic Galerkin preconditioner as an Epetra_Operator...
Definition:
Stokhos_SGPreconditioner.hpp:24
Stokhos_ConfigDefs.h
Teuchos_RCP.hpp
Generated on Fri Nov 22 2024 09:18:12 for Stokhos Package Browser (Single Doxygen Collection) by
1.8.5