<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
span.EmailStyle17
        {mso-style-type:personal-compose;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-US" link="#0563C1" vlink="#954F72" style="word-wrap:break-word">
<div class="WordSection1">
<p class="MsoNormal">Hello,<o:p></o:p></p>
<p class="MsoNormal">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.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">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.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">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.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Here are some outputs from the solver:<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">start_SNES_petsc_solver: var_nd%name=u<o:p></o:p></p>
<p class="MsoNormal">  0 SNES Function norm 3.412918650183e+01 <o:p></o:p></p>
<p class="MsoNormal"> Attempt!<o:p></o:p></p>
<p class="MsoNormal">    0 KSP Residual norm 5.861642176595e-01 <o:p></o:p></p>
<p class="MsoNormal">    1 KSP Residual norm 1.411858179645e-01 <o:p></o:p></p>
<p class="MsoNormal">    2 KSP Residual norm 1.388288156571e-01 <o:p></o:p></p>
<p class="MsoNormal">    3 KSP Residual norm 4.900215159087e-02 <o:p></o:p></p>
<p class="MsoNormal">    4 KSP Residual norm 2.559630070894e-02 <o:p></o:p></p>
<p class="MsoNormal">    5 KSP Residual norm 1.007110997387e-02 <o:p></o:p></p>
<p class="MsoNormal">    6 KSP Residual norm 6.371175598940e-03 <o:p></o:p></p>
<p class="MsoNormal">  1 SNES Function norm 0.000000000000e+00 <o:p></o:p></p>
<p class="MsoNormal"> iteration=           1<o:p></o:p></p>
<p class="MsoNormal">SNESConvergedReason=           2<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">istep=       1<o:p></o:p></p>
<p class="MsoNormal">******************************<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">start_SNES_petsc_solver: var_nd%name=u<o:p></o:p></p>
<p class="MsoNormal">  0 SNES Function norm 6.831896456736e+01 <o:p></o:p></p>
<p class="MsoNormal"> Attempt!<o:p></o:p></p>
<p class="MsoNormal">    0 KSP Residual norm 5.850729730568e+00 <o:p></o:p></p>
<p class="MsoNormal">    1 KSP Residual norm 5.176135972454e+00 <o:p></o:p></p>
<p class="MsoNormal">    2 KSP Residual norm 5.106059774079e-01 <o:p></o:p></p>
<p class="MsoNormal">    3 KSP Residual norm 2.058573608172e-01 <o:p></o:p></p>
<p class="MsoNormal">    4 KSP Residual norm 8.430267458444e-02 <o:p></o:p></p>
<p class="MsoNormal">    5 KSP Residual norm 2.421049820170e-02 <o:p></o:p></p>
<p class="MsoNormal">    6 KSP Residual norm 1.387479046692e-02 <o:p></o:p></p>
<p class="MsoNormal">    7 KSP Residual norm 6.556624109622e-03 <o:p></o:p></p>
<p class="MsoNormal">  1 SNES Function norm 0.000000000000e+00 <o:p></o:p></p>
<p class="MsoNormal"> iteration=           1<o:p></o:p></p>
<p class="MsoNormal">SNESConvergedReason=           2<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">istep=       2<o:p></o:p></p>
<p class="MsoNormal">******************************<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">start_SNES_petsc_solver: var_nd%name=u<o:p></o:p></p>
<p class="MsoNormal">  0 SNES Function norm 1.024330722398e+02 <o:p></o:p></p>
<p class="MsoNormal"> Attempt!<o:p></o:p></p>
<p class="MsoNormal">    0 KSP Residual norm 1.324263482159e+01 <o:p></o:p></p>
<p class="MsoNormal">    1 KSP Residual norm 8.772774639367e+00 <o:p></o:p></p>
<p class="MsoNormal">    2 KSP Residual norm 8.717824082000e-01 <o:p></o:p></p>
<p class="MsoNormal">    3 KSP Residual norm 3.965086318719e-01 <o:p></o:p></p>
<p class="MsoNormal">    4 KSP Residual norm 1.380063519887e-01 <o:p></o:p></p>
<p class="MsoNormal">    5 KSP Residual norm 3.983781619335e-02 <o:p></o:p></p>
<p class="MsoNormal">    6 KSP Residual norm 1.690524902818e-02 <o:p></o:p></p>
<p class="MsoNormal">    7 KSP Residual norm 1.371656480592e-02 <o:p></o:p></p>
<p class="MsoNormal">    8 KSP Residual norm 4.598826535286e-03 <o:p></o:p></p>
<p class="MsoNormal">  1 SNES Function norm 0.000000000000e+00 <o:p></o:p></p>
<p class="MsoNormal"> iteration=           1<o:p></o:p></p>
<p class="MsoNormal">SNESConvergedReason=           2<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">istep=       3<o:p></o:p></p>
<p class="MsoNormal">******************************<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">start_SNES_petsc_solver: var_nd%name=u<o:p></o:p></p>
<p class="MsoNormal">  0 SNES Function norm 1.371337889713e+02 <o:p></o:p></p>
<p class="MsoNormal"> Attempt!<o:p></o:p></p>
<p class="MsoNormal">    0 KSP Residual norm 1.823603533770e+01 <o:p></o:p></p>
<p class="MsoNormal">    1 KSP Residual norm 1.823546028484e+01 <o:p></o:p></p>
<p class="MsoNormal">    2 KSP Residual norm 8.167385988622e-01 <o:p></o:p></p>
<p class="MsoNormal">    3 KSP Residual norm 1.930526020067e-01 <o:p></o:p></p>
<p class="MsoNormal">    4 KSP Residual norm 1.768873013055e-01 <o:p></o:p></p>
<p class="MsoNormal">    5 KSP Residual norm 2.692456250466e-02 <o:p></o:p></p>
<p class="MsoNormal">    6 KSP Residual norm 1.130530545617e-02 <o:p></o:p></p>
<p class="MsoNormal">    7 KSP Residual norm 6.934825615412e-03 <o:p></o:p></p>
<p class="MsoNormal">  1 SNES Function norm 0.000000000000e+00 <o:p></o:p></p>
<p class="MsoNormal"> iteration=           1<o:p></o:p></p>
<p class="MsoNormal">SNESConvergedReason=           2<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">istep=       4<o:p></o:p></p>
<p class="MsoNormal">******************************<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">start_SNES_petsc_solver: var_nd%name=u<o:p></o:p></p>
<p class="MsoNormal">  0 SNES Function norm 1.717647834464e+02 <o:p></o:p></p>
<p class="MsoNormal"> Attempt!<o:p></o:p></p>
<p class="MsoNormal">    0 KSP Residual norm 1.015846744437e+02 <o:p></o:p></p>
<p class="MsoNormal">    1 KSP Residual norm 7.622793741160e+00 <o:p></o:p></p>
<p class="MsoNormal">    2 KSP Residual norm 1.381803723895e+00 <o:p></o:p></p>
<p class="MsoNormal">    3 KSP Residual norm 1.305423467184e-01 <o:p></o:p></p>
<p class="MsoNormal">    4 KSP Residual norm 3.606398975875e-02 <o:p></o:p></p>
<p class="MsoNormal">    5 KSP Residual norm 3.463999556864e-02 <o:p></o:p></p>
<p class="MsoNormal">    6 KSP Residual norm 3.268229989659e-02 <o:p></o:p></p>
<p class="MsoNormal">    7 KSP Residual norm 8.847393497789e-03 <o:p></o:p></p>
<p class="MsoNormal">  1 SNES Function norm 0.000000000000e+00 <o:p></o:p></p>
<p class="MsoNormal"> iteration=           1<o:p></o:p></p>
<p class="MsoNormal">SNESConvergedReason=           2<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Do you have any idea what might be causing this behavior? I appreciate any insights you might have.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Best,<o:p></o:p></p>
<p class="MsoNormal">Khaled<o:p></o:p></p>
</div>
</body>
</html>