-
Notifications
You must be signed in to change notification settings - Fork 1.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Fix SNES convergence reason #29050
Comments
I do not think we should disable the ability for a user to pass |
Yeah I don't think a universal disable would be appropriate. I'm just thinking if we're able to detect that PETSc will return incorrect reason, we should at least warn. What's the difference with |
What do you mean? I would add this to the |
I think that's the best solution. |
Motivation
Since #28848, the behavior for the SNES converged reason is
Thus PETSc will sometimes report the wrong reason. However, note that PETSc sometimes bypasses some of this and assigns its own reason. For example, if you have a NaN or exceed the number of nonlinear iterations, you'll still get the correct, respective divergence reasons. But for example if you converge due to relative tolerance, it'll report it as
SNES_CONVERGED_FNORM_ABS
now.This is being replaced with verbose output via #29049. However, we must decide what to do (if anything) with the SNES converged reason.
It seems the default behavior is to print the divergence reason only, and if the user specifies
-snes_converged_reason
additionally specify convergence reason as well.Design
Some options:
-snes_converged_reason
(and tell them aboutverbose
)-snes_converged_reason
Of course, if there are situations where Convergence objects are not replacing PETSc checks, then this should be omitted from the above.
Impact
Warnings likely.
The text was updated successfully, but these errors were encountered: