[petsc-users] PC HYPRE BoomerAMG options for nodal

Barry Smith bsmith at mcs.anl.gov
Tue Feb 14 19:48:15 CST 2017


  Ahh, thanks for the explanation. What a nutso API: way to general, they should just support interlaced and non-interlaced.

  Anyways we strongly recommend using the interlaced version; for most calculations it gives much better locality for cache lines and cache. We always use interlaced. Any particular reason you use non-interlaced?

  Barry

> On Feb 14, 2017, at 7:17 PM, Bernardo Rocha <bernardomartinsrocha at gmail.com> wrote:
> 
> Thanks a lot for the reply.
> 
> ​From my understanding and specifically for my problem I would have to use the AMGSetDofFunc as follows:​
> 
> ​nsyseq = 3;​
> for (i=0; i<nsyseq; i++)
> ​    ​for (k=0; k<​N​; k++)​ // N: number of nodes​
>     {
>     ​    ​eqnIndex[i*​N​+k] = i;
>     }
> HYPRE_BoomerAMGSetDofFunc(preconditioner, eqnIndex);​
> 
> For a system of 3 PDEs (e.g. linear elasticity in 3D​) the default behaviour of the nodal coarsening in BoomerAMG, considers an array that is filled with
> 
> eqnIndex = ​0 1 2 0 1 2 0 1 2....0 1 2
> 
>  > HYPRE_BoomerAMGSetDofFunc
> 
>    I could not find an indication of that this is suppose to be setting; it is mentioned in the users manual but I don't know what it means. It looks like it takes an integer array but I don't even know how long that array is.
> 
>    If you figure out what it means and can add support for it we'll take it as a pull request.
> 
> ​​OK Barry, I will try to specify the block size of the matrix.
> But I'm not sure if the block size would be 3 or N (number of nodes).
> This is my ordering of the displacements: [ux1, ux2, ..., uxN, uy1, uy2,...uyN, uz1, uz2, ..., uzN]
>  
> > HYPRE_BoomerAMGSetNumFunctions
> 
>    Set the block size of the matrix; this information is then transferred automatically to hypre.  Note that you can set a block size even for AIJ matrices.
>> ​Best regards,
> Bernardo​



More information about the petsc-users mailing list