FEI
Version of the Day
Main Page
Related Pages
Namespaces
Classes
Files
File List
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Groups
Pages
support-Trilinos
fei_Solver_AztecOO.hpp
1
/*
2
// @HEADER
3
// ************************************************************************
4
// FEI: Finite Element Interface to Linear Solvers
5
// Copyright (2005) Sandia Corporation.
6
//
7
// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, the
8
// U.S. Government retains certain rights in this software.
9
//
10
// Redistribution and use in source and binary forms, with or without
11
// modification, are permitted provided that the following conditions are
12
// met:
13
//
14
// 1. Redistributions of source code must retain the above copyright
15
// notice, this list of conditions and the following disclaimer.
16
//
17
// 2. Redistributions in binary form must reproduce the above copyright
18
// notice, this list of conditions and the following disclaimer in the
19
// documentation and/or other materials provided with the distribution.
20
//
21
// 3. Neither the name of the Corporation nor the names of the
22
// contributors may be used to endorse or promote products derived from
23
// this software without specific prior written permission.
24
//
25
// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY
26
// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
27
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
28
// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE
29
// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
30
// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
31
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
32
// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
33
// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
34
// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
35
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
36
//
37
// Questions? Contact Alan Williams (william@sandia.gov)
38
//
39
// ************************************************************************
40
// @HEADER
41
*/
42
43
#ifndef _fei_Solver_AztecOO_h_
44
#define _fei_Solver_AztecOO_h_
45
46
47
#include <fei_trilinos_macros.hpp>
48
49
#ifdef HAVE_FEI_AZTECOO
50
51
#include <fei_macros.hpp>
52
#include <fei_Solver.hpp>
53
#include <fei_Logger.hpp>
54
55
#ifdef HAVE_FEI_TEUCHOS
56
namespace
Teuchos {
57
class
ParameterList;
58
}
59
#endif
60
61
class
AztecOO;
62
class
Epetra_CrsMatrix
;
63
class
Epetra_LinearProblem
;
64
65
#ifdef HAVE_FEI_ML
66
#include <ml_include.h>
67
#include <ml_epetra_preconditioner.h>
68
#endif
69
72
class
Solver_AztecOO :
public
fei::Solver
,
private
fei::Logger
{
73
public
:
77
Solver_AztecOO();
78
81
virtual
~Solver_AztecOO();
82
97
int
solve
(
fei::LinearSystem
* linearSystem,
98
fei::Matrix
* preconditioningMatrix,
99
int
numParams,
100
const
char
*
const
* solverParams,
101
int
& iterationsTaken,
102
int
& status);
103
120
int
solve
(
fei::LinearSystem
* linearSystem,
121
fei::Matrix
* preconditioningMatrix,
122
const
fei::ParameterSet
& parameterSet,
123
int
& iterationsTaken,
124
int
& status);
125
126
AztecOO& getAztecOO();
127
128
Teuchos::ParameterList
& get_ParameterList();
129
130
void
setMaxIters(
int
maxits) {maxIters_ = maxits;}
131
void
setTolerance(
double
tol) {tolerance_ = tol;}
132
void
setUseTranspose(
bool
useTrans) {useTranspose_ = useTrans;}
133
134
void
setUseML(
bool
useml);
135
136
private
:
137
int
setup_ml_operator(AztecOO& azoo,
Epetra_CrsMatrix
* A);
138
139
private
:
140
AztecOO* azoo_;
141
double
tolerance_;
142
int
maxIters_;
143
bool
useTranspose_;
144
Teuchos::ParameterList
* paramlist_;
145
146
Epetra_LinearProblem
*linProb;
147
148
bool
useML_;
149
#ifdef HAVE_FEI_ML
150
Epetra_Operator
* ml_prec_;
151
bool
ml_defaults_set_;
152
int
*ml_aztec_options_;
153
double
*ml_aztec_params_;
154
#endif
155
156
std::string name_;
157
std::string dbgprefix_;
158
};
//class Solver_AztecOO
159
160
#endif // HAVE_FEI_AZTECOO
161
162
#endif
fei::Logger
Definition:
fei_Logger.hpp:19
fei::LinearSystem
Definition:
fei_LinearSystem.hpp:26
fei::ParameterSet
Definition:
fei_ParameterSet.hpp:46
fei::Solver
Definition:
fei_Solver.hpp:22
Teuchos::ParameterList
Epetra_CrsMatrix
Epetra_Operator
fei::Solver::solve
virtual int solve(fei::LinearSystem *linearSystem, fei::Matrix *preconditioningMatrix, const fei::ParameterSet ¶meterSet, int &iterationsTaken, int &status)
Definition:
fei_Solver.cpp:65
fei::Matrix
Definition:
fei_Matrix.hpp:30
Epetra_LinearProblem
Generated by
1.8.5