19#ifndef MODIFIED_ARPACK_MODE3_H
20#define MODIFIED_ARPACK_MODE3_H
22#include "Epetra_ConfigDefs.h"
24#include "Epetra_BLAS.h"
25#include "Epetra_Comm.h"
26#include "Epetra_Operator.h"
27#include "Epetra_Time.h"
30#include "Epetra_MpiComm.h"
33#include "CheckingTools.h"
34#include "FortranRoutines.h"
35#include "ModalAnalysisSolver.h"
37#include "ModalTools.h"
38#include "SortingTools.h"
40class ModifiedARPACKm3 :
public ModalAnalysisSolver {
44 const CheckingTools myVerify;
45 const Epetra_BLAS callBLAS;
46 const FortranRoutines callFortran;
48 const SortingTools mySort;
50 const Epetra_Comm &MyComm;
51 const Epetra_Operator *K;
52 const Epetra_Operator *M;
53 const Epetra_Time MyWatch;
56 int maxIterEigenSolve;
81 ModifiedARPACKm3(
const ModifiedARPACKm3 &ref);
82 ModifiedARPACKm3& operator=(
const ModifiedARPACKm3 &ref);
86 ModifiedARPACKm3(
const Epetra_Comm &_Comm,
const Epetra_Operator *KK,
87 double _tol = 1.0e-08,
int _maxIter = 100,
int _verb = 0);
89 ModifiedARPACKm3(
const Epetra_Comm &_Comm,
const Epetra_Operator *KK,
90 const Epetra_Operator *MM,
91 double _tol = 1.0e-08,
int _maxIter = 100,
int _verb = 0,
96 int solve(
int numEigen, Epetra_MultiVector &Q,
double *lambda);
98 int reSolve(
int numEigen, Epetra_MultiVector &Q,
double *lambda,
int startingEV = 0);
100 int reSolve(
int numEigen, Epetra_MultiVector &Q,
double *lambda,
int startingEV,
101 const Epetra_MultiVector *orthoVec);
103 int minimumSpaceDimension(
int nev)
const {
return nev+1; }
105 void initializeCounters();
107 void algorithmInfo()
const;
108 void historyInfo()
const;
109 void memoryInfo()
const;
110 void operationInfo()
const;
111 void timeInfo()
const;