Hello,
I hope you are well. I am currently working with the SNES solver in Fortran, 
utilizing Newton's method. I have provided both the residual function and the 
Jacobian. However, I have encountered an issue that I hope you can help me with.

In the first non-linear iteration, the solver calculates a non-zero residual 
value and starts the KSP solver to minimize the error. However, in the second 
non-linear iteration, it returns an exact zero residual, considering it 
converged.

As a result, the first few steps provide a somewhat accurate solution, but 
after around 15 steps, the solution starts diverging rapidly. I assume this is 
due to accumulating errors, as the residual in subsequent steps becomes 
increasingly larger.

Here are some outputs from the solver:

start_SNES_petsc_solver: var_nd%name=u
  0 SNES Function norm 3.412918650183e+01
 Attempt!
    0 KSP Residual norm 5.861642176595e-01
    1 KSP Residual norm 1.411858179645e-01
    2 KSP Residual norm 1.388288156571e-01
    3 KSP Residual norm 4.900215159087e-02
    4 KSP Residual norm 2.559630070894e-02
    5 KSP Residual norm 1.007110997387e-02
    6 KSP Residual norm 6.371175598940e-03
  1 SNES Function norm 0.000000000000e+00
 iteration=           1
SNESConvergedReason=           2


istep=       1
******************************

start_SNES_petsc_solver: var_nd%name=u
  0 SNES Function norm 6.831896456736e+01
 Attempt!
    0 KSP Residual norm 5.850729730568e+00
    1 KSP Residual norm 5.176135972454e+00
    2 KSP Residual norm 5.106059774079e-01
    3 KSP Residual norm 2.058573608172e-01
    4 KSP Residual norm 8.430267458444e-02
    5 KSP Residual norm 2.421049820170e-02
    6 KSP Residual norm 1.387479046692e-02
    7 KSP Residual norm 6.556624109622e-03
  1 SNES Function norm 0.000000000000e+00
 iteration=           1
SNESConvergedReason=           2

istep=       2
******************************

start_SNES_petsc_solver: var_nd%name=u
  0 SNES Function norm 1.024330722398e+02
 Attempt!
    0 KSP Residual norm 1.324263482159e+01
    1 KSP Residual norm 8.772774639367e+00
    2 KSP Residual norm 8.717824082000e-01
    3 KSP Residual norm 3.965086318719e-01
    4 KSP Residual norm 1.380063519887e-01
    5 KSP Residual norm 3.983781619335e-02
    6 KSP Residual norm 1.690524902818e-02
    7 KSP Residual norm 1.371656480592e-02
    8 KSP Residual norm 4.598826535286e-03
  1 SNES Function norm 0.000000000000e+00
 iteration=           1
SNESConvergedReason=           2

istep=       3
******************************

start_SNES_petsc_solver: var_nd%name=u
  0 SNES Function norm 1.371337889713e+02
 Attempt!
    0 KSP Residual norm 1.823603533770e+01
    1 KSP Residual norm 1.823546028484e+01
    2 KSP Residual norm 8.167385988622e-01
    3 KSP Residual norm 1.930526020067e-01
    4 KSP Residual norm 1.768873013055e-01
    5 KSP Residual norm 2.692456250466e-02
    6 KSP Residual norm 1.130530545617e-02
    7 KSP Residual norm 6.934825615412e-03
  1 SNES Function norm 0.000000000000e+00
 iteration=           1
SNESConvergedReason=           2

istep=       4
******************************

start_SNES_petsc_solver: var_nd%name=u
  0 SNES Function norm 1.717647834464e+02
 Attempt!
    0 KSP Residual norm 1.015846744437e+02
    1 KSP Residual norm 7.622793741160e+00
    2 KSP Residual norm 1.381803723895e+00
    3 KSP Residual norm 1.305423467184e-01
    4 KSP Residual norm 3.606398975875e-02
    5 KSP Residual norm 3.463999556864e-02
    6 KSP Residual norm 3.268229989659e-02
    7 KSP Residual norm 8.847393497789e-03
  1 SNES Function norm 0.000000000000e+00
 iteration=           1
SNESConvergedReason=           2

Do you have any idea what might be causing this behavior? I appreciate any 
insights you might have.

Best,
Khaled

Reply via email to