Dear Barry, thanks, I managed to get that working for HYPRE_BoomerAMGSetSmoothType(), but I need to set more options to control the different smoothers in detail. I will try to get the changes into PETSc once I’m done.
Eike > On 6 May 2015, at 13:27, Barry Smith <[email protected]> wrote: > > Eike, > > You'll need to edit src/ksp/pc/impls/hypre/hypre.c and add an option to set > this (where you see all the other BoomerAMG options). Then run make in > the root PETSc directory. > > If you do this in the development copy of PETSc and make a pull request > (see https://bitbucket.org/petsc/petsc/wiki/Home Contributing to PETSc) then > all future users can benefit from your additions. > > Barry > >> On May 6, 2015, at 3:14 AM, Eike Mueller <[email protected]> wrote: >> >> Dear PETSc, >> >> I’m trying to use hypre’s BoomerAMG preconditioner through PETSc. However, I >> would like to use a non-standard smoother, namely an incomplete LU >> factorisation, which is implemented in hypre’s Euclid (that’s because the >> problem is highly anisotropic, and GAMG worked very weill with ILU >> smoother). In native hypre I can set this with >> HYPRE_BoomerAMGSetSmoothType(). However, I can’t see how I can pass this >> through the PETSc interface, since the only boomeramg options I can set are >> listed below. As far as I can see they allow me to change the pointwise >> smoother via HYPRE_BoomerAMGSetRelaxType(). >> >> Does anyone have any advice on what I can do to use Euclid as a smoother via >> setting the correct PETSc options? >> >> Thank you very much, >> >> Eike >> >> eikemueller@138-38-173-198 $ ./ex6 -f -f helmholtz-sphere.dat -ksp_type cg >> -ksp_convergence_test skip -ksp_max_it 2 -ksp_monitor -table -pc_hypre_type >> boomeramg -pc_type hypre -log_summary -ksp_view -help | grep boomeramg >> -pc_hypre_type <boomeramg> (choose one of) pilut parasails boomeramg ams >> (PCHYPRESetType) >> -pc_hypre_boomeramg_cycle_type <V> (choose one of) V W (None) >> -pc_hypre_boomeramg_max_levels <25>: Number of levels (of grids) allowed >> (None) >> -pc_hypre_boomeramg_max_iter <1>: Maximum iterations used PER hypre call >> (None) >> -pc_hypre_boomeramg_tol <0>: Convergence tolerance PER hypre call (0.0 = >> use a fixed number of iterations) (None) >> -pc_hypre_boomeramg_truncfactor <0>: Truncation factor for interpolation >> (0=no truncation) (None) >> -pc_hypre_boomeramg_P_max <0>: Max elements per row for interpolation >> operator (0=unlimited) (None) >> -pc_hypre_boomeramg_agg_nl <0>: Number of levels of aggressive coarsening >> (None) >> -pc_hypre_boomeramg_agg_num_paths <1>: Number of paths for aggressive >> coarsening (None) >> -pc_hypre_boomeramg_strong_threshold <0.25>: Threshold for being strongly >> connected (None) >> -pc_hypre_boomeramg_max_row_sum <0.9>: Maximum row sum (None) >> -pc_hypre_boomeramg_grid_sweeps_all <1>: Number of sweeps for the up and >> down grid levels (None) >> -pc_hypre_boomeramg_grid_sweeps_down <1>: Number of sweeps for the down >> cycles (None) >> -pc_hypre_boomeramg_grid_sweeps_up <1>: Number of sweeps for the up cycles >> (None) >> -pc_hypre_boomeramg_grid_sweeps_coarse <1>: Number of sweeps for the coarse >> level (None) >> -pc_hypre_boomeramg_relax_type_all <symmetric-SOR/Jacobi> (choose one of) >> Jacobi sequential-Gauss-Seidel seqboundary-Gauss-Seidel SOR/Jacobi >> backward-SOR/Jacobi symmetric-SOR/Jacobi l1scaled-SOR/Jacobi >> Gaussian-elimination CG Chebyshev FCF-Jacobi l1scaled-Jacobi (None) >> -pc_hypre_boomeramg_relax_type_down <symmetric-SOR/Jacobi> (choose one of) >> Jacobi sequential-Gauss-Seidel seqboundary-Gauss-Seidel SOR/Jacobi >> backward-SOR/Jacobi symmetric-SOR/Jacobi l1scaled-SOR/Jacobi >> Gaussian-elimination CG Chebyshev FCF-Jacobi l1scaled-Jacobi (None) >> -pc_hypre_boomeramg_relax_type_up <symmetric-SOR/Jacobi> (choose one of) >> Jacobi sequential-Gauss-Seidel seqboundary-Gauss-Seidel SOR/Jacobi >> backward-SOR/Jacobi symmetric-SOR/Jacobi l1scaled-SOR/Jacobi >> Gaussian-elimination CG Chebyshev FCF-Jacobi l1scaled-Jacobi (None) >> -pc_hypre_boomeramg_relax_type_coarse <Gaussian-elimination> (choose one >> of) Jacobi sequential-Gauss-Seidel seqboundary-Gauss-Seidel SOR/Jacobi >> backward-SOR/Jacobi symmetric-SOR/Jacobi l1scaled-SOR/Jacobi >> Gaussian-elimination CG Chebyshev FCF-Jacobi l1scaled-Jacobi (None) >> -pc_hypre_boomeramg_relax_weight_all <1>: Relaxation weight for all levels >> (0 = hypre estimates, -k = determined with k CG steps) (None) >> -pc_hypre_boomeramg_relax_weight_level <1>: Set the relaxation weight for a >> particular level (weight,level) (None) >> -pc_hypre_boomeramg_outer_relax_weight_all <1>: Outer relaxation weight for >> all levels (-k = determined with k CG steps) (None) >> -pc_hypre_boomeramg_outer_relax_weight_level <1>: Set the outer relaxation >> weight for a particular level (weight,level) (None) >> -pc_hypre_boomeramg_no_CF: <FALSE> Do not use CF-relaxation (None) >> -pc_hypre_boomeramg_measure_type <local> (choose one of) local global (None) >> -pc_hypre_boomeramg_coarsen_type <Falgout> (choose one of) CLJP >> Ruge-Stueben modifiedRuge-Stueben Falgout PMIS HMIS (None) >> -pc_hypre_boomeramg_interp_type <classical> (choose one of) classical >> direct multipass multipass-wts ext+i ext+i-cc standard standard-wts FF FF1 >> (None) >> -pc_hypre_boomeramg_print_statistics: Print statistics (None) >> -pc_hypre_boomeramg_print_debug: Print debug information (None) >> -pc_hypre_boomeramg_nodal_coarsen: <FALSE> HYPRE_BoomerAMGSetNodal() (None) >> -pc_hypre_boomeramg_nodal_relaxation: <FALSE> Nodal relaxation via Schwarz >> (None) >> -pc_hypre_type boomeramg >> >> -- >> >> Dr Eike Hermann Mueller >> Lecturer in Scientific Computing >> >> Department of Mathematical Sciences >> University of Bath >> Bath BA2 7AY, United Kingdom >> >> +44 1225 38 6241 >> [email protected] >> http://people.bath.ac.uk/em459/ >> >> >> >> >> >
