Skip to content

Draft: Whan using ARPACK driver to solve an eigenvalue problem set ritzSelect to leading eigenvectors.

Stanislaw Gepner requested to merge fix/SetArpackRitzSelectToLeadingEV into master

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)

Merge request reports