next up previous contents
Next: Programming model Up: Application structure Previous: Application structure   Contents

User-defined index mappings

PSBLAS supports user-defined global to local index mappings, subject to the constraints outlined in sec. 2.3:

  1. The set of indices owned locally must be mapped to the set $1\dots n_{\hbox{row}_i}$;
  2. The set of halo points must be mapped to the set $n_{\hbox{row}_i}+1\dots n_{\hbox{col}_i}$;
but otherwise the mapping is arbitrary. The user application is responsible to ensure consistency of this mapping; some errors may be catched by the library, but this is not guaranteed. The application structure to support this usage is as follows:
  1. Initialize index space with psb_cdall(ictx,desc,info,vl=vl,lidx=lidx) passing the vectors vl(:) containing the set of global indices owned by the current process and lidx(:) containing the corresponding local indices;
  2. Add the halo points ja(:) and their associated local indices lidx(:) with a(some) call(s) to psb_cdins(nz,ja,desc,info,lidx=lidx);
  3. Assemble the descriptor with psb_cdasb;
  4. Build the sparse matrices and vectors, optionally making use in psb_spins and psb_geins of the local argument specifying that the indices in ia, ja and irw, respectively, are already local indices.