Actual source code: ex4.c

petsc-3.9.4 2018-09-11
Report Typos and Errors

  2: static char help[] = "Demonstrates using ISLocalToGlobalMappings.\n\n";

  4: /*T
  5:     Concepts: local to global mappings
  6:     Concepts: global to local mappings

  8:     Description:  Creates an index set based on blocks of integers. Views that index set
  9:     and then destroys it.
 10: T*/



 14:  #include <petscis.h>
 15:  #include <petscviewer.h>

 17: int main(int argc,char **argv)
 18: {
 19:   PetscErrorCode         ierr;
 20:   PetscInt               i,n = 4,indices[] = {0,3,9,12},m = 2,input[] = {0,2};
 21:   PetscInt               output[2],inglobals[13],outlocals[13];
 22:   ISLocalToGlobalMapping mapping;

 24:   PetscInitialize(&argc,&argv,(char*)0,help);if (ierr) return ierr;

 26:   /*
 27:       Create a local to global mapping. Each processor independently
 28:      creates a mapping
 29:   */
 30:   ISLocalToGlobalMappingCreate(PETSC_COMM_WORLD,1,n,indices,PETSC_COPY_VALUES,&mapping);
 31:   ISLocalToGlobalMappingSetFromOptions(mapping);

 33:   /*
 34:      Map a set of local indices to their global values
 35:   */
 36:   ISLocalToGlobalMappingApply(mapping,m,input,output);
 37:   PetscIntView(m,output,PETSC_VIEWER_STDOUT_WORLD);

 39:   /*
 40:      Map some global indices to local, retaining the ones without a local index by -1
 41:   */
 42:   for (i=0; i<13; i++) inglobals[i] = i;
 43:   ISGlobalToLocalMappingApply(mapping,IS_GTOLM_MASK,13,inglobals,NULL,outlocals);
 44:   PetscIntView(13,outlocals,PETSC_VIEWER_STDOUT_WORLD);

 46:   /*
 47:      Map some global indices to local, dropping the ones without a local index.
 48:   */
 49:   ISGlobalToLocalMappingApply(mapping,IS_GTOLM_DROP,13,inglobals,&m,outlocals);
 50:   PetscIntView(m,outlocals,PETSC_VIEWER_STDOUT_WORLD);

 52:   ISLocalToGlobalMappingView(mapping,PETSC_VIEWER_STDOUT_WORLD);
 53:   /*
 54:      Free the space used by the local to global mapping
 55:   */
 56:   ISLocalToGlobalMappingDestroy(&mapping);


 59:   PetscFinalize();
 60:   return ierr;
 61: }

 63: /*TEST

 65:    test:

 67:    test:
 68:       suffix: 2
 69:       args: -islocaltoglobalmapping_type hash

 71: TEST*/