> On Mar 24, 2017, at 8:56 AM, alexandre this <[email protected]> wrote:
>
> Dear all,
>
> I'm in the configuration where I need to solve a linear system Ax = b where b
> is very small although not equal to zero.
>
> It appears that, in this configuration, the initial residual of the first
> iteration of the solver is completely out of reach and the KSP_DIVERGED_DTOL
> is raised.
>
> In particular, when using the "-ksp_monitor_true_residual flag", I get the
> following :
> 0 KSP preconditioned resid norm 2.907111674781e+00 true resid norm
> 1.955854211540e+02 ||r(i)||/||b|| 1.765818923254e+09
Yeah this is a glitch in the divergence checking. A bad initial guess with a
nearly zero right hand side can trigger this. There is special code in
KSPConvergedDefault() when the right hand side is identical to zero
if (!snorm) {
ierr = PetscInfo(ksp,"Special case, user has provided nonzero initial
guess and zero RHS\n");CHKERRQ(ierr);
snorm = rnorm;
}
but not for "small" right hand side.
You can use something like -ksp_divtol 1.e30 ( or bigger) to turn off the
divtol test.
Do any PETSc users or developers know a more systematic way to handle this
issue with small right hand side and bad initial guess?
Barry
>
> What is the best course of action in this case ?
>
> Best,
> Alexandre
>
>
> --
> Alexandre This
>
> Doctorant CIFRE (Philips Healthcare - INRIA) : Fusion Image / Modèles
> Numériques pour la quantification de la sévérité de la régurgitation mitrale
>
> Master 2 Recherche Mathématiques, Vision, Apprentissage - ENS Cachan
> Ingénieur spécialisation Santé&Technologie - ECE Paris
> Bachelor of Science : Informatics - Aalborg University, Danemark
>
> tel : 06.32.57.12.44