> On 21 Oct 2019, at 3:04 PM, Jed Brown <j...@jedbrown.org> wrote:
> 
> 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.

I most often end up debugging bottom-up (or coarse to fine) instead of 
top-down, but you probably have some convincing arguments that I should do it 
the other way around.

Reply via email to