Skip to content

checking for convergence/divergence of PETSc solver #1

Description

@lopezmv

Thank you for making your code available.

While running some simulations with the climate code, I noticed that some of the calls to the PETSc solver returned values of
num_iter = 0, rel_residual = 0
for instance, as printed from vcartsn.cpp, iFcartsn3d.cpp, or ellip.cpp if the debugging string "PETSc" is used. After the PETSc solve, the computations continue, as there is no checking for PETSc error.

After looking through the PETSc documentation, in particular
https://petsc.org/main/docs/manualpages/KSP/KSPConvergedReason/
I added a call to KSPGetConvergedReason() and ran the simulation again. For those instances where I had
num_iter = 0, rel_residual = 0
the value from KSPGetConvergedReason() indicated that the PETSc solver had not converged (see the above URL -- a reason <= 0 indicates non-convergence of the PETSc solver). You may consider adding such checks for non-convergence of the solver, so that this is logged and a suitable action is taken (e.g., stop the simulation or try another solver).

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions