Hello,
I’m trying to solve for a base-state for an arbitrary Lagrangian-Eulerian (ALE) equations problem with SNES. But I sometimes get this kind of convergence just by changing a coefficient in my equations (the Young’s modulus; for example, for some reason this doesn’t occur when I set it 100, or 150, but it does for 120, 125, 130 in my current configuration):
0 SNES Function norm 2.566976385923e-03
0 KSP Residual norm 2.566976385923e-03
1 KSP Residual norm 2.565056301783e-13
1 SNES Function norm 7.325835463306e-05
0 KSP Residual norm 7.325835463306e-05
1 KSP Residual norm -nan
with KSP convergence code -3 for an LU solve with mumps.
I asked mumps to be more verbose and the error is:
** ERROR RETURN ** FROM DMUMPS INFO(1)= -1
** INFO(2)= 5
** ERROR RETURN ** FROM DMUMPS INFO(1)= -1
** INFO(2)= 5
** ERROR RETURN ** FROM DMUMPS INFO(1)= -20
** INFO(2)= 35595524
On return from DMUMPS, INFOG(1)= -20
On return from DMUMPS, INFOG(2)= 35595524
0 KSP Residual norm 3.610212198564e-05
1 KSP Residual norm -nan
I followed the mumps manual for the INFOG(1)=-20
and increased the “percentage increase in the estimated working space” with
petsc4py.PETSc.Options().setValue('-mat_mumps_icntl_14', 50)
before I created my snes
object. But that leads to the same error.
It should converge fine since I use the solution with Young’s modulus = 150 or 100 as the input. I also tried solving it iteratively (by creating strides and solving each individual block with LU) and it converged with no problems.
Anyone have any ideas what might cause this?