22#include "Epetra_ConfigDefs.h"
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"
30#include "CheckingTools.h"
31#include "FortranRoutines.h"
32#include "ModalAnalysisSolver.h"
34#include "ModalTools.h"
35#include "SortingTools.h"
37class BRQMIN :
public ModalAnalysisSolver {
41 const CheckingTools myVerify;
42 const Epetra_BLAS callBLAS;
43 const FortranRoutines callFortran;
44 const Epetra_LAPACK callLAPACK;
46 const SortingTools mySort;
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;
55 int maxIterEigenSolve;
77 double timeLocalSolve;
78 double timeLocalUpdate;
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;
96 BRQMIN(
const BRQMIN &ref);
97 BRQMIN& operator=(
const BRQMIN &ref);
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);
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);
111 int solve(
int numEigen, Epetra_MultiVector &Q,
double *lambda);
113 int reSolve(
int numEigen, Epetra_MultiVector &Q,
double *lambda,
int startingEV = 0);
115 int minimumSpaceDimension(
int nev)
const {
return nev+blockSize; }
117 void initializeCounters();
119 void algorithmInfo()
const;
120 void historyInfo()
const;
121 void memoryInfo()
const;
122 void operationInfo()
const;
123 void timeInfo()
const;