Hello,
I am solving a time-dependent nonlinear problem (hyperelasticity+phase field). I have coded my own nonlinear solver and for the linear system of equations, I am using PETSc Krylov solver with the following configuration
pc = PETScPreconditioner("petsc_amg")
PETScOptions.set("mg_levels_ksp_type", "chebyshev")
PETScOptions.set("mg_levels_pc_type", "jacobi")
PETScOptions.set("mg_levels_esteig_ksp_type", "cg")
PETScOptions.set("mg_levels_ksp_chebyshev_esteig_steps", 50)
solver_u = PETScKrylovSolver("cg", pc)
max_iterations=450
solver_u.parameters["maximum_iterations"] = max_iterations
solver_u.parameters["error_on_nonconvergence"] = False
The issue I am encountering is that sometimes during the solution of the linear system, after the simulation time has progressed quite a bit, the code gets terminated with this error:
Error: Unable to successfully call PETSc function 'KSPSolve'.
*** Reason: PETSc error code is: 77 (Petsc has generated inconsistent data).
*** Where: This error was encountered inside /tmp/dolfin/dolfin/la/PETScKrylovSolver.cpp.
*** Process: 130
So I have two questions about this:
- What could be the potential reasons behind this error?
- Can I somehow prevent the code from stopping due to this error, so that I can tweak some parameters to potentially make it progress?
Thank you!