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

> On Oct 20, 2019, at 6:07 PM, "Smith, Barry F." <bsm...@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.

Reply via email to