|
Recent modifications:
- Version released on April 27, 2005:
- Lanczos can now compute more than one eigenvector.
Note: There is still no check for ghosts, i.e. if
you switch off reorthogonalization with the option -b,
you are very likely to have spurious states - see
this example for an illustration
how this can be fixed.
- Eigenvectors obtained by Lanczos' method can be dumped to disc
with option -t. The format is the same as without
Lanczos' prediagonalization.
- Lanczos algorithm uses
LaPack for
diagonalization of the tridiagonal Lanczos' matrix
if compiled with `-DLAPACK'.
- Built-in routine for diagonalization of tridiagonal matrices
slightly improved.
- Version released on January 28, 2005:
- Binding to
GNU
Readline Library added (allows editing of input).
- Option -all added to suppress computation of eigenvectors
when using
LaPack or the internal
Householder algorithm.
With the option -all, all eigenvalues are computed to
the best possible precision, but it is not checked what this really
is. This option disables options affecting eigenvectors.
This is useful if you want to perform a full diagonalization
and do not need eigenvectors since it saves CPU time
and memory in this case.
- Option -m added to compute matrix elements of matrices other
than the Hamiltonian in the eigenbasis and store them in the output
file. This option comes in three variants:
-ma computes all, -md the diagonal and
-mu the upper (on and above the diagonal) matrix elements.
- New option -zo generates a compressed output file.
Although they can be used independently, this goes together
with the previous option since output files containing matrix elements
can become quite large.
- Version released on December 2, 2004 (partial list):
- Some optimization, amounting to substantial speedups in particular
during complete diagonalization.
- Optional binding to LaPack
to replace built-in Householder routine (presently still a little faster
than built-in Householder).
To activate this, add `-DLAPACK' to the CFLAGS in the
makefile as well as the appropriate Libraries for
linking (LaPack, BLAS and a Fortran to C library).
- Option -F added to skip diagonalization when reading
eigenvectors from a file.
- Buffers for output are kept open while program is
running, but usually flushed after appending each line.
output flushing can be switched off
using `set outflush 0' (faster when large amounts of
data are written).
- Implemented basic complex operations using SSE2 instructions.
However, this is not active since it does not pay off.
- June 14, 2003:
The recently introduced buffering of matrix evaluations while
reading can be switched off using the argument -d.
Reason: A speed-up is obtained only if the number of different
entries in a matrix is small. If you have many different matrix
elements, buffering in fact not only causes slowing down
(rather than a speed-up), but the buffer space
may be insufficient and the program will start to complain
(although it will produce correct results). So, in order to
process matrices with many different entries efficiently, you
should use -d.
- June 14, 2003:
Further work on parallel support, in particular parallelized the
Householder algorithm.
Still needs to be merged with older parallelization efforts.
Some of the modifications between August 9, 2002 and June 7, 2003:
- Explicit matrix diagonalization: Jacobi method replaced by
Householder method (default - Jacobi method still available
if the argument -j is used). During the (complete)
diagonalization of big matrices (dimension a few thousand)
this shortens the CPU time
by up to more than one order of magnitude.
- Solution of linear systems of equations for non-Hermitean matrices
A using biconjugate gradient method added.
See help on bcg_solve for more details.
- Lanczos procedure supports one eigenvector - use with
option -le instead of -l.
- Options -f and -t allow specification
of the name of the file for storing the eigenvectors.
- Command `output':
- Limitation to 3 expressions eliminated.
- Allows setting precision using `set outdigits'.
See help on output for more details.
- `if a!=b' in addition to `if a=b' supported.
See help on if for more details.
- Some optimization in interpreter and internal matrix application(s)
to save CPU time.
- Some buffering added for faster reading of matrices.
- Some parallel support (though still unfinished) added
using the OpenMP
library. Thanks to Josef
Schüle for help.
If you want to use the current version:
- Merge the #pragma's and related items from
the file vectors-par.c to vectors.c.
- Add the necessary options (e.g. -omp in the
CFLAGS) to the makefile.
|
|