← Back to team overview

dolfin team mailing list archive

Re: matrix action

 

On ma., 2009-04-06 at 17:13 +0200, Anders Logg wrote:
> On Mon, Apr 06, 2009 at 10:01:24AM -0500, Robert Kirby wrote:
> > I see two reasons why to do symmetric BC if you can.
> > 1.) If CG is applicable, it will almost always work better than GMRES, both in
> > terms of convergence rate and memory usage (no Hessenberg matrix).  A simple
> > way to check this without any substantial code development is to do Nitsche BC
> > for Poisson and compare CG and GMRES
> 
> Symmetric applications of BCs is already in place:
> 
>   A, b = assemble_system(a, L, bc)
> 
> The dofs are kept (not eliminated) but the BC is applied to ensure
> that A remains symmetric (if symmetric).
> 
> > 2.) In 2d, say for Poisson, it's not a big
> > deal -- a simple argument shows the diagonal terms are all O(1), so you don't
> > introduce any weird scaling by setting the diagonal to 1, zeroing the row, etc.
> >  In either 1d or 3d, however, the diagonal terms are not O(1).  This can affect
> > the spectrum of the matrix and hence the convergence properties of the method.
> 
> We could always scale what we insert on the diagonal (in both LHS and
> RHS) by looking at something like the average of the diagonal entries.
> 
> I'm not opposed to eliminating dofs. It's just what we have now works
> and if we should spend time implementing something else it must be
> worth the effort.
> 
> -- 
> Anders
> 

The reason that I have not bothered to scale the diagonal is that any
preconditioner will figure out the scaling. 

And, as Anders, I don't see the great benefit of eliminating the bc, but
if anyone wants to implement it, it is fine. 

In the matrix action operator, the bc could be enforced after the
action. 

Kent



Follow ups

References