Draft: Whan using ARPACK driver to solve an eigenvalue problem set ritzSelect to leading eigenvectors.
Issue/feature addressed
When running the ARPACK driver to solve an eigen value problem we first use the Dnaupd
to solve the problem and than the Dneupd
to extract the eigenvalues and eigenvectors from the computed space. Currently this is set to extract eigenvalues that are deemed to be the most converged ones. It may cause that those "most" converged are not the leading ones. This results in some e.g. unstable values missing from the computed spectrum.
Proposed solution
ARPACK documentation for Dneupd
explains that second parameter HOWMNY
can be set to retrieve the desired vectors. Currently we use 'A' which seems to return eigenvalues with the lowest convergence residual. Setting this to 'S' we can specify the Ritz vectors to be computed manually via the SELECT
parameter.
Implementation
All it takes is 3 lines of code.
Tests
The leading eigenvalue should not change, but a problem that a number of EV are calculated could be used here. Unfortunately the ones I have run for days.
Notes
Please add any other information that could be useful for reviewers.
Checklist
-
Functions and classes, or changes to them, are documented. -
User guide/documentation is updated. -
Changelog is updated. -
Suitable tests added for new functionality. -
Contributed code is correctly formatted. (See the contributing guidelines). -
License added to any new files. -
No extraneous files have been added (e.g. compiler output or test data files).
Warning
On the 19.07 the code formatting (code style) was standardised using clang-format, over the whole Nektar++ code. This means changes in your branch will conflict with formatting changes on the master
branch. To resolve these conflicts , see
#295 (closed)