Likely there is an issue with the FormFunction you are providing. For a 
small problem you can call VecView() on the input vector at the start of your 
routine
and then VecView() on the output vector at the end of your routine. This might 
provide some insight. Since the output vector is presumably all zero you can 
try 
running in the debugger and trace through the second call to your FormFunction 
to see why it generating exactly zero output when it presumably should not be.

  Barry


> On Apr 14, 2023, at 12:39 PM, Khaled Nabil Shar Abdelaziz 
> <[email protected]> wrote:
> 
> 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