xref: /petsc/src/vec/is/ao/tests/ex7.c (revision 030f984af8d8bb4c203755d35bded3c05b3d83ce)
1 
2 static char help[] = "Demonstrates constructing an application ordering.\n\n";
3 
4 #include <petscao.h>
5 #include <petscviewer.h>
6 
7 int main(int argc,char **argv)
8 {
9   PetscInt       n = 5;
10   PetscErrorCode ierr;
11   PetscMPIInt    rank,size;
12   IS             ispetsc,isapp;
13   AO             ao;
14 
15   ierr = PetscInitialize(&argc,&argv,(char*)0,help);if (ierr) return ierr;
16   ierr = PetscOptionsGetInt(NULL,NULL,"-n",&n,NULL);CHKERRQ(ierr);
17   ierr = MPI_Comm_rank(PETSC_COMM_WORLD,&rank);CHKERRMPI(ierr);
18   ierr = MPI_Comm_size(PETSC_COMM_WORLD,&size);CHKERRMPI(ierr);
19 
20   /* create the index sets */
21   ierr = ISCreateStride(PETSC_COMM_WORLD,n,rank,size,&ispetsc);CHKERRQ(ierr);
22   ierr = ISCreateStride(PETSC_COMM_WORLD,n,n*rank,1,&isapp);CHKERRQ(ierr);
23 
24   /* create the application ordering */
25   ierr = AOCreateBasicIS(isapp,ispetsc,&ao);CHKERRQ(ierr);
26 
27   ierr = AOView(ao,PETSC_VIEWER_STDOUT_WORLD);CHKERRQ(ierr);
28 
29   ierr = ISView(ispetsc,PETSC_VIEWER_STDOUT_WORLD);CHKERRQ(ierr);
30   ierr = ISView(isapp,PETSC_VIEWER_STDOUT_WORLD);CHKERRQ(ierr);
31   ierr = AOPetscToApplicationIS(ao,ispetsc);CHKERRQ(ierr);
32   ierr = ISView(isapp,PETSC_VIEWER_STDOUT_WORLD);CHKERRQ(ierr);
33   ierr = ISView(ispetsc,PETSC_VIEWER_STDOUT_WORLD);CHKERRQ(ierr);
34 
35   ierr = ISDestroy(&ispetsc);CHKERRQ(ierr);
36   ierr = ISDestroy(&isapp);CHKERRQ(ierr);
37 
38   ierr = AODestroy(&ao);CHKERRQ(ierr);
39   ierr = PetscFinalize();
40   return ierr;
41 }
42 
43 /*TEST
44 
45    test:
46       nsize: 2
47 
48 TEST*/
49