On Fri, Jan 23, 2009 at 12:01 PM, Derek Gaston <fried...@gmail.com> wrote:
> Alright!  Now we have a debate!  Let me see if I can persuade you... and if
> I can't... I'm probably going to code it up anyway to give you a chance to
> see what I mean.
>
> First, let's look at the two different forms of preconditioning (I'll be
> using GMRES the whole time because it's easy to think about)...
>
> Solving: Ax=b
>
> Left Preconditioning: Find P^-1 Ax = P^-1b
> Right Preconditioning: Find A P^-1 P x = b

You're right, I wasn't taking right-preconditioning into account in my
previous email.


> Further, from Axelsson: Iterative Solution Methods (2000) pg. 472 when
> talking about left preconditioning GMRES:
>
> "The statement h:=C^-1 r is to be interpreted as solving the system Ch = r."
>
> Where h = y and C = P.

What you've perfectly described is a Preconditioner object that *uses*
a LinearSolver during its application, not something which "is a"
LinearSolver.  Of course, this doesn't preclude you from also having a
Preconditioner::solve() member, which just applies the preconditioner.
 It doesn't, in my opinion, make it a LinearSolver, in the sense in
which we use that name in Libmesh.


> You say that a Preconditioner doesn't satisfy the "is a" relationship for
> inheritance... but I hope I've shown you that in fact it does.  A
> Preconditioner "is a" LinearSolver that solves a specific Py=q system... the
> solution of which is used internally by another LinearSolver.

Perhaps, but in LibMesh a LinearSolver isn't a just thing that "solves
a specific Py=q system," although it does do that.  It's an abstract
interface to 3rd-party concrete linear algebra libraries as I
mentioned before.  So, it's a little unfortunate that we have already
taken the name that you would like to use but I still argue strongly
against adding your proposed Preconditioner to this hierarchy.  We
might need to have a discussion about expanding the meaning of
LinearSolver in libmesh, but I think the current system is elegant and
relatively simple to understand for new users.

-- 
John

------------------------------------------------------------------------------
This SF.net email is sponsored by:
SourcForge Community
SourceForge wants to tell your story.
http://p.sf.net/sfu/sf-spreadtheword
_______________________________________________
Libmesh-devel mailing list
Libmesh-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/libmesh-devel

Reply via email to