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
|
/*
ARPACK++ v1.2 2/20/2000
c++ interface to ARPACK code.
MODULE SGenPrbA.h
Very simple template class intended to illustrate how to
use ARPACK++ to find some few eigenvalues and eigenvectors
of symmetric generalized problems in regular mode.
ARPACK Authors
Richard Lehoucq
Danny Sorensen
Chao Yang
Dept. of Computational & Applied Mathematics
Rice University
Houston, Texas
*/
#ifndef SGENPRBA_H
#define SGENPRBA_H
#include "blas1c.h"
#include "smatrixc.h"
#include "smatrixd.h"
template <class ART>
struct SymGenProblemA {
SymMatrixC<ART> A;
SymMatrixD<ART> B;
void MultOPv(ART* v, ART* w)
// Matrix-vector multiplication w <- inv(B)*A*v.
{
A.MultMv(v, w);
copy(A.ncols(), w, 1, v, 1);
B.SolveM(w);
}
SymGenProblemA(int nx): A(nx), B(nx)
// Constructor.
{
B.FactorM();
}
}; // struct SymGenProblemA.
#endif // SGENPRBA_H
|