[petsc-dev] Parallel Gauss - Seidel

Barry Smith bsmith at mcs.anl.gov
Sat Jun 9 19:45:31 CDT 2012

On Jun 9, 2012, at 6:51 PM, Jed Brown wrote:

> On Sat, Jun 9, 2012 at 6:43 PM, Mark F. Adams <mark.adams at columbia.edu> wrote:
> 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?
> You are going to have several of these index sets? You could have a PCSORSetIS(). Probably need to add a MatOp for MatSORIS(). Barry might have other ideas.

   PCSORSetIS() would then go down to MatSORSetIS() and then the call to MatSOR() would using the IS ordering if provided, otherwise use the default natural ordering? 

    I don't see  a need to add a MatSORIS(). 


> 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.
> Look at PCApplyRichardson_SOR().
>  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.
> 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.

More information about the petsc-dev mailing list