1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66
|
/*
ARPACK++ v1.0 8/1/1997
c++ interface to ARPACK code.
MODULE RCompGSl.h
Printing eigenvalues of a complex generalized problem
(ARrcCompGenEig version).
ARPACK Authors
Richard Lehoucq
Danny Sorensen
Chao Yang
Dept. of Computational & Applied Mathematics
Rice University
Houston, Texas
*/
#ifndef RCOMPGSL_H
#define RCOMPGSL_H
#include "arrgcomp.h"
template<class FLOAT>
void Solution(ARrcCompGenEig<FLOAT> &Prob)
/*
Prints eigenvalues on standard "cout" stream.
*/
{
int i, n, nconv, mode;
n = Prob.GetN();
nconv = Prob.ConvergedEigenvalues();
mode = Prob.GetMode();
cout << endl << endl << "Testing ARPACK++ class ARrcCompGenEig" << endl;
cout << "Complex eigenvalue problem: A*x - B*x*lambda" << endl;
switch (mode) {
case 2:
cout << "Regular mode";
break;
case 3:
cout << "Shift and invert mode";
}
cout << endl << endl;
cout << "Dimension of the system : " << n << endl;
cout << "Number of 'requested' eigenvalues : " << Prob.GetNev() << endl;
cout << "Number of 'converged' eigenvalues : " << nconv << endl;
cout << "Number of Arnoldi vectors generated: " << Prob.GetNcv() << endl;
cout << "Number of iterations taken : " << Prob.GetIter() << endl;
cout << endl;
if (Prob.EigenvaluesFound()) {
cout << "Eigenvalues:" << endl;
for (i=0; i<nconv; i++) {
cout << " lambda[" << (i+1) << "]: " << Prob.Eigenvalue(i) << endl;
}
cout << endl;
}
} // Solution
#endif // RCOMPGSL_H
|