<div dir="ltr"><div>Patrick --</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"><span style="font-size:12.8px">Would you have any objection to this sort of thing being on the man<br></span><span style="font-size:12.8px">pages (and/or in tutorials), instead of in the manual? Especially with<br></span><span style="font-size:12.8px">the current state of affairs, with the  man pages google-able and the<br></span><span style="font-size:12.8px">manual not, the man pages might be a better place for these specifics ...</span> </blockquote><div><br></div><div>Yes, better the relevant man pages than nowhere.  But the main idea of how classical iterations are factored into KSP and PC is pretty pervasive as a way of understanding PETSc smoothers and block methods, and so I think (*) should also be in the PDF.</div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><span style="font-size:12.8px">... - hopefully it's clear to readers of the manual that they can click<br></span><span style="font-size:12.8px">links to be taken to man pages (if they have web access), which can<br></span><span style="font-size:12.8px">allow for finer details without interrupting the flow of the manual<br></span><span style="font-size:12.8px">too much or making it even longer.</span></blockquote><div><span style="font-size:12.8px"><br></span></div><div><span style="font-size:12.8px">Good point.</span></div><div><span style="font-size:12.8px"><br></span></div><div>Ed</div><div><br></div><div> </div></div><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Jan 20, 2017 at 12:56 AM, Patrick Sanan <span dir="ltr"><<a href="mailto:patrick.sanan@gmail.com" target="_blank">patrick.sanan@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">On Fri, Jan 20, 2017 at 2:13 AM, Ed Bueler <<a href="mailto:elbueler@alaska.edu">elbueler@alaska.edu</a>> wrote:<br>
> Dear PETSc --<br>
><br>
> In my humble opinion, the answers to the following rather basic questions<br>
> are missing from the petsc users manual.  At least in part, I am not certain<br>
> what the answers are.<br>
><br>
><br>
> Question 1:   What formula does the preconditioned Richardson iteration<br>
> (-ksp_type richardson -pc_type X) satisfy and where does the scale<br>
> (-ksp_richardson_scale alpha) go?<br>
><br>
> Answer?:  In the left-preconditioned form I would guess it is<br>
><br>
> (*)         x_{k+1} = x_k + alpha M_L^{-1} (b - A x_k),<br>
><br>
> where M_L is the matrix implied by -pc_type X.  If so this makes option<br>
> combination<br>
><br>
> -ksp_type richardson -pc_type jacobi [-ksp_richardson_scale 1]<br>
><br>
> into the classical Jacobi iteration<br>
><br>
> x_{k+1} = x_k + D^{-1} (b - A x_k) = D^{-1} (b - (L+U)x_k)<br>
><br>
> where A = D+L+U and D is the diagonal of A.<br>
><br>
> I am pretty sure this answer is right, but equation (*) should probably be<br>
> somewhere in the manual!<br>
</span>It is at least on the KSPRICHARDSON man page (which I have added to my<br>
list of things to eventually clean up), albeit without explicit<br>
mention of the left preconditioning.<br>
<span class="">><br>
><br>
> Question 2.  What formula is the (non-symmetric) SOR satisfying, and where<br>
> do the constants -pc_sor_omega and -pc_sor_diagonal_shift delta go?<br>
><br>
> Answer?:  My understanding is first that the classical Jacobi, Gauss-Seidel,<br>
> and SOR iterations are all regarded by PETSc developers as<br>
> left-preconditioned Richardson iterations, so names "jacobi" and "sor"<br>
> describe PC objects and these classical iterations are all KSP type<br>
> "richardson".  That is, they are all instances of (*).<br>
><br>
> (RANT:  There is no clear statement of this excellent philosophy in the<br>
> users manual, and it would help a lot of students of PETSc!  While some<br>
> references share it, reading standard literature, including relevant wiki<br>
> pages, is not healthful on this topic.  Because the literature does not<br>
> necessarily parallel PETSc thinking, it requires constant mental<br>
> translation.  This is bad when it comes to setting parameters at runtime!)<br>
</span>This would be very good for one of the proposed introductory<br>
tutorials, about KSP/PC, helping people translate algorithms into<br>
PETSc options. I've added some notes on this to my todo list as well.<br>
<span class="">><br>
> Supposing the above philosophy, and that A = D+L+U with the usual meanings,<br>
> then I guess SOR is<br>
><br>
> (**)    x_{k+1} = x_k + alpha (omega^{-1} (D+delta) + L)^{-1} (b - A x_k),<br>
><br>
> In case alpha=1, omega=1, delta=0 then (**) becomes Gauss-Seidel:<br>
><br>
> -ksp_type richardson -pc_type sor [-ksp_richardson_scale 1 -pc_sor_omega 1<br>
> -pc_sor_diagonal_shift 0]<br>
><br>
> Especially because it involves three user-controlled constants, equation<br>
> (**) could usefully be stated somewhere in the manual ... supposing it is<br>
> correct.<br>
<br>
</span>Would you have any objection to this sort of thing being on the man<br>
pages (and/or in tutorials), instead of in the manual? Especially with<br>
the current state of affairs, with the  man pages google-able and the<br>
manual not, the man pages might be a better place for these specifics<br>
- hopefully it's clear to readers of the manual that they can click<br>
links to be taken to man pages (if they have web access), which can<br>
allow for finer details without interrupting the flow of the manual<br>
too much or making it even longer.<br>
<div class="HOEnZb"><div class="h5">><br>
><br>
> Question 3.  What is the probability that a PETSc developer will address the<br>
> above two questions by telling me that classical iterations are lame?<br>
><br>
> Answer:  Not the point!  These iterations are used blockwise (e.g. ASM) and<br>
> as smoothers in many proper PETSc applications.  Clarity is helpful!<br>
><br>
><br>
> Thanks for the great tool, as usual!<br>
><br>
> Ed<br>
><br>
><br>
> --<br>
> Ed Bueler<br>
> Dept of Math and Stat and Geophysical Institute<br>
> University of Alaska Fairbanks<br>
> Fairbanks, AK 99775-6660<br>
> 301C Chapman and 410D Elvey<br>
> <a href="tel:907%20474-7693" value="+19074747693">907 474-7693</a> and <a href="tel:907%20474-7199" value="+19074747199">907 474-7199</a>  (fax <a href="tel:907%20474-5394" value="+19074745394">907 474-5394</a>)<br>
</div></div></blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature" data-smartmail="gmail_signature">Ed Bueler<br>Dept of Math and Stat and Geophysical Institute<br>University of Alaska Fairbanks<br>Fairbanks, AK 99775-6660<br>301C Chapman and 410D Elvey<br>907 474-7693 and 907 474-7199  (fax 907 474-5394)</div>
</div>