Skip to content
Snippets Groups Projects
user avatar
Jurgis Pods authored
This is essentially equivalent to Uli Sack's patch from Flyspray task FS#1202, ported to the current master.

Currently, GMRes is inconsistent when comparing current ('norm') and initial defect ('norm_0'). While the current residual is taken from the preconditioned residual, the initial defect - at least in the case the flag '_recalc_defect' is not set, which is the default - is taken from the unpreconditioned residual.

This causes the following problems:
1) The calculated reduction is wrong.
2) The solver might even exit in iteration 0 (without entering the iteration loop) because 'norm' and 'norm_0' differ by a factor greater than the requested reduction, returning a zero update 'x'.

By using the preconditioned residual in any case, the defect calculation is made consistent again.
d3fe65ff
History
Name Last commit Last update