<div dir="ltr"><div class="gmail_default" style="font-family:comic sans ms,sans-serif">Thanks!</div><div class="gmail_default" style="font-family:comic sans ms,sans-serif"><br></div><div class="gmail_default" style="font-family:comic sans ms,sans-serif">Sincerely,</div><div class="gmail_default" style="font-family:comic sans ms,sans-serif">Huq</div></div><br><div class="gmail_quote"><div dir="ltr">On Tue, Nov 27, 2018 at 10:57 AM Smith, Barry F. <<a href="mailto:bsmith@mcs.anl.gov">bsmith@mcs.anl.gov</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><br>
    This is an ad hoc way of checking that the error from the linear solve is "reasonable".  Note that PETSC_MACHINE_EPSILON <br>
depends on the precision of the floating point used so for more precise floating point (in going from half precision to quad precision) we expect the error <br>
to be smaller (depending on the machine epsilon). The 1000 is an arbitrary number, it could be 100 or 10,000 or anything in between could be reasonable. Note that using a 1.0 is probably not reasonable because it is not reasonable to expect the error to be only a machine epsilon away from the "exact" answer.<br>
<br>
    Barry<br>
<br>
If you are not familiar with the term machine epsilon you can google it.<br>
<br>
<br>
<br>
> On Nov 26, 2018, at 9:30 PM, Fazlul Huq via petsc-users <<a href="mailto:petsc-users@mcs.anl.gov" target="_blank">petsc-users@mcs.anl.gov</a>> wrote:<br>
> <br>
> Hello PETSc developers,<br>
> <br>
> I went through the ex23.c of ksp section attached herewith but I don't understand the following part: <br>
> ***********************************************<br>
> tol=1000.*PETSC_MACHINE_EPSILON<br>
> ************************************************<br>
> and,<br>
> ************************************************<br>
> ierr = VecAXPY(x,-1.0,u);CHKERRQ(ierr);<br>
>  ierr = VecNorm(x,NORM_2,&norm);CHKERRQ(ierr);<br>
>  ierr = KSPGetIterationNumber(ksp,&its);CHKERRQ(ierr);<br>
>  if (norm > tol) {<br>
>  ierr = PetscPrintf(PETSC_COMM_WORLD,"Norm of error %g, Iterations %D\n",  (double)norm,its);CHKERRQ(ierr);<br>
>   }<br>
> ************************************************<br>
> I don't understand what is "tol" here and "*PETSC_MACHINE_EPSILON"?<br>
> The if condition is also not clear to me.<br>
> <br>
> Thanks.<br>
> Sincerely,<br>
> Huq<br>
> -- <br>
> <br>
> Fazlul Huq<br>
> Graduate Research Assistant<br>
> Department of Nuclear, Plasma & Radiological Engineering (NPRE)<br>
> University of Illinois at Urbana-Champaign (UIUC)<br>
> E-mail: <a href="mailto:huq2090@gmail.com" target="_blank">huq2090@gmail.com</a><br>
> <ex23.c><br>
<br>
</blockquote></div><br clear="all"><div><br></div>-- <br><div dir="ltr" class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><br><div><font face="comic sans ms, sans-serif">Fazlul Huq</font></div><div><font face="comic sans ms, sans-serif">Graduate Research Assistant</font></div><div><font face="comic sans ms, sans-serif">Department of Nuclear, Plasma & Radiological Engineering (NPRE)</font></div><div><font face="comic sans ms, sans-serif">University of Illinois at Urbana-Champaign (UIUC)</font></div><div><font face="comic sans ms, sans-serif">E-mail: <a href="mailto:huq2090@gmail.com" target="_blank">huq2090@gmail.com</a></font></div></div></div></div></div></div></div>