[Dune] Setting and optimising AMG parameters in ISTL

Bath Uni e.mueller at bath.ac.uk
Wed Jul 25 00:11:53 CEST 2012


Dear dune-list, dear Peter and Markus,

I'm trying to optimise the ISTL-AMG solver for the specific problem I'm solving. It is a 3d problem with a strong anisotropy in the vertical direction, the equation is

- omega^2 (\laplace_{2d} + \lambda^2 d^2/dz^2) u(x,y,z) + u(x,y,z) = RHS, where x,y,z \in [0,1]^3

with omega^2= 6.702E-4, lambda^2 = O(10^3-10^4).

omega^2 decreases with the square of the grid size, i.e. the relative size of the second order term decreases relative to the constant terms as I increase the horizontal resolution, and I always keep the vertical size fixed.

So far I've tried the default settings for AMG by using the ISTLBackend_CG_AMG_SSOR, and the time per iteration scales very well up to 65536 cores (in my weak scaling tests, where I increase the horizontal resolution, such that the local problem size stays constant), but the number of iterations is quite large (42 on 16 cores and 45 on 1024 cores). I also noticed that the number of iterations depends on the boundary conditions in the vertical direction. I've tried homogenous Neumann BCs at the top and the bottom (this gives me the 42 and 45 iterations quoted above) as well as homogenous Dirichlet BCs at the bottom and homogenous Neumann at the top (then I get 18 iterations on 16 cores and 16 iterations on 1024 cores - it's not difficult to see that the unpreconditioned problem has a smaller condition number for these boundary conditions). In the horizontal direction I always use homogenous Dirichlet BCs.

I presume that I'm simply not using the optimal AMG parameters, so I would like to try to optimise them.
What are the best AMG parameters to use in this case and what is the easiest way of passing them to the AMG solver, if I'm using the ISTL backend? I noticed that there is a function setDefaultValuesAnisotropic in dune/istl/paamg/parameters.hh. Can I use this to set optimal default parameters for the anisotropic case?

Markus, I've seen that you have solved an anisotropic problem of the form

-\nabla (K \nabla u(x)) = 1 with K_{ij} = {10^{-6}} for i=j=0 and K_{ij} = 1 for i=j>0, K_{ij}=0 otherwise

in your PhD thesis, but could not figure out which parameters you used. The anisotropy is the other way round as in my case, but maybe the parameters you used are still relevant for what I'm doing.

Thank you very much for your help,

Eike



More information about the Dune mailing list