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.2 2/18/2000
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 ARFLOAT>
void Solution(ARrcCompGenEig<ARFLOAT> &Prob)
/*
Prints eigenvalues on standard "cout" stream.
*/
{
int i, n, nconv, mode;
n = Prob.GetN();
nconv = Prob.ConvergedEigenvalues();
mode = Prob.GetMode();
std::cout << std::endl << std::endl << "Testing ARPACK++ class ARrcCompGenEig" << std::endl;
std::cout << "Complex eigenvalue problem: A*x - B*x*lambda" << std::endl;
switch (mode) {
case 2:
std::cout << "Regular mode";
break;
case 3:
std::cout << "Shift and invert mode";
}
std::cout << std::endl << std::endl;
std::cout << "Dimension of the system : " << n << std::endl;
std::cout << "Number of 'requested' eigenvalues : " << Prob.GetNev() << std::endl;
std::cout << "Number of 'converged' eigenvalues : " << nconv << std::endl;
std::cout << "Number of Arnoldi vectors generated: " << Prob.GetNcv() << std::endl;
std::cout << "Number of iterations taken : " << Prob.GetIter() << std::endl;
std::cout << std::endl;
if (Prob.EigenvaluesFound()) {
std::cout << "Eigenvalues:" << std::endl;
for (i=0; i<nconv; i++) {
std::cout << " lambda[" << (i+1) << "]: " << Prob.Eigenvalue(i) << std::endl;
}
std::cout << std::endl;
}
} // Solution
#endif // RCOMPGSL_H
|