[Trilinos-Users] Anasazi LI and SI bug + patch

Pavel Holoborodko pavel at holoborodko.com
Tue Sep 1 01:27:35 EDT 2015


*Symptoms*
BlockKrylovSchurSolMgr crashes when used in 'LI' and 'SI' modes.
(or TREXC ends with error "** on entry DTREXC, parameter number 7 had an
illegal value")


*Reason*
BlockKrylovSchur requires that conjugate Ritz values are stored one after
another.
(e.g. TREXC, sortRitzValues, etc.)

But, in case of 'LI' and 'SI', BasicSort::sort breaks conjugate pairs and
might place them far apart after sorting.

As a result, this code is unpredictable, AnasaziBlockKrylovSchur.hpp,
1604-1605 lines:

    // Sort using both the real and imaginary parts of the Ritz values.
    sm_->sort(tmp_rRitzValues, tmp_iRitzValues,
Teuchos::rcpFromRef(ritzOrder_) , curDim_); *// <- places conjugate values
apart*
    HelperTraits<ScalarType>::sortRitzValues( tmp_rRitzValues,
tmp_iRitzValues, &ritzValues_, &ritzOrder_, &ritzIndex_ ); *// <- requires
clustered conjugate pairs*

*Fix*
Patch is in attachment.
It makes the BasicSort class to preserve clustered storage of conjugate
eigenvalues in 'LI' and 'SI' modes.

***
Please consider applying the patch as now Anasazi is unable to operate in
LI and SI modes (finding eigenvalues with largest/smallest imaginary parts).

Thank you,
Pavel.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://trilinos.org/pipermail/trilinos-users/attachments/20150901/a40d9dc9/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0001-Fixed-Anasazi-BasicSort-class-to-preserve-clustered-.patch
Type: application/octet-stream
Size: 3061 bytes
Desc: not available
URL: <https://trilinos.org/pipermail/trilinos-users/attachments/20150901/a40d9dc9/attachment.obj>


More information about the Trilinos-Users mailing list