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
