Two thumbs up.

________________________________
From: Derek Gaston
To: [email protected]
Sent: Thu Jan 22 19:40:11 2009
Subject: [Libmesh-devel] Preconditioner Class

Ok... so I have a huge email already written that has a big long justification 
of a Preconditioner Class.  But after writing it I realized that it was long 
winded and no one would really care about the discovery process I went through 
during the last few days.... so I've decided to just skip to the meat.  If you 
want the justification later let me know....

We need a Preconditioner class.  It will allow you to setup a preconditioner 
and use it multiple times with different RHS vectors.

It should inherit from LinearSolver, using the matrix and rhs vector to produce 
the preconditioned vector in solution whenever solve() is called.

Concrete implementations of this class would be:

PetscPreconditioner
MLPreconditioner (from Trilinos)
ShellPreconditioner
etc..

I also wouldn't mind a PetscHyprePreconditioner where both MLPreconditioner and 
it inherit from MultigridPreconditioner.  This would allow simple manipulation 
of common multigrid preconditioner paramters (like smoothing, cycle numbers, 
etc.).  But this can be negotiated.

LinearImplicitSystem should allow for attaching a preconditioner class that 
would then be used by the solver.  LinearImplicitSystem should also allow you 
to specify a Preconditioner _as_ the solver itself... or maybe there should be 
a separate PreconditionerSystem... I can't decide.

Just to give an example of a Preconditioner: the PetscPreconditioner would 
create a PC struct calling PCCreate(), PCSetType() and PCSetOperators() for 
you.  Then when solve is called it would do a PCApply(pc, rhs, solution).  
Looking over ML (in Trilinos) it would have similar behavior.

To sum up the justification of these classes: I have to do a _lot_ of manual 
petsc and libmesh manipulation to setup separate preconditioning systems and 
_efficiently_ solve them.... and a lot of that manipulation is going to have to 
be duplicated for using ML in Trilinos.

So what do you guys think?  If I get the thumbs up I could probably have 
something in the repository by the end of the day tomorrow...

Derek
------------------------------------------------------------------------------
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
[email protected]
https://lists.sourceforge.net/lists/listinfo/libmesh-devel

Reply via email to