22#include "Epetra_ConfigDefs.h"
24#include "Epetra_Comm.h"
25#include "Epetra_Operator.h"
26#include "Epetra_Time.h"
29#include "Epetra_MpiComm.h"
32#include "FortranRoutines.h"
33#include "ModalAnalysisSolver.h"
35#include "CheckingTools.h"
37class ARPACKm3 :
public ModalAnalysisSolver {
41 const CheckingTools myVerify;
42 const FortranRoutines callFortran;
44 const Epetra_Comm &MyComm;
45 const Epetra_Operator *K;
46 const Epetra_Operator *M;
47 const Epetra_Time MyWatch;
50 int maxIterEigenSolve;
70 ARPACKm3(
const ARPACKm3 &ref);
71 ARPACKm3& operator=(
const ARPACKm3 &ref);
75 ARPACKm3(
const Epetra_Comm &_Comm,
const Epetra_Operator *KK,
76 double _tol = 1.0e-08,
int _maxIter = 100,
int _verb = 0);
78 ARPACKm3(
const Epetra_Comm &_Comm,
const Epetra_Operator *KK,
char *_which,
79 double _tol = 1.0e-08,
int _maxIter = 100,
int _verb = 0);
81 ARPACKm3(
const Epetra_Comm &_Comm,
const Epetra_Operator *KK,
const Epetra_Operator *MM,
82 double _tol = 1.0e-08,
int _maxIter = 100,
int _verb = 0);
84 ARPACKm3(
const Epetra_Comm &_Comm,
const Epetra_Operator *KK,
const Epetra_Operator *MM,
85 char *_which,
double _tol = 1.0e-08,
int _maxIter = 100,
int _verb = 0);
89 int solve(
int numEigen, Epetra_MultiVector &Q,
double *lambda);
91 int reSolve(
int numEigen, Epetra_MultiVector &Q,
double *lambda,
int startingEV = 0);
93 int minimumSpaceDimension(
int nev)
const {
return nev+1; }
95 void initializeCounters();
97 void algorithmInfo()
const;
98 void memoryInfo()
const;
99 void operationInfo()
const;
100 void timeInfo()
const;