Actual source code: ex5.c
2: static char help[] = "Demonstrates using ISLocalToGlobalMappings with block size.\n\n";
4: #include <petscis.h>
5: #include <petscviewer.h>
7: int main(int argc,char **argv)
8: {
9: PetscInt i,n = 4,indices[] = {0,3,9,12},m = 2,input[] = {0,2};
10: PetscInt output[2],inglobals[13],outlocals[13];
11: ISLocalToGlobalMapping mapping;
13: PetscInitialize(&argc,&argv,(char*)0,help);
15: /*
16: Create a local to global mapping. Each processor independently
17: creates a mapping
18: */
19: PetscIntView(n,indices,PETSC_VIEWER_STDOUT_WORLD);
20: ISLocalToGlobalMappingCreate(PETSC_COMM_WORLD,2,n,indices,PETSC_COPY_VALUES,&mapping);
22: /*
23: Map a set of local indices to their global values
24: */
25: PetscIntView(m,input,PETSC_VIEWER_STDOUT_WORLD);
26: ISLocalToGlobalMappingApply(mapping,m,input,output);
27: PetscIntView(m,output,PETSC_VIEWER_STDOUT_WORLD);
29: /*
30: Map some global indices to local, retaining the ones without a local index by -1
31: */
32: for (i=0; i<13; i++) inglobals[i] = i;
33: PetscIntView(13,inglobals,PETSC_VIEWER_STDOUT_WORLD);
34: ISGlobalToLocalMappingApply(mapping,IS_GTOLM_MASK,13,inglobals,NULL,outlocals);
35: PetscIntView(13,outlocals,PETSC_VIEWER_STDOUT_WORLD);
37: /*
38: Map some block global indices to local, dropping the ones without a local index.
39: */
40: PetscIntView(13,inglobals,PETSC_VIEWER_STDOUT_WORLD);
41: ISGlobalToLocalMappingApplyBlock(mapping,IS_GTOLM_DROP,13,inglobals,&m,outlocals);
42: PetscIntView(m,outlocals,PETSC_VIEWER_STDOUT_WORLD);
44: /*
45: Free the space used by the local to global mapping
46: */
47: ISLocalToGlobalMappingDestroy(&mapping);
49: PetscFinalize();
50: return 0;
51: }
53: /*TEST
55: test:
57: TEST*/