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 <[email protected]> > 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
