>
> Hello numerical analysis experts,
>
> I am in need of Fortran 90 code that implements the Lanzcos algorithm
> for finding a few (chosen by the user) eigenvalues of a seminegative
> (one eigenvalue 0, the rest negative) symmetric real matrix. There is a
> nice parallel Fortran 90 implementation, TRLAN
> (http://www.nersc.gov/~kewu/trlan.html), but I want to modify the code
> and adopt it to global HPF, so something simpler (smaller) is preferred,
> even if numerical robustness and speed are jeopardized. It is absolutely
> essential that the routine accepts the matrix-vector product routine as
> a user argument, so I can use my own multiplication routines.
>
> Anybody aware of such code?
> Thanks a lot,
> Aleksandar
>
A good package is ARPACK. This is written in F77. The package
uses a reverse communication interface to obtain
the matrix times vector operation, so it is easy
to use with a user code. The package is quite big.
The home page for ARPACK is
http://www.caam.rice.edu/software/ARPACK/index.html
I personally find it hard to slot a call to a parallel library
routine into a user code, because many library routines assume some
distribution of data over the nodes, that can conflict with the
distribution in the rest of the code. I was happy with the
ARPACK library, as it worked well with one of my MPI codes.
The basic Lanczos algorithm is quite simple and fairly easy to
implement in parallel. The hard problem is getting rid of the repeat
and ghost eigenvalues that the basic algorithm produces. For what you
ask for you may have to implement the algorithm yourself.
Some algorithms that I know about are:
Study of Cullum's and Willoughby's Lanczos method for Wilson fermions
http://xxx.soton.ac.uk/abs/hep-lat/9509071
An Accelerated Conjugate Gradient Algorithm to Compute Low-Lying
Eigenvalues
http://xxx.soton.ac.uk/abs/hep-lat/9507023
Regards,
Craig
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|