On Feb 6, 2009, at 4:29 PM, Roy Stogner wrote:

> Not necessarily separate classes, just the ability to have separate
> classes.

Agreed.

> AMG is still pretty black-box (that being the whole point) and can
> probably just be a type parameter to whatever numerics packages have
> that interface - but geometric MG would require enough libMesh code
> that we might want to do it as a separate class.

The thing about AMG (and indeed MG as well) is that it has a LOT more  
parameters (and a lot of specific parameters) compared to "normal"  
preconditioners.  For instance, here's the list for BoomerAMG:

-pc_hypre_boomeramg_cycle_type
-pc_hypre_boomeramg_max_levels
-pc_hypre_boomeramg_max_iter
-pc_hypre_boomeramg_tol
-pc_hypre_boomeramg_truncfactor
-pc_hypre_boomeramg_P_max
-pc_hypre_boomeramg_agg_nl
-pc_hypre_boomeramg_agg_num_paths
-pc_hypre_boomeramg_strong_threshold
-pc_hypre_boomeramg_max_row_sum
-pc_hypre_boomeramg_grid_sweeps_all
-pc_hypre_boomeramg_grid_sweeps_down
-pc_hypre_boomeramg_grid_sweeps_up
-pc_hypre_boomeramg_grid_sweeps_coarse
-pc_hypre_boomeramg_relax_type_all
-pc_hypre_boomeramg_relax_type_down
-pc_hypre_boomeramg_relax_type_up
-pc_hypre_boomeramg_relax_type_coarse
-pc_hypre_boomeramg_relax_weight_all
-pc_hypre_boomeramg_relax_weight_level
-pc_hypre_boomeramg_outer_relax_weight_all
-pc_hypre_boomeramg_outer_relax_weight_level
-pc_hypre_boomeramg_no_CF
-pc_hypre_boomeramg_no_CF
-pc_hypre_boomeramg_measure_type
-pc_hypre_boomeramg_coarsen_type
-pc_hypre_boomeramg_interp_type
-pc_hypre_boomeramg_print_statistics
-pc_hypre_boomeramg_print_statistics
-pc_hypre_boomeramg_nodal_coarsen
-pc_hypre_boomeramg_nodal_relaxation
-pc_hypre_boomeramg_nodal_relaxation

And these are just the ones you can get to from the command-line.   
There are even more you can set programatically.  Now, exposing all of  
these individually would be a pain (and unnecessary... if you really  
need _all_ of them then you should just get the PC object yourself and  
set the necessary options).  But, exposing the commonly used one  
through a nice common AMGPreconditioner interface (that would also be  
shared with ML from Trilinos) might be nice.

That said: BoomerAMG is currently handled by the PetscPreconditioner  
class (when type is set to AMG_PRECOND)... and I expect it to stay  
that way for a while.

>> Agreed... my current version of LinearSolver::set_preconditioner()
>
> You mean LinearSolver::set_preconditioner_type(), right?

Indeed.

> Likewise.  That may depend on our respective definitions of
> "negligible", though.

Heh... I'll post data on this issue as I come up with it....

Thanks for all of the thoughts!  I think this is going to grow into a  
nice capability.  Just thinking about the MGPreconditioner class makes  
me excited in my pantal region! ;-)

Derek

------------------------------------------------------------------------------
Create and Deploy Rich Internet Apps outside the browser with Adobe(R)AIR(TM)
software. With Adobe AIR, Ajax developers can use existing skills and code to
build responsive, highly engaging applications that combine the power of local
resources and data with the reach of the web. Download the Adobe AIR SDK and
Ajax docs to start building applications today-http://p.sf.net/sfu/adobe-com
_______________________________________________
Libmesh-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/libmesh-devel

Reply via email to