<div dir="ltr"><div dir="ltr">On Wed, May 31, 2023 at 3:21 PM Kenneth C Hall <<a href="mailto:kenneth.c.hall@duke.edu" target="_blank">kenneth.c.hall@duke.edu</a>> wrote:<br></div><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div>
<div lang="EN-US">
<div>
<p class="MsoNormal">Hi,</p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">I am doing a number of problems using PETSc/SLEPc, but I also work on some non-PETSc/SLEPc flow solvers. I would like to use PETSc as a wrapper for this non-PETSc flow solver for compatibility, so I can use the tolerance monitoring,
options, viewers, and for direct comparison to PETSc methods I am using. </p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">Here is what I am trying to do… I have a CFD solver that iterates with a nonlinear iterator of the form x := N(x). This can be expressed in a fortran routine of the form,</p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal" style="text-indent:0.5in">SUBROUTINE MySolver(x) </p>
<p class="MsoNormal" style="text-indent:0.5in">or </p>
<p class="MsoNormal" style="text-indent:0.5in">SUBROUTINE MySolver(x,y)</p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">In the first case, x is over written. In the second, y = N(x). In any event, I want to do something like what is shown in the subroutine at the bottom of this email.
</p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">The code below “works” in the sense that MySolver is called, but it is called exactly *<b>once</b>*. But MyMonitor and MyConverged are *<b>not</b>* called. Again, I want to iterate so MySolver should be called many times, as should MyMonitor
and MyConverged.</p></div></div></div></blockquote><div><br></div><div>The SNESolve() method is called once per nonlinear solve, just as KSPSolve() is called once per linear solve. There may be iteration inside the method, but that is handled inside the particular implementation. For example, both Newton's method and Nonlinear Conjugate Gradient iterate, but the iteration is internal to both, and they both call the monitor and convergence test at each internal iterate.</div><div><br></div><div>So, if your nonlinear solver should iterate, it should happen inside the SNESSolve call for the SNESSHELL object. Does this make sense? What does your solver do?</div><div><br></div><div> Thanks,</div><div><br></div><div> Matt</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div><div lang="EN-US"><div>
<p class="MsoNormal">The SNESView before and after SNESSolve looks like this:</p>
<p class="MsoNormal"><u></u> <u></u></p>
<p style="margin-right:0in;margin-bottom:0in;margin-left:0.5in;background:white">
<span style="font-size:9pt;font-family:Menlo;color:black">SNES Object: 1 MPI process<u></u><u></u></span></p>
<p style="margin-right:0in;margin-bottom:0in;margin-left:0.5in;background:white">
<span style="font-size:9pt;font-family:Menlo;color:black"> type: shell<u></u><u></u></span></p>
<p style="margin-right:0in;margin-bottom:0in;margin-left:0.5in;background:white">
<span style="font-size:9pt;font-family:Menlo;color:black"> SNES has not been set up so information may be incomplete<u></u><u></u></span></p>
<p style="margin-right:0in;margin-bottom:0in;margin-left:0.5in;background:white">
<span style="font-size:9pt;font-family:Menlo;color:black"> maximum iterations=50, maximum function evaluations=10000<u></u><u></u></span></p>
<p style="margin-right:0in;margin-bottom:0in;margin-left:0.5in;background:white">
<span style="font-size:9pt;font-family:Menlo;color:black"> tolerances: relative=1e-50, absolute=1e-10, solution=1e+06<u></u><u></u></span></p>
<p style="margin-right:0in;margin-bottom:0in;margin-left:0.5in;background:white">
<span style="font-size:9pt;font-family:Menlo;color:black"> total number of function evaluations=0<u></u><u></u></span></p>
<p style="margin-right:0in;margin-bottom:0in;margin-left:0.5in;background:white">
<span style="font-size:9pt;font-family:Menlo;color:black"> norm schedule ALWAYS<u></u><u></u></span></p>
<p style="margin-right:0in;margin-bottom:0in;margin-left:0.5in;background:white">
<span style="font-size:9pt;font-family:Menlo;color:black"><u></u> <u></u></span></p>
<p style="margin-right:0in;margin-bottom:0in;margin-left:0.5in;background:white">
<span style="font-size:9pt;font-family:Menlo;color:black">SNES Object: 1 MPI process<u></u><u></u></span></p>
<p style="margin-right:0in;margin-bottom:0in;margin-left:0.5in;background:white">
<span style="font-size:9pt;font-family:Menlo;color:black"> type: shell<u></u><u></u></span></p>
<p style="margin-right:0in;margin-bottom:0in;margin-left:0.5in;background:white">
<span style="font-size:9pt;font-family:Menlo;color:black"> maximum iterations=50, maximum function evaluations=10000<u></u><u></u></span></p>
<p style="margin-right:0in;margin-bottom:0in;margin-left:0.5in;background:white">
<span style="font-size:9pt;font-family:Menlo;color:black"> tolerances: relative=1e-50, absolute=1e-10, solution=1e+06<u></u><u></u></span></p>
<p style="margin-right:0in;margin-bottom:0in;margin-left:0.5in;background:white">
<span style="font-size:9pt;font-family:Menlo;color:black"> total number of function evaluations=0<u></u><u></u></span></p>
<p style="margin-right:0in;margin-bottom:0in;margin-left:0.5in;background:white">
<span style="font-size:9pt;font-family:Menlo;color:black"> norm schedule ALWAYS<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:8pt"><u></u> <u></u></span></p>
<p class="MsoNormal">Any suggestions on how to do what I am trying to accomplish?</p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">Thanks.</p>
<p class="MsoNormal">Kenneth Hall</p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal"><span style="font-size:9pt"><u></u> <u></u></span></p>
<p style="margin:0in;background:white"><b><span style="font-size:9pt;font-family:Menlo;color:silver">#include <petsc/finclude/petsc.h></span></b><span style="font-size:9pt;font-family:Menlo;color:black"><u></u><u></u></span></p>
<p style="margin:0in;background:white"><b><span style="font-size:9pt;font-family:Menlo;color:silver">#include "macros.h"</span></b><span style="font-size:9pt;font-family:Menlo;color:black"><u></u><u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:black"><u></u> <u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:black">
</span><b><span style="font-size:9pt;font-family:Menlo;color:maroon">MODULE</span></b><span style="font-size:9pt;font-family:Menlo;color:black">
</span><span style="font-size:9pt;font-family:Menlo;color:blue">SolveWithSNESShell_module</span><span style="font-size:9pt;font-family:Menlo;color:black"><u></u><u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:black">
</span><b><span style="font-size:9pt;font-family:Menlo;color:maroon">USE</span></b><span style="font-size:9pt;font-family:Menlo;color:black">
</span><span style="font-size:9pt;font-family:Menlo;color:blue">MyPetscModule</span><span style="font-size:9pt;font-family:Menlo;color:black"><u></u><u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:black">
</span><b><span style="font-size:9pt;font-family:Menlo;color:maroon">CONTAINS</span></b><span style="font-size:9pt;font-family:Menlo;color:black"><u></u><u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:green">!</span><span style="font-size:9pt;font-family:Menlo;color:black"><u></u><u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:green">!====================================================================================================</span><span style="font-size:9pt;font-family:Menlo;color:black"><u></u><u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:black">
</span><b><span style="font-size:9pt;font-family:Menlo;color:maroon">SUBROUTINE</span></b><span style="font-size:9pt;font-family:Menlo;color:black">
</span><span style="font-size:9pt;font-family:Menlo;color:blue">MySolver</span><span style="font-size:9pt;font-family:Menlo;color:black">(</span><span style="font-size:9pt;font-family:Menlo;color:blue">snes</span><span style="font-size:9pt;font-family:Menlo;color:black">,
</span><span style="font-size:9pt;font-family:Menlo;color:blue">x</span><span style="font-size:9pt;font-family:Menlo;color:black">,
</span><span style="font-size:9pt;font-family:Menlo;color:blue">ierr</span><span style="font-size:9pt;font-family:Menlo;color:black">)<u></u><u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:green">!====================================================================================================</span><span style="font-size:9pt;font-family:Menlo;color:black"><u></u><u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:green">!!</span><span style="font-size:9pt;font-family:Menlo;color:black"><u></u><u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:green">!!</span><span style="font-size:9pt;font-family:Menlo;color:black"><u></u><u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:green">!====================================================================================================</span><span style="font-size:9pt;font-family:Menlo;color:black"><u></u><u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:green">!</span><span style="font-size:9pt;font-family:Menlo;color:black"><u></u><u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:black">
</span><b><span style="font-size:9pt;font-family:Menlo;color:maroon">USE</span></b><span style="font-size:9pt;font-family:Menlo;color:black">
</span><span style="font-size:9pt;font-family:Menlo;color:blue">MyPetscModule</span><span style="font-size:9pt;font-family:Menlo;color:black"><u></u><u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:black">
</span><b><span style="font-size:9pt;font-family:Menlo;color:maroon">IMPLICIT</span></b><span style="font-size:9pt;font-family:Menlo;color:black">
</span><b><span style="font-size:9pt;font-family:Menlo;color:maroon">NONE</span></b><span style="font-size:9pt;font-family:Menlo;color:black"><u></u><u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:green">!</span><span style="font-size:9pt;font-family:Menlo;color:black"><u></u><u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:green">!.... declared passed variables</span><span style="font-size:9pt;font-family:Menlo;color:black"><u></u><u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:black">
</span><span style="font-size:9pt;font-family:Menlo;color:blue">SNES</span><span style="font-size:9pt;font-family:Menlo;color:black"> ::
</span><span style="font-size:9pt;font-family:Menlo;color:blue">snes</span><span style="font-size:9pt;font-family:Menlo;color:black"><u></u><u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:black">
</span><span style="font-size:9pt;font-family:Menlo;color:blue">Vec</span><span style="font-size:9pt;font-family:Menlo;color:black"> ::
</span><span style="font-size:9pt;font-family:Menlo;color:blue">x</span><span style="font-size:9pt;font-family:Menlo;color:black"><u></u><u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:black">
</span><span style="font-size:9pt;font-family:Menlo;color:blue">PetscErrorCode</span><span style="font-size:9pt;font-family:Menlo;color:black"> ::
</span><span style="font-size:9pt;font-family:Menlo;color:blue">ierr</span><span style="font-size:9pt;font-family:Menlo;color:black"><u></u><u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:green">!</span><span style="font-size:9pt;font-family:Menlo;color:black"><u></u><u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:green">!.... code to find residual x := N(x)</span><span style="font-size:9pt;font-family:Menlo;color:black"><u></u><u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:green">!.... (or alternatively y := N(x))</span><span style="font-size:9pt;font-family:Menlo;color:black"><u></u><u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:black">
</span><b><span style="font-size:9pt;font-family:Menlo;color:maroon"><u></u><u></u></span></b></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:black"> </span><b><span style="font-size:9pt;font-family:Menlo;color:maroon">END</span></b><span style="font-size:9pt;font-family:Menlo;color:black">
</span><b><span style="font-size:9pt;font-family:Menlo;color:maroon">SUBROUTINE</span></b><span style="font-size:9pt;font-family:Menlo;color:black">
</span><span style="font-size:9pt;font-family:Menlo;color:blue">MySolver</span><span style="font-size:9pt;font-family:Menlo;color:black"><u></u><u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:green">!</span><span style="font-size:9pt;font-family:Menlo;color:black"><u></u><u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:green">!====================================================================================================</span><span style="font-size:9pt;font-family:Menlo;color:black"><u></u><u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:black">
</span><b><span style="font-size:9pt;font-family:Menlo;color:maroon">SUBROUTINE</span></b><span style="font-size:9pt;font-family:Menlo;color:black">
</span><span style="font-size:9pt;font-family:Menlo;color:blue">MyMonitor</span><span style="font-size:9pt;font-family:Menlo;color:black">(</span><span style="font-size:9pt;font-family:Menlo;color:blue">snes</span><span style="font-size:9pt;font-family:Menlo;color:black">,
</span><span style="font-size:9pt;font-family:Menlo;color:blue">its</span><span style="font-size:9pt;font-family:Menlo;color:black">,
</span><span style="font-size:9pt;font-family:Menlo;color:blue">rnorm</span><span style="font-size:9pt;font-family:Menlo;color:black">,
</span><span style="font-size:9pt;font-family:Menlo;color:blue">ierr</span><span style="font-size:9pt;font-family:Menlo;color:black">)<u></u><u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:green">!====================================================================================================</span><span style="font-size:9pt;font-family:Menlo;color:black"><u></u><u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:green">!!</span><span style="font-size:9pt;font-family:Menlo;color:black"><u></u><u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:green">!!</span><span style="font-size:9pt;font-family:Menlo;color:black"><u></u><u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:green">!====================================================================================================</span><span style="font-size:9pt;font-family:Menlo;color:black"><u></u><u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:green">!</span><span style="font-size:9pt;font-family:Menlo;color:black"><u></u><u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:black">
</span><b><span style="font-size:9pt;font-family:Menlo;color:maroon">USE</span></b><span style="font-size:9pt;font-family:Menlo;color:black">
</span><span style="font-size:9pt;font-family:Menlo;color:blue">MyPetscModule</span><span style="font-size:9pt;font-family:Menlo;color:black"><u></u><u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:black">
</span><b><span style="font-size:9pt;font-family:Menlo;color:maroon">IMPLICIT</span></b><span style="font-size:9pt;font-family:Menlo;color:black">
</span><b><span style="font-size:9pt;font-family:Menlo;color:maroon">NONE</span></b><span style="font-size:9pt;font-family:Menlo;color:black"><u></u><u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:green">!</span><span style="font-size:9pt;font-family:Menlo;color:black"><u></u><u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:green">!.... Declare passed variables</span><span style="font-size:9pt;font-family:Menlo;color:black"><u></u><u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:black">
</span><span style="font-size:9pt;font-family:Menlo;color:blue">SNES</span><span style="font-size:9pt;font-family:Menlo;color:black"> ::
</span><span style="font-size:9pt;font-family:Menlo;color:blue">snes</span><span style="font-size:9pt;font-family:Menlo;color:black"><u></u><u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:black">
</span><span style="font-size:9pt;font-family:Menlo;color:blue">PetscInt</span><span style="font-size:9pt;font-family:Menlo;color:black"> ::
</span><span style="font-size:9pt;font-family:Menlo;color:blue">its</span><span style="font-size:9pt;font-family:Menlo;color:black"><u></u><u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:black">
</span><span style="font-size:9pt;font-family:Menlo;color:blue">PetscReal</span><span style="font-size:9pt;font-family:Menlo;color:black"> ::
</span><span style="font-size:9pt;font-family:Menlo;color:blue">rnorm</span><span style="font-size:9pt;font-family:Menlo;color:black"><u></u><u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:black">
</span><span style="font-size:9pt;font-family:Menlo;color:blue">PetscErrorCode</span><span style="font-size:9pt;font-family:Menlo;color:black"> ::
</span><span style="font-size:9pt;font-family:Menlo;color:blue">ierr</span><span style="font-size:9pt;font-family:Menlo;color:black"><u></u><u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:green">!</span><span style="font-size:9pt;font-family:Menlo;color:black"><u></u><u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:green">!.... Code to print out convergence history</span><span style="font-size:9pt;font-family:Menlo;color:black"><u></u><u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:green">!.... Code to print out convergence history</span><span style="font-size:9pt;font-family:Menlo;color:black"><u></u><u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:black"><u></u> <u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:black">
</span><b><span style="font-size:9pt;font-family:Menlo;color:maroon">END</span></b><span style="font-size:9pt;font-family:Menlo;color:black">
</span><b><span style="font-size:9pt;font-family:Menlo;color:maroon">SUBROUTINE</span></b><span style="font-size:9pt;font-family:Menlo;color:black">
</span><span style="font-size:9pt;font-family:Menlo;color:blue">MyMonitor</span><span style="font-size:9pt;font-family:Menlo;color:black"><u></u><u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:black"><u></u> <u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:green">!====================================================================================================</span><span style="font-size:9pt;font-family:Menlo;color:black"><u></u><u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:black">
</span><b><span style="font-size:9pt;font-family:Menlo;color:maroon">SUBROUTINE</span></b><span style="font-size:9pt;font-family:Menlo;color:black">
</span><span style="font-size:9pt;font-family:Menlo;color:blue">MyConverged</span><span style="font-size:9pt;font-family:Menlo;color:black">(</span><span style="font-size:9pt;font-family:Menlo;color:blue">snes</span><span style="font-size:9pt;font-family:Menlo;color:black">,
</span><span style="font-size:9pt;font-family:Menlo;color:blue">it</span><span style="font-size:9pt;font-family:Menlo;color:black">,
</span><span style="font-size:9pt;font-family:Menlo;color:blue">xnorm</span><span style="font-size:9pt;font-family:Menlo;color:black">,
</span><span style="font-size:9pt;font-family:Menlo;color:blue">ynorm</span><span style="font-size:9pt;font-family:Menlo;color:black">,
</span><span style="font-size:9pt;font-family:Menlo;color:blue">znorm</span><span style="font-size:9pt;font-family:Menlo;color:black">,
</span><span style="font-size:9pt;font-family:Menlo;color:blue">reason, ierr</span><span style="font-size:9pt;font-family:Menlo;color:black">)<u></u><u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:black">
</span><b><span style="font-size:9pt;font-family:Menlo;color:maroon">USE</span></b><span style="font-size:9pt;font-family:Menlo;color:black">
</span><span style="font-size:9pt;font-family:Menlo;color:blue">MyPetscModule</span><span style="font-size:9pt;font-family:Menlo;color:black"><u></u><u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:black"> </span><b><span style="font-size:9pt;font-family:Menlo;color:maroon">IMPLICIT</span></b><span style="font-size:9pt;font-family:Menlo;color:black">
</span><b><span style="font-size:9pt;font-family:Menlo;color:maroon">NONE</span></b><span style="font-size:9pt;font-family:Menlo;color:black"><u></u><u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:black"><u></u> <u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:black">
</span><span style="font-size:9pt;font-family:Menlo;color:blue">SNES</span><span style="font-size:9pt;font-family:Menlo;color:black"> ::
</span><span style="font-size:9pt;font-family:Menlo;color:blue">snes</span><span style="font-size:9pt;font-family:Menlo;color:black"><u></u><u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:black">
</span><span style="font-size:9pt;font-family:Menlo;color:blue">PetscInt</span><span style="font-size:9pt;font-family:Menlo;color:black"> ::
</span><span style="font-size:9pt;font-family:Menlo;color:blue">it</span><span style="font-size:9pt;font-family:Menlo;color:black">,</span><span style="font-size:9pt;font-family:Menlo;color:blue">ctx</span><span style="font-size:9pt;font-family:Menlo;color:black"><u></u><u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:black">
</span><span style="font-size:9pt;font-family:Menlo;color:blue">PetscReal</span><span style="font-size:9pt;font-family:Menlo;color:black"> ::
</span><span style="font-size:9pt;font-family:Menlo;color:blue">xnorm</span><span style="font-size:9pt;font-family:Menlo;color:black">,
</span><span style="font-size:9pt;font-family:Menlo;color:blue">ynorm</span><span style="font-size:9pt;font-family:Menlo;color:black">,
</span><span style="font-size:9pt;font-family:Menlo;color:blue">znorm</span><span style="font-size:9pt;font-family:Menlo;color:black"><u></u><u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:black">
</span><span style="font-size:9pt;font-family:Menlo;color:blue">KSPConvergedReason</span><span style="font-size:9pt;font-family:Menlo;color:black"> ::
</span><span style="font-size:9pt;font-family:Menlo;color:blue">reason</span><span style="font-size:9pt;font-family:Menlo;color:black"><u></u><u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:black">
</span><span style="font-size:9pt;font-family:Menlo;color:blue">PetscErrorCode</span><span style="font-size:9pt;font-family:Menlo;color:black"> ::
</span><span style="font-size:9pt;font-family:Menlo;color:blue">ierr</span><span style="font-size:9pt;font-family:Menlo;color:black"><u></u><u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:green"><u></u> <u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:green">! ... add convergence test here ...</span><span style="font-size:9pt;font-family:Menlo;color:black"><u></u><u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:green">! set reason to a positive value if convergence has been achieved</span><span style="font-size:9pt;font-family:Menlo;color:black"><u></u><u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:black"><u></u> <u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:black"><u></u> <u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:black">
</span><b><span style="font-size:9pt;font-family:Menlo;color:maroon">END</span></b><span style="font-size:9pt;font-family:Menlo;color:black">
</span><b><span style="font-size:9pt;font-family:Menlo;color:maroon">SUBROUTINE</span></b><span style="font-size:9pt;font-family:Menlo;color:black">
</span><span style="font-size:9pt;font-family:Menlo;color:blue">MyConverged</span><span style="font-size:9pt;font-family:Menlo;color:black"><u></u><u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:black">
</span><b><span style="font-size:9pt;font-family:Menlo;color:maroon">END</span></b><span style="font-size:9pt;font-family:Menlo;color:black">
</span><b><span style="font-size:9pt;font-family:Menlo;color:maroon">MODULE</span></b><span style="font-size:9pt;font-family:Menlo;color:black">
</span><span style="font-size:9pt;font-family:Menlo;color:blue">SolveWithSNESShell_module</span><span style="font-size:9pt;font-family:Menlo;color:black"><u></u><u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:green">!</span><span style="font-size:9pt;font-family:Menlo;color:black"><u></u><u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:green">!====================================================================================================</span><span style="font-size:9pt;font-family:Menlo;color:black"><u></u><u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:black">
</span><b><span style="font-size:9pt;font-family:Menlo;color:maroon">SUBROUTINE</span></b><span style="font-size:9pt;font-family:Menlo;color:black">
</span><span style="font-size:9pt;font-family:Menlo;color:blue">SolveWithSNESShell</span><span style="font-size:9pt;font-family:Menlo;color:black"><u></u><u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:green">!====================================================================================================</span><span style="font-size:9pt;font-family:Menlo;color:black"><u></u><u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:green">!!</span><span style="font-size:9pt;font-family:Menlo;color:black"><u></u><u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:green">!!</span><span style="font-size:9pt;font-family:Menlo;color:black"><u></u><u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:green">!====================================================================================================</span><span style="font-size:9pt;font-family:Menlo;color:black"><u></u><u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:green">!</span><span style="font-size:9pt;font-family:Menlo;color:black"><u></u><u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:black">
</span><b><span style="font-size:9pt;font-family:Menlo;color:maroon">USE</span></b><span style="font-size:9pt;font-family:Menlo;color:black">
</span><span style="font-size:9pt;font-family:Menlo;color:blue">SolveWithSNESShell_module</span><span style="font-size:9pt;font-family:Menlo;color:black"><u></u><u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:black">
</span><b><span style="font-size:9pt;font-family:Menlo;color:maroon">IMPLICIT</span></b><span style="font-size:9pt;font-family:Menlo;color:black">
</span><b><span style="font-size:9pt;font-family:Menlo;color:maroon">NONE</span></b><span style="font-size:9pt;font-family:Menlo;color:black"><u></u><u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:green">!</span><span style="font-size:9pt;font-family:Menlo;color:black"><u></u><u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:green">!.... Declare passed variables</span><span style="font-size:9pt;font-family:Menlo;color:black"><u></u><u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:black">
</span><b><span style="font-size:9pt;font-family:Menlo;color:maroon">INTEGER</span></b><span style="font-size:9pt;font-family:Menlo;color:black"> ::
</span><span style="font-size:9pt;font-family:Menlo;color:blue">level_tmp</span><span style="font-size:9pt;font-family:Menlo;color:black"><u></u><u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:green">!</span><span style="font-size:9pt;font-family:Menlo;color:black"><u></u><u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:green">!.... Declare local variables</span><span style="font-size:9pt;font-family:Menlo;color:black"><u></u><u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:black">
</span><b><span style="font-size:9pt;font-family:Menlo;color:maroon">INTEGER</span></b><span style="font-size:9pt;font-family:Menlo;color:black"> ::
</span><span style="font-size:9pt;font-family:Menlo;color:blue">iz</span><span style="font-size:9pt;font-family:Menlo;color:black"><u></u><u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:black">
</span><b><span style="font-size:9pt;font-family:Menlo;color:maroon">INTEGER</span></b><span style="font-size:9pt;font-family:Menlo;color:black"> ::
</span><span style="font-size:9pt;font-family:Menlo;color:blue">imax</span><span style="font-size:9pt;font-family:Menlo;color:black"><u></u><u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:black">
</span><b><span style="font-size:9pt;font-family:Menlo;color:maroon">INTEGER</span></b><span style="font-size:9pt;font-family:Menlo;color:black"> ::
</span><span style="font-size:9pt;font-family:Menlo;color:blue">jmax</span><span style="font-size:9pt;font-family:Menlo;color:black"><u></u><u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:black">
</span><b><span style="font-size:9pt;font-family:Menlo;color:maroon">INTEGER</span></b><span style="font-size:9pt;font-family:Menlo;color:black"> ::
</span><span style="font-size:9pt;font-family:Menlo;color:blue">kmax</span><span style="font-size:9pt;font-family:Menlo;color:black"><u></u><u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:black">
</span><span style="font-size:9pt;font-family:Menlo;color:blue">SNES</span><span style="font-size:9pt;font-family:Menlo;color:black"> ::
</span><span style="font-size:9pt;font-family:Menlo;color:blue">snes</span><span style="font-size:9pt;font-family:Menlo;color:black"><u></u><u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:black">
</span><span style="font-size:9pt;font-family:Menlo;color:blue">KSP</span><span style="font-size:9pt;font-family:Menlo;color:black"> ::
</span><span style="font-size:9pt;font-family:Menlo;color:blue">ksp</span><span style="font-size:9pt;font-family:Menlo;color:black"><u></u><u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:black">
</span><span style="font-size:9pt;font-family:Menlo;color:blue">Vec</span><span style="font-size:9pt;font-family:Menlo;color:black"> ::
</span><span style="font-size:9pt;font-family:Menlo;color:blue">x</span><span style="font-size:9pt;font-family:Menlo;color:black"><u></u><u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:black"> </span><span style="font-size:9pt;font-family:Menlo;color:blue">Vec</span><span style="font-size:9pt;font-family:Menlo;color:black">
:: </span><span style="font-size:9pt;font-family:Menlo;color:blue">y</span><span style="font-size:9pt;font-family:Menlo;color:black"><u></u><u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:black">
</span><span style="font-size:9pt;font-family:Menlo;color:blue">PetscViewer</span><span style="font-size:9pt;font-family:Menlo;color:black"> ::
</span><span style="font-size:9pt;font-family:Menlo;color:blue">viewer</span><span style="font-size:9pt;font-family:Menlo;color:black"><u></u><u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:black">
</span><span style="font-size:9pt;font-family:Menlo;color:blue">PetscErrorCode</span><span style="font-size:9pt;font-family:Menlo;color:black"> ::
</span><span style="font-size:9pt;font-family:Menlo;color:blue">ierr</span><span style="font-size:9pt;font-family:Menlo;color:black"><u></u><u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:black">
</span><span style="font-size:9pt;font-family:Menlo;color:blue">PetscReal</span><span style="font-size:9pt;font-family:Menlo;color:black"> ::
</span><span style="font-size:9pt;font-family:Menlo;color:blue">rtol</span><span style="font-size:9pt;font-family:Menlo;color:black"> = 1.0</span><span style="font-size:9pt;font-family:Menlo;color:blue">D</span><span style="font-size:9pt;font-family:Menlo;color:black">-10
</span><span style="font-size:9pt;font-family:Menlo;color:green">!! relative tolerance</span><span style="font-size:9pt;font-family:Menlo;color:black"><u></u><u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:black">
</span><span style="font-size:9pt;font-family:Menlo;color:blue">PetscReal</span><span style="font-size:9pt;font-family:Menlo;color:black"> ::
</span><span style="font-size:9pt;font-family:Menlo;color:blue">atol</span><span style="font-size:9pt;font-family:Menlo;color:black"> = 1.0</span><span style="font-size:9pt;font-family:Menlo;color:blue">D</span><span style="font-size:9pt;font-family:Menlo;color:black">-50
</span><span style="font-size:9pt;font-family:Menlo;color:green">!! absolute tolerance</span><span style="font-size:9pt;font-family:Menlo;color:black"><u></u><u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:black">
</span><span style="font-size:9pt;font-family:Menlo;color:blue">PetscReal</span><span style="font-size:9pt;font-family:Menlo;color:black"> ::
</span><span style="font-size:9pt;font-family:Menlo;color:blue">dtol</span><span style="font-size:9pt;font-family:Menlo;color:black"> = 1.0</span><span style="font-size:9pt;font-family:Menlo;color:blue">D</span><span style="font-size:9pt;font-family:Menlo;color:black">+06
</span><span style="font-size:9pt;font-family:Menlo;color:green">!! divergence tolerance</span><span style="font-size:9pt;font-family:Menlo;color:black"><u></u><u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:black">
</span><span style="font-size:9pt;font-family:Menlo;color:blue">PetscInt</span><span style="font-size:9pt;font-family:Menlo;color:black"> ::
</span><span style="font-size:9pt;font-family:Menlo;color:blue">maxits</span><span style="font-size:9pt;font-family:Menlo;color:black"> = 50<u></u><u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:black">
</span><span style="font-size:9pt;font-family:Menlo;color:blue">PetscInt</span><span style="font-size:9pt;font-family:Menlo;color:black"> ::
</span><span style="font-size:9pt;font-family:Menlo;color:blue">maxf</span><span style="font-size:9pt;font-family:Menlo;color:black"> = 10000<u></u><u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:black">
</span><b><span style="font-size:9pt;font-family:Menlo;color:maroon">character</span></b><span style="font-size:9pt;font-family:Menlo;color:black">(</span><i><span style="font-size:9pt;font-family:Menlo;color:teal">len</span></i><span style="font-size:9pt;font-family:Menlo;color:black">=1000)::
</span><span style="font-size:9pt;font-family:Menlo;color:blue">args</span><span style="font-size:9pt;font-family:Menlo;color:black"><u></u><u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:green">!</span><span style="font-size:9pt;font-family:Menlo;color:black"><u></u><u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:green">!.... count the number of degrees of freedom.</span><span style="font-size:9pt;font-family:Menlo;color:black"><u></u><u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:black">
</span><span style="font-size:9pt;font-family:Menlo;color:blue">level</span><span style="font-size:9pt;font-family:Menlo;color:black"> =
</span><span style="font-size:9pt;font-family:Menlo;color:blue">level_tmp</span><span style="font-size:9pt;font-family:Menlo;color:black"><u></u><u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:black">
</span><span style="font-size:9pt;font-family:Menlo;color:blue">n</span><span style="font-size:9pt;font-family:Menlo;color:black"> = 0<u></u><u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:black">
</span><b><span style="font-size:9pt;font-family:Menlo;color:maroon">DO</span></b><span style="font-size:9pt;font-family:Menlo;color:black">
</span><span style="font-size:9pt;font-family:Menlo;color:blue">iz</span><span style="font-size:9pt;font-family:Menlo;color:black"> = 1,
</span><span style="font-size:9pt;font-family:Menlo;color:blue">hb</span><span style="font-size:9pt;font-family:Menlo;color:black">(</span><span style="font-size:9pt;font-family:Menlo;color:blue">level</span><span style="font-size:9pt;font-family:Menlo;color:black">)%</span><span style="font-size:9pt;font-family:Menlo;color:blue">nzone</span><span style="font-size:9pt;font-family:Menlo;color:black"><u></u><u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:black">
</span><span style="font-size:9pt;font-family:Menlo;color:blue">imax</span><span style="font-size:9pt;font-family:Menlo;color:black"> =
</span><span style="font-size:9pt;font-family:Menlo;color:blue">hb</span><span style="font-size:9pt;font-family:Menlo;color:black">(</span><span style="font-size:9pt;font-family:Menlo;color:blue">level</span><span style="font-size:9pt;font-family:Menlo;color:black">)%</span><span style="font-size:9pt;font-family:Menlo;color:blue">zone</span><span style="font-size:9pt;font-family:Menlo;color:black">(</span><span style="font-size:9pt;font-family:Menlo;color:blue">iz</span><span style="font-size:9pt;font-family:Menlo;color:black">)%</span><span style="font-size:9pt;font-family:Menlo;color:blue">imax</span><span style="font-size:9pt;font-family:Menlo;color:black">
- 1<u></u><u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:black">
</span><span style="font-size:9pt;font-family:Menlo;color:blue">jmax</span><span style="font-size:9pt;font-family:Menlo;color:black"> =
</span><span style="font-size:9pt;font-family:Menlo;color:blue">hb</span><span style="font-size:9pt;font-family:Menlo;color:black">(</span><span style="font-size:9pt;font-family:Menlo;color:blue">level</span><span style="font-size:9pt;font-family:Menlo;color:black">)%</span><span style="font-size:9pt;font-family:Menlo;color:blue">zone</span><span style="font-size:9pt;font-family:Menlo;color:black">(</span><span style="font-size:9pt;font-family:Menlo;color:blue">iz</span><span style="font-size:9pt;font-family:Menlo;color:black">)%</span><span style="font-size:9pt;font-family:Menlo;color:blue">jmax</span><span style="font-size:9pt;font-family:Menlo;color:black">
- 1<u></u><u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:black">
</span><span style="font-size:9pt;font-family:Menlo;color:blue">kmax</span><span style="font-size:9pt;font-family:Menlo;color:black"> =
</span><span style="font-size:9pt;font-family:Menlo;color:blue">hb</span><span style="font-size:9pt;font-family:Menlo;color:black">(</span><span style="font-size:9pt;font-family:Menlo;color:blue">level</span><span style="font-size:9pt;font-family:Menlo;color:black">)%</span><span style="font-size:9pt;font-family:Menlo;color:blue">zone</span><span style="font-size:9pt;font-family:Menlo;color:black">(</span><span style="font-size:9pt;font-family:Menlo;color:blue">iz</span><span style="font-size:9pt;font-family:Menlo;color:black">)%</span><span style="font-size:9pt;font-family:Menlo;color:blue">kmax</span><span style="font-size:9pt;font-family:Menlo;color:black">
- 1<u></u><u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:black"> </span><span style="font-size:9pt;font-family:Menlo;color:blue">n</span><span style="font-size:9pt;font-family:Menlo;color:black"> =
</span><span style="font-size:9pt;font-family:Menlo;color:blue">n</span><span style="font-size:9pt;font-family:Menlo;color:black"> +
</span><span style="font-size:9pt;font-family:Menlo;color:blue">imax</span><span style="font-size:9pt;font-family:Menlo;color:black"> *
</span><span style="font-size:9pt;font-family:Menlo;color:blue">jmax</span><span style="font-size:9pt;font-family:Menlo;color:black"> *
</span><span style="font-size:9pt;font-family:Menlo;color:blue">kmax</span><span style="font-size:9pt;font-family:Menlo;color:black"><u></u><u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:black">
</span><b><span style="font-size:9pt;font-family:Menlo;color:maroon">END</span></b><span style="font-size:9pt;font-family:Menlo;color:black">
</span><b><span style="font-size:9pt;font-family:Menlo;color:maroon">DO</span></b><span style="font-size:9pt;font-family:Menlo;color:black"><u></u><u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:black">
</span><span style="font-size:9pt;font-family:Menlo;color:blue">n</span><span style="font-size:9pt;font-family:Menlo;color:black"> =
</span><span style="font-size:9pt;font-family:Menlo;color:blue">n</span><span style="font-size:9pt;font-family:Menlo;color:black"> *
</span><span style="font-size:9pt;font-family:Menlo;color:blue">neqn</span><span style="font-size:9pt;font-family:Menlo;color:black"><u></u><u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:green">!</span><span style="font-size:9pt;font-family:Menlo;color:black"><u></u><u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:green">!.... Initialize PETSc</span><span style="font-size:9pt;font-family:Menlo;color:black"><u></u><u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:black">
</span><span style="font-size:9pt;font-family:Menlo;color:blue">PetscCall</span><span style="font-size:9pt;font-family:Menlo;color:black">(</span><span style="font-size:9pt;font-family:Menlo;color:blue">PetscInitialize</span><span style="font-size:9pt;font-family:Menlo;color:black">(</span><span style="font-size:9pt;font-family:Menlo;color:blue">PETSC_NULL_CHARACTER</span><span style="font-size:9pt;font-family:Menlo;color:black">,
</span><span style="font-size:9pt;font-family:Menlo;color:blue">ierr</span><span style="font-size:9pt;font-family:Menlo;color:black">))<u></u><u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:green">!</span><span style="font-size:9pt;font-family:Menlo;color:black"><u></u><u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:green">!.... Log</span><span style="font-size:9pt;font-family:Menlo;color:black"><u></u><u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:black">
</span><span style="font-size:9pt;font-family:Menlo;color:blue">PetscCall</span><span style="font-size:9pt;font-family:Menlo;color:black">(</span><span style="font-size:9pt;font-family:Menlo;color:blue">PetscLogDefaultBegin</span><span style="font-size:9pt;font-family:Menlo;color:black">(</span><span style="font-size:9pt;font-family:Menlo;color:blue">ierr</span><span style="font-size:9pt;font-family:Menlo;color:black">))<u></u><u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:green">!</span><span style="font-size:9pt;font-family:Menlo;color:black"><u></u><u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:green">!.... Hard-wired options.</span><span style="font-size:9pt;font-family:Menlo;color:black"><u></u><u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:green">! PetscCall(PetscOptionsInsertString(PETSC_NULL_OPTIONS, "command line style option here" , ierr))</span><span style="font-size:9pt;font-family:Menlo;color:black"><u></u><u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:green">!</span><span style="font-size:9pt;font-family:Menlo;color:black"><u></u><u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:green">!.... Command line options.</span><span style="font-size:9pt;font-family:Menlo;color:black"><u></u><u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:black">
</span><b><span style="font-size:9pt;font-family:Menlo;color:maroon">call</span></b><span style="font-size:9pt;font-family:Menlo;color:black">
</span><i><span style="font-size:9pt;font-family:Menlo;color:teal">GET_COMMAND</span></i><span style="font-size:9pt;font-family:Menlo;color:black">(</span><span style="font-size:9pt;font-family:Menlo;color:blue">args</span><span style="font-size:9pt;font-family:Menlo;color:black">)<u></u><u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:black">
</span><span style="font-size:9pt;font-family:Menlo;color:blue">PetscCall</span><span style="font-size:9pt;font-family:Menlo;color:black">(</span><span style="font-size:9pt;font-family:Menlo;color:blue">PetscOptionsInsertString</span><span style="font-size:9pt;font-family:Menlo;color:black">(</span><span style="font-size:9pt;font-family:Menlo;color:blue">PETSC_NULL_OPTIONS</span><span style="font-size:9pt;font-family:Menlo;color:black">,
</span><span style="font-size:9pt;font-family:Menlo;color:blue">args</span><span style="font-size:9pt;font-family:Menlo;color:black">,
</span><span style="font-size:9pt;font-family:Menlo;color:blue">ierr</span><span style="font-size:9pt;font-family:Menlo;color:black">))<u></u><u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:green">!</span><span style="font-size:9pt;font-family:Menlo;color:black"><u></u><u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:green">!.... view command line table</span><span style="font-size:9pt;font-family:Menlo;color:black"><u></u><u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:black"> </span><span style="font-size:9pt;font-family:Menlo;color:blue">PetscCall</span><span style="font-size:9pt;font-family:Menlo;color:black">(</span><span style="font-size:9pt;font-family:Menlo;color:blue">PetscViewerASCIIOpen</span><span style="font-size:9pt;font-family:Menlo;color:black">(</span><span style="font-size:9pt;font-family:Menlo;color:blue">PETSC_COMM_SELF</span><span style="font-size:9pt;font-family:Menlo;color:black">,
</span><span style="font-size:9pt;font-family:Menlo;color:blue">PETSC_VIEWER_STDOUT_SELF</span><span style="font-size:9pt;font-family:Menlo;color:black">,
</span><span style="font-size:9pt;font-family:Menlo;color:blue">viewer</span><span style="font-size:9pt;font-family:Menlo;color:black">,
</span><span style="font-size:9pt;font-family:Menlo;color:blue">ierr</span><span style="font-size:9pt;font-family:Menlo;color:black">))<u></u><u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:black">
</span><span style="font-size:9pt;font-family:Menlo;color:blue">PetscCall</span><span style="font-size:9pt;font-family:Menlo;color:black">(</span><span style="font-size:9pt;font-family:Menlo;color:blue">PetscOptionsView</span><span style="font-size:9pt;font-family:Menlo;color:black">(</span><span style="font-size:9pt;font-family:Menlo;color:blue">PETSC_NULL_OPTIONS</span><span style="font-size:9pt;font-family:Menlo;color:black">,
</span><span style="font-size:9pt;font-family:Menlo;color:blue">viewer</span><span style="font-size:9pt;font-family:Menlo;color:black">,
</span><span style="font-size:9pt;font-family:Menlo;color:blue">ierr</span><span style="font-size:9pt;font-family:Menlo;color:black">))<u></u><u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:black">
</span><span style="font-size:9pt;font-family:Menlo;color:blue">PetscCall</span><span style="font-size:9pt;font-family:Menlo;color:black">(</span><span style="font-size:9pt;font-family:Menlo;color:blue">PetscViewerDestroy</span><span style="font-size:9pt;font-family:Menlo;color:black">(</span><span style="font-size:9pt;font-family:Menlo;color:blue">viewer</span><span style="font-size:9pt;font-family:Menlo;color:black">,
</span><span style="font-size:9pt;font-family:Menlo;color:blue">ierr</span><span style="font-size:9pt;font-family:Menlo;color:black">))<u></u><u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:green">!</span><span style="font-size:9pt;font-family:Menlo;color:black"><u></u><u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:green">!.... Create PETSc vectors</span><span style="font-size:9pt;font-family:Menlo;color:black"><u></u><u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:black">
</span><span style="font-size:9pt;font-family:Menlo;color:blue">PetscCall</span><span style="font-size:9pt;font-family:Menlo;color:black">(</span><span style="font-size:9pt;font-family:Menlo;color:blue">VecCreateSeq</span><span style="font-size:9pt;font-family:Menlo;color:black">(</span><span style="font-size:9pt;font-family:Menlo;color:blue">PETSC_COMM_SELF</span><span style="font-size:9pt;font-family:Menlo;color:black">,
</span><span style="font-size:9pt;font-family:Menlo;color:blue">n</span><span style="font-size:9pt;font-family:Menlo;color:black">,
</span><span style="font-size:9pt;font-family:Menlo;color:blue">x</span><span style="font-size:9pt;font-family:Menlo;color:black">,
</span><span style="font-size:9pt;font-family:Menlo;color:blue">ierr</span><span style="font-size:9pt;font-family:Menlo;color:black">))<u></u><u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:black">
</span><span style="font-size:9pt;font-family:Menlo;color:blue">PetscCall</span><span style="font-size:9pt;font-family:Menlo;color:black">(</span><span style="font-size:9pt;font-family:Menlo;color:blue">VecCreateSeq</span><span style="font-size:9pt;font-family:Menlo;color:black">(</span><span style="font-size:9pt;font-family:Menlo;color:blue">PETSC_COMM_SELF</span><span style="font-size:9pt;font-family:Menlo;color:black">,
</span><span style="font-size:9pt;font-family:Menlo;color:blue">n</span><span style="font-size:9pt;font-family:Menlo;color:black">,
</span><span style="font-size:9pt;font-family:Menlo;color:blue">y</span><span style="font-size:9pt;font-family:Menlo;color:black">,
</span><span style="font-size:9pt;font-family:Menlo;color:blue">ierr</span><span style="font-size:9pt;font-family:Menlo;color:black">))<u></u><u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:black">
</span><span style="font-size:9pt;font-family:Menlo;color:blue">PetscCall</span><span style="font-size:9pt;font-family:Menlo;color:black">(</span><span style="font-size:9pt;font-family:Menlo;color:blue">VecSet</span><span style="font-size:9pt;font-family:Menlo;color:black">(</span><span style="font-size:9pt;font-family:Menlo;color:blue">x</span><span style="font-size:9pt;font-family:Menlo;color:black">,
0.0</span><span style="font-size:9pt;font-family:Menlo;color:blue">d0</span><span style="font-size:9pt;font-family:Menlo;color:black">,
</span><span style="font-size:9pt;font-family:Menlo;color:blue">ierr</span><span style="font-size:9pt;font-family:Menlo;color:black">))<u></u><u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:black">
</span><span style="font-size:9pt;font-family:Menlo;color:blue">PetscCall</span><span style="font-size:9pt;font-family:Menlo;color:black">(</span><span style="font-size:9pt;font-family:Menlo;color:blue">VecSet</span><span style="font-size:9pt;font-family:Menlo;color:black">(</span><span style="font-size:9pt;font-family:Menlo;color:blue">y</span><span style="font-size:9pt;font-family:Menlo;color:black">,
0.0</span><span style="font-size:9pt;font-family:Menlo;color:blue">d0</span><span style="font-size:9pt;font-family:Menlo;color:black">,
</span><span style="font-size:9pt;font-family:Menlo;color:blue">ierr</span><span style="font-size:9pt;font-family:Menlo;color:black">))<u></u><u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:black"><u></u> <u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:green">!.... SNES context</span><span style="font-size:9pt;font-family:Menlo;color:black"><u></u><u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:black">
</span><span style="font-size:9pt;font-family:Menlo;color:blue">PetscCall</span><span style="font-size:9pt;font-family:Menlo;color:black">(</span><span style="font-size:9pt;font-family:Menlo;color:blue">SNESCreate</span><span style="font-size:9pt;font-family:Menlo;color:black">(</span><span style="font-size:9pt;font-family:Menlo;color:blue">PETSC_COMM_SELF</span><span style="font-size:9pt;font-family:Menlo;color:black">,
</span><span style="font-size:9pt;font-family:Menlo;color:blue">snes</span><span style="font-size:9pt;font-family:Menlo;color:black">,
</span><span style="font-size:9pt;font-family:Menlo;color:blue">ierr</span><span style="font-size:9pt;font-family:Menlo;color:black">))<u></u><u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:black">
</span><span style="font-size:9pt;font-family:Menlo;color:blue">PetscCall</span><span style="font-size:9pt;font-family:Menlo;color:black">(</span><span style="font-size:9pt;font-family:Menlo;color:blue">SNESSetType</span><span style="font-size:9pt;font-family:Menlo;color:black">(</span><span style="font-size:9pt;font-family:Menlo;color:blue">snes</span><span style="font-size:9pt;font-family:Menlo;color:black">,
</span><span style="font-size:9pt;font-family:Menlo;color:blue">SNESSHELL</span><span style="font-size:9pt;font-family:Menlo;color:black">,
</span><span style="font-size:9pt;font-family:Menlo;color:blue">ierr</span><span style="font-size:9pt;font-family:Menlo;color:black">))<u></u><u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:black">
</span><span style="font-size:9pt;font-family:Menlo;color:blue">PetscCall</span><span style="font-size:9pt;font-family:Menlo;color:black">(</span><span style="font-size:9pt;font-family:Menlo;color:blue">SNESShellSetSolve</span><span style="font-size:9pt;font-family:Menlo;color:black">(</span><span style="font-size:9pt;font-family:Menlo;color:blue">snes</span><span style="font-size:9pt;font-family:Menlo;color:black">,
</span><span style="font-size:9pt;font-family:Menlo;color:blue">MySolver</span><span style="font-size:9pt;font-family:Menlo;color:black">,
</span><span style="font-size:9pt;font-family:Menlo;color:blue">ierr</span><span style="font-size:9pt;font-family:Menlo;color:black">))<u></u><u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:black"><u></u> <u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:black">!!!!
</span><span style="font-size:9pt;font-family:Menlo;color:blue">PetscCall</span><span style="font-size:9pt;font-family:Menlo;color:black">(</span><span style="font-size:9pt;font-family:Menlo;color:blue">SNESSetFunction</span><span style="font-size:9pt;font-family:Menlo;color:black">(</span><span style="font-size:9pt;font-family:Menlo;color:blue">snes</span><span style="font-size:9pt;font-family:Menlo;color:black">,
</span><span style="font-size:9pt;font-family:Menlo;color:blue">x</span><span style="font-size:9pt;font-family:Menlo;color:black">,
</span><span style="font-size:9pt;font-family:Menlo;color:blue">MySolver</span><span style="font-size:9pt;font-family:Menlo;color:black">,
</span><span style="font-size:9pt;font-family:Menlo;color:blue">PETSC_NULL_INTEGER</span><span style="font-size:9pt;font-family:Menlo;color:black">,
</span><span style="font-size:9pt;font-family:Menlo;color:blue">ierr</span><span style="font-size:9pt;font-family:Menlo;color:black">))<u></u><u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:black">!!!! this line causes a segmentation error if uncommented.<u></u><u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:black"><u></u> <u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:black">
</span><span style="font-size:9pt;font-family:Menlo;color:blue">PetscCall</span><span style="font-size:9pt;font-family:Menlo;color:black">(</span><span style="font-size:9pt;font-family:Menlo;color:blue">SNESSetConvergenceTest</span><span style="font-size:9pt;font-family:Menlo;color:black">(</span><span style="font-size:9pt;font-family:Menlo;color:blue">snes</span><span style="font-size:9pt;font-family:Menlo;color:black">,
</span><span style="font-size:9pt;font-family:Menlo;color:blue">MyConverged</span><span style="font-size:9pt;font-family:Menlo;color:black">, 0,
</span><span style="font-size:9pt;font-family:Menlo;color:blue">PETSC_NULL_FUNCTION</span><span style="font-size:9pt;font-family:Menlo;color:black">,
</span><span style="font-size:9pt;font-family:Menlo;color:blue">ierr</span><span style="font-size:9pt;font-family:Menlo;color:black">))<u></u><u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:green">!</span><span style="font-size:9pt;font-family:Menlo;color:black"><u></u><u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:green">!.... Set SNES options</span><span style="font-size:9pt;font-family:Menlo;color:black"><u></u><u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:black">
</span><span style="font-size:9pt;font-family:Menlo;color:blue">PetscCall</span><span style="font-size:9pt;font-family:Menlo;color:black">(</span><span style="font-size:9pt;font-family:Menlo;color:blue">SNESSetFromOptions</span><span style="font-size:9pt;font-family:Menlo;color:black">(</span><span style="font-size:9pt;font-family:Menlo;color:blue">snes</span><span style="font-size:9pt;font-family:Menlo;color:black">,
</span><span style="font-size:9pt;font-family:Menlo;color:blue">ierr</span><span style="font-size:9pt;font-family:Menlo;color:black">))<u></u><u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:black"><u></u> <u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:green">!.... Set tolerances</span><span style="font-size:9pt;font-family:Menlo;color:black"><u></u><u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:black">
</span><span style="font-size:9pt;font-family:Menlo;color:blue">PetscCall</span><span style="font-size:9pt;font-family:Menlo;color:black">(</span><span style="font-size:9pt;font-family:Menlo;color:blue">SNESSetTolerances</span><span style="font-size:9pt;font-family:Menlo;color:black">(</span><span style="font-size:9pt;font-family:Menlo;color:blue">snes</span><span style="font-size:9pt;font-family:Menlo;color:black">,
</span><span style="font-size:9pt;font-family:Menlo;color:blue">rtol</span><span style="font-size:9pt;font-family:Menlo;color:black">,
</span><span style="font-size:9pt;font-family:Menlo;color:blue">atol</span><span style="font-size:9pt;font-family:Menlo;color:black">,
</span><span style="font-size:9pt;font-family:Menlo;color:blue">dtol</span><span style="font-size:9pt;font-family:Menlo;color:black">,
</span><span style="font-size:9pt;font-family:Menlo;color:blue">maxits</span><span style="font-size:9pt;font-family:Menlo;color:black">,
</span><span style="font-size:9pt;font-family:Menlo;color:blue">maxf</span><span style="font-size:9pt;font-family:Menlo;color:black">,
</span><span style="font-size:9pt;font-family:Menlo;color:blue">ierr</span><span style="font-size:9pt;font-family:Menlo;color:black">))<u></u><u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:green">!</span><span style="font-size:9pt;font-family:Menlo;color:black"><u></u><u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:green">!.... SNES montior</span><span style="font-size:9pt;font-family:Menlo;color:black"><u></u><u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:black">
</span><span style="font-size:9pt;font-family:Menlo;color:blue">PetscCall</span><span style="font-size:9pt;font-family:Menlo;color:black">(</span><span style="font-size:9pt;font-family:Menlo;color:blue">SNESMonitorSet</span><span style="font-size:9pt;font-family:Menlo;color:black">(</span><span style="font-size:9pt;font-family:Menlo;color:blue">snes</span><span style="font-size:9pt;font-family:Menlo;color:black">,
</span><span style="font-size:9pt;font-family:Menlo;color:blue">MyMonitor</span><span style="font-size:9pt;font-family:Menlo;color:black">,
</span><span style="font-size:9pt;font-family:Menlo;color:blue">PETSC_NULL_INTEGER</span><span style="font-size:9pt;font-family:Menlo;color:black">,
</span><span style="font-size:9pt;font-family:Menlo;color:blue">PETSC_NULL_FUNCTION</span><span style="font-size:9pt;font-family:Menlo;color:black">,</span><span style="font-size:9pt;font-family:Menlo;color:blue">ierr</span><span style="font-size:9pt;font-family:Menlo;color:black">))<u></u><u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:green">!</span><span style="font-size:9pt;font-family:Menlo;color:black"><u></u><u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:green">!.... Set the initial solution</span><span style="font-size:9pt;font-family:Menlo;color:black"><u></u><u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:black">
</span><b><span style="font-size:9pt;font-family:Menlo;color:maroon">CALL</span></b><span style="font-size:9pt;font-family:Menlo;color:black">
</span><span style="font-size:9pt;font-family:Menlo;color:blue">HBToVecX</span><span style="font-size:9pt;font-family:Menlo;color:black">(</span><span style="font-size:9pt;font-family:Menlo;color:blue">x</span><span style="font-size:9pt;font-family:Menlo;color:black">)<u></u><u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:green">!</span><span style="font-size:9pt;font-family:Menlo;color:black"><u></u><u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:green">!.... View snes context</span><span style="font-size:9pt;font-family:Menlo;color:black"><u></u><u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:black">
</span><span style="font-size:9pt;font-family:Menlo;color:blue">PetscCall</span><span style="font-size:9pt;font-family:Menlo;color:black">(</span><span style="font-size:9pt;font-family:Menlo;color:blue">SNESView</span><span style="font-size:9pt;font-family:Menlo;color:black">(</span><span style="font-size:9pt;font-family:Menlo;color:blue">snes</span><span style="font-size:9pt;font-family:Menlo;color:black">,
</span><span style="font-size:9pt;font-family:Menlo;color:blue">viewer</span><span style="font-size:9pt;font-family:Menlo;color:black">,
</span><span style="font-size:9pt;font-family:Menlo;color:blue">ierr</span><span style="font-size:9pt;font-family:Menlo;color:black">))<u></u><u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:green">!</span><span style="font-size:9pt;font-family:Menlo;color:black"><u></u><u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:green">!.... Solve SNES problem</span><span style="font-size:9pt;font-family:Menlo;color:black"><u></u><u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:black">
</span><span style="font-size:9pt;font-family:Menlo;color:blue">PetscCall</span><span style="font-size:9pt;font-family:Menlo;color:black">(</span><span style="font-size:9pt;font-family:Menlo;color:blue">SNESSolve</span><span style="font-size:9pt;font-family:Menlo;color:black">(</span><span style="font-size:9pt;font-family:Menlo;color:blue">snes</span><span style="font-size:9pt;font-family:Menlo;color:black">,
</span><span style="font-size:9pt;font-family:Menlo;color:blue">PETSC_NULL_VEC</span><span style="font-size:9pt;font-family:Menlo;color:black">,
</span><span style="font-size:9pt;font-family:Menlo;color:blue">x</span><span style="font-size:9pt;font-family:Menlo;color:black">,
</span><span style="font-size:9pt;font-family:Menlo;color:blue">ierr</span><span style="font-size:9pt;font-family:Menlo;color:black">))<u></u><u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:green">!</span><span style="font-size:9pt;font-family:Menlo;color:black"><u></u><u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:green">!.... View snes context</span><span style="font-size:9pt;font-family:Menlo;color:black"><u></u><u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:black">
</span><span style="font-size:9pt;font-family:Menlo;color:blue">PetscCall</span><span style="font-size:9pt;font-family:Menlo;color:black">(</span><span style="font-size:9pt;font-family:Menlo;color:blue">SNESView</span><span style="font-size:9pt;font-family:Menlo;color:black">(</span><span style="font-size:9pt;font-family:Menlo;color:blue">snes</span><span style="font-size:9pt;font-family:Menlo;color:black">,
</span><span style="font-size:9pt;font-family:Menlo;color:blue">viewer</span><span style="font-size:9pt;font-family:Menlo;color:black">,
</span><span style="font-size:9pt;font-family:Menlo;color:blue">ierr</span><span style="font-size:9pt;font-family:Menlo;color:black">))<u></u><u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:green">!</span><span style="font-size:9pt;font-family:Menlo;color:black"><u></u><u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:green">!.... dump the logs</span><span style="font-size:9pt;font-family:Menlo;color:black"><u></u><u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:green">! call PetscLogDump(ierr) ! Why does this cause error</span><span style="font-size:9pt;font-family:Menlo;color:black"><u></u><u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:green">!</span><span style="font-size:9pt;font-family:Menlo;color:black"><u></u><u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:green">!.... Destroy PETSc objects</span><span style="font-size:9pt;font-family:Menlo;color:black"><u></u><u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:black">
</span><span style="font-size:9pt;font-family:Menlo;color:blue">PetscCall</span><span style="font-size:9pt;font-family:Menlo;color:black">(</span><span style="font-size:9pt;font-family:Menlo;color:blue">SNESDestroy</span><span style="font-size:9pt;font-family:Menlo;color:black">(</span><span style="font-size:9pt;font-family:Menlo;color:blue">snes</span><span style="font-size:9pt;font-family:Menlo;color:black">,
</span><span style="font-size:9pt;font-family:Menlo;color:blue">ierr</span><span style="font-size:9pt;font-family:Menlo;color:black">))<u></u><u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:black">
</span><span style="font-size:9pt;font-family:Menlo;color:blue">PetscCall</span><span style="font-size:9pt;font-family:Menlo;color:black">(</span><span style="font-size:9pt;font-family:Menlo;color:blue">VecDestroy</span><span style="font-size:9pt;font-family:Menlo;color:black">(</span><span style="font-size:9pt;font-family:Menlo;color:blue">x</span><span style="font-size:9pt;font-family:Menlo;color:black">,
</span><span style="font-size:9pt;font-family:Menlo;color:blue">ierr</span><span style="font-size:9pt;font-family:Menlo;color:black">))<u></u><u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:black">
</span><span style="font-size:9pt;font-family:Menlo;color:blue">PetscCall</span><span style="font-size:9pt;font-family:Menlo;color:black">(</span><span style="font-size:9pt;font-family:Menlo;color:blue">VecDestroy</span><span style="font-size:9pt;font-family:Menlo;color:black">(</span><span style="font-size:9pt;font-family:Menlo;color:blue">y</span><span style="font-size:9pt;font-family:Menlo;color:black">,
</span><span style="font-size:9pt;font-family:Menlo;color:blue">ierr</span><span style="font-size:9pt;font-family:Menlo;color:black">))<u></u><u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:black">
</span><span style="font-size:9pt;font-family:Menlo;color:blue">PetscCall</span><span style="font-size:9pt;font-family:Menlo;color:black">(</span><span style="font-size:9pt;font-family:Menlo;color:blue">PetscViewerDestroy</span><span style="font-size:9pt;font-family:Menlo;color:black">(</span><span style="font-size:9pt;font-family:Menlo;color:blue">viewer</span><span style="font-size:9pt;font-family:Menlo;color:black">,
</span><span style="font-size:9pt;font-family:Menlo;color:blue">ierr</span><span style="font-size:9pt;font-family:Menlo;color:black">))<u></u><u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:green">!</span><span style="font-size:9pt;font-family:Menlo;color:black"><u></u><u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:green">!.... Finish</span><span style="font-size:9pt;font-family:Menlo;color:black"><u></u><u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:black">
</span><span style="font-size:9pt;font-family:Menlo;color:blue">PetscCall</span><span style="font-size:9pt;font-family:Menlo;color:black">(</span><span style="font-size:9pt;font-family:Menlo;color:blue">PetscFinalize</span><span style="font-size:9pt;font-family:Menlo;color:black">(</span><span style="font-size:9pt;font-family:Menlo;color:blue">ierr</span><span style="font-size:9pt;font-family:Menlo;color:black">))<u></u><u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:black"><u></u> <u></u></span></p>
<p style="margin:0in;background:white"><span style="font-size:9pt;font-family:Menlo;color:black">
</span><b><span style="font-size:9pt;font-family:Menlo;color:maroon">END</span></b><span style="font-size:9pt;font-family:Menlo;color:black">
</span><b><span style="font-size:9pt;font-family:Menlo;color:maroon">SUBROUTINE</span></b><span style="font-size:9pt;font-family:Menlo;color:black">
</span><span style="font-size:9pt;font-family:Menlo;color:blue">SolveWithSNESShell</span><span style="font-size:9pt;font-family:Menlo;color:black"><u></u><u></u></span></p>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
</div>
</div></blockquote></div><br clear="all"><div><br></div><span class="gmail_signature_prefix">-- </span><br><div dir="ltr" class="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div>What most experimenters take for granted before they begin their experiments is infinitely more interesting than any results to which their experiments lead.<br>-- Norbert Wiener</div><div><br></div><div><a href="http://www.cse.buffalo.edu/~knepley/" target="_blank">https://www.cse.buffalo.edu/~knepley/</a><br></div></div></div></div></div></div></div></div>