[petsc-dev] ksp_error_if_not_converged in multilevel solvers

Jed Brown jed at jedbrown.org
Mon Oct 21 08:04:29 CDT 2019

Pierre Jolivet via petsc-dev <petsc-dev at mcs.anl.gov> writes:

> On Oct 20, 2019, at 6:07 PM, "Smith, Barry F." <bsmith at mcs.anl.gov> wrote:
>>   The reason the code works this way is that normally -ksp_error_if_not_converged is propagated into the inner (and innerer) solves and normally it is desirable that these inner solves do not error simply because they reach the maximum number of iterations since for nested iterative methods generally we don't need or care if the inner solves "converge". 
> I fully agree with you on the last part of the above sentence. Thus, this makes me question the first part (which I wasn't aware of): why is error_if_not_converged being propagated to inner solves?
> I'm sure there are good usages, but if one cares that ksp_1 (which depends on ksp_2) converges, why should an error be thrown if ksp_2 does not converge as long as ksp_1 does (I guess this goes along your last paragraph)?

What if the user is debugging a singular or indefinite coarse operator
when they expect it to be SPD?  Sure, they could set that flag
directly for the coarse KSP via the options database.

More information about the petsc-dev mailing list