Anasazi
Version of the Day
Main Page
Related Pages
Modules
Namespaces
Classes
Files
Examples
File List
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Groups
Pages
epetra
src
ModalAnalysisSolvers
BRQMIN.h
1
// @HEADER
2
// *****************************************************************************
3
// Anasazi: Block Eigensolvers Package
4
//
5
// Copyright 2004 NTESS and the Anasazi contributors.
6
// SPDX-License-Identifier: BSD-3-Clause
7
// *****************************************************************************
8
// @HEADER
9
10
// This software is a result of the research described in the report
11
//
12
// "A comparison of algorithms for modal analysis in the absence
13
// of a sparse direct method", P. Arbenz, R. Lehoucq, and U. Hetmaniuk,
14
// Sandia National Laboratories, Technical report SAND2003-1028J.
15
//
16
// It is based on the Epetra, AztecOO, and ML packages defined in the Trilinos
17
// framework ( http://trilinos.org/ ).
18
19
#ifndef BRQMIN_H
20
#define BRQMIN_H
21
22
#include "Epetra_ConfigDefs.h"
23
24
#include "Epetra_BLAS.h"
25
#include "Epetra_Comm.h"
26
#include "Epetra_LAPACK.h"
27
#include "Epetra_Operator.h"
28
#include "Epetra_Time.h"
29
30
#include "CheckingTools.h"
31
#include "FortranRoutines.h"
32
#include "ModalAnalysisSolver.h"
33
#include "MyMemory.h"
34
#include "ModalTools.h"
35
#include "SortingTools.h"
36
37
class
BRQMIN :
public
ModalAnalysisSolver {
38
39
private
:
40
41
const
CheckingTools myVerify;
42
const
Epetra_BLAS
callBLAS;
43
const
FortranRoutines callFortran;
44
const
Epetra_LAPACK
callLAPACK;
45
ModalTools modalTool;
46
const
SortingTools mySort;
47
48
const
Epetra_Comm
&MyComm;
49
const
Epetra_Operator
*K;
50
const
Epetra_Operator
*M;
51
const
Epetra_Operator
*Prec;
52
const
Epetra_Time
MyWatch;
53
54
double
tolEigenSolve;
55
int
maxIterEigenSolve;
56
57
int
blockSize;
58
59
double
*normWeight;
60
61
int
verbose;
62
63
int
historyCount;
64
double
*resHistory;
65
66
double
memRequested;
67
double
highMem;
68
69
int
massOp;
70
int
numRestart;
71
int
outerIter;
72
int
precOp;
73
int
residual;
74
int
stifOp;
75
76
double
timeLocalProj;
77
double
timeLocalSolve;
78
double
timeLocalUpdate;
79
double
timeMassOp;
80
double
timeNorm;
81
double
timeOrtho;
82
double
timeOuterLoop;
83
double
timePostProce;
84
double
timePrecOp;
85
double
timeResidual;
86
double
timeRestart;
87
double
timeSearchP;
88
double
timeStifOp;
89
90
// Private functions
91
void
accuracyCheck(
const
Epetra_MultiVector
*X,
const
Epetra_MultiVector
*MX,
92
const
Epetra_MultiVector
*R,
const
Epetra_MultiVector
*Q,
93
const
Epetra_MultiVector
*P)
const
;
94
95
// Don't define these functions
96
BRQMIN(
const
BRQMIN &ref);
97
BRQMIN& operator=(
const
BRQMIN &ref);
98
99
public
:
100
101
BRQMIN(
const
Epetra_Comm
&_Comm,
const
Epetra_Operator
*KK,
102
const
Epetra_Operator
*PP,
int
_blk,
103
double
_tol = 1.0e-08,
int
_maxIter = 100,
int
_verb = 0);
104
105
BRQMIN(
const
Epetra_Comm
&_Comm,
const
Epetra_Operator
*KK,
106
const
Epetra_Operator
*MM,
const
Epetra_Operator
*PP,
int
_blk,
107
double
_tol = 1.0e-08,
int
_maxIter = 100,
int
_verb = 0,
double
*_weight = 0);
108
109
~BRQMIN();
110
111
int
solve(
int
numEigen,
Epetra_MultiVector
&Q,
double
*lambda);
112
113
int
reSolve(
int
numEigen,
Epetra_MultiVector
&Q,
double
*lambda,
int
startingEV = 0);
114
115
int
minimumSpaceDimension(
int
nev)
const
{
return
nev+blockSize; }
116
117
void
initializeCounters();
118
119
void
algorithmInfo()
const
;
120
void
historyInfo()
const
;
121
void
memoryInfo()
const
;
122
void
operationInfo()
const
;
123
void
timeInfo()
const
;
124
125
};
126
127
#endif
Epetra_MultiVector
Epetra_Time
Epetra_BLAS
Epetra_Comm
Epetra_LAPACK
Epetra_Operator
Generated on Fri Jul 25 2025 09:18:08 for Anasazi by
1.8.5