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
Libmesh-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/libmesh-devel