How to fix mumps linear solver -nan

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?

You may want to get in touch with mumps developers at mumps-users - MUMPS Users discussion list - subscribe