I'm seeing an issue because I previously built my own l2g IS, whereas now I'm relying on the IS created by VecCreateGhostBlock.
For a vector with 8 entries and block size 2 (i.e, 4 blocks), and arranged: P0: Owns blocks: 0 Ghost blocks: 1, 2 P1: Owns blocks: 1, 2, 3 Ghost blocks: None I expected the local-to-global IS created by VecCreateGhostBlock on proc 1 to be: 0 1 1 2 2 3 But I get 0 2 1 3 2 4 The below code illustrates (run with 2 procs). I'm using the dev master branch (updated just now). Am I doing something wrong? Garth #include <petsc.h> static char help[] = "Test ghost vec"; int main(int argc, char **argv) { PetscInitialize(&argc, &argv, (char *)0, help); PetscMPIInt rank; MPI_Comm_rank(PETSC_COMM_WORLD, &rank); Vec x; if (rank == 0) { PetscInt ghst[2] = {1, 2}; VecCreateGhostBlock(PETSC_COMM_WORLD, 2, 2, PETSC_DECIDE, 2, ghst, &x); } else if (rank == 1) { VecCreateGhostBlock(PETSC_COMM_WORLD, 2, 6, PETSC_DECIDE, 0, NULL, &x); ISLocalToGlobalMapping mapping; VecGetLocalToGlobalMapping(x, &mapping); ISLocalToGlobalMappingView(mapping, PETSC_VIEWER_STDOUT_SELF); } return 0; }