<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><br><div><div>On Jun 9, 2012, at 7:51 PM, Jed Brown wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div class="gmail_quote">On Sat, Jun 9, 2012 at 6:43 PM, Mark F. Adams <span dir="ltr"><<a href="mailto:mark.adams@columbia.edu" target="_blank">mark.adams@columbia.edu</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div id=":23b">1) I need a G-S kernel that takes an IS of indices to process and a flag to process them in forward or reverse order. How should I proceed to do this. Should I just clone sor?<br></div></blockquote><div><br>
</div><div>You are going to have several of these index sets? </div></div></blockquote><div><br></div><div>O(20)</div><br><blockquote type="cite"><div class="gmail_quote"><div>You could have a PCSORSetIS(). Probably need to add a MatOp for MatSORIS(). Barry might have other ideas.</div><div> </div><blockquote class="gmail_quote" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0.8ex; border-left-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; padding-left: 1ex; position: static; z-index: auto; ">
<div id=":23b">
2) I don't want to use Richardson iterations for G-S. Should I make a G-S KPS method? I don't want to take a residual in the iterator (KSP) and if symmetric G-S is requested then it should drive this I think. </div>
</blockquote><div><br></div><div>Look at PCApplyRichardson_SOR().</div><div> </div><blockquote class="gmail_quote" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0.8ex; border-left-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; padding-left: 1ex; position: static; z-index: auto; "><div id=":23b"> SOR does two sweeps in each application; I'm not wild about that because a good way to run G-S in a V(1,1) cycle is to do a forward sweep in pre smoothing and a backward sweep in post smoothing.</div>
</blockquote><div><br></div><div>Well, MatSOR() has this flag MatSORType that can specify forward and reverse. You have one PC for the down-smoother and another for the up-smoother, then configure one to be a forward sweep and the other to be reverse.</div>
</div>
</blockquote><br></div><div>I can have two sets of ISs and avoid the reverse flag. I was avoiding that option but now that I think about it it simplifies the control code.</div><div><br></div><div><br></div><br></body></html>