On Dec 23, 2011, at 2:17 PM, Jed Brown wrote:

> On Fri, Dec 23, 2011 at 13:11, Mark F. Adams <mark.adams at columbia.edu> 
> wrote: 
>> Sure, but what does the user need to provide? How much code can we reuse 
>> between the matrix-based implementation and the nonlinear implementation?
> 
> You just have to provide a method like 
> 
> int applyGS( Mat mat, Vec lhs, Vec rhs, IS eqs, Bool reverse)
> 
> that applies G-S to the local rows in "eqs" and processes them in reverse 
> order if "reverse" is true.  Reverse is just to symmetrize the operator.  
> Since this is probably best used for non-symetric operators we could simplify 
> the algorithm a bit and get rid of this ...
> 
> Sure, so this update lhs for some equations, but there is no Mat (because 
> it's nonlinear). To create the ISs, we'll have to specify the connections 
> between nodes (could use a matrix to denote that).

Ah yes, by "mat" I'm assuming a shell in this case.  The construction of these 
ISs needs a graph -- its not magic -- its a parallel multiplicative method.

Note, with one vertex per processor this algorithm degenerates to standard 
coloring G-S, so you can think of it in that way.  If you did dumb coloring 
then you would need to use this new primitive on each color, and you need a 
graph to do the coloring.

Mark

-------------- next part --------------
An HTML attachment was scrubbed...
URL: 
<http://lists.mcs.anl.gov/pipermail/petsc-dev/attachments/20111223/ca22fb91/attachment.html>

Reply via email to