xref: /petsc/src/vec/is/ao/tests/ex7.c (revision c4762a1b19cd2af06abeed90e8f9d34fb975dd94)
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);CHKERRQ(ierr);
18   ierr = MPI_Comm_size(PETSC_COMM_WORLD,&size);CHKERRQ(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 
28   ierr = AOView(ao,PETSC_VIEWER_STDOUT_WORLD);CHKERRQ(ierr);
29 
30   ierr = ISView(ispetsc,PETSC_VIEWER_STDOUT_WORLD);CHKERRQ(ierr);
31   ierr = ISView(isapp,PETSC_VIEWER_STDOUT_WORLD);CHKERRQ(ierr);
32   ierr = AOPetscToApplicationIS(ao,ispetsc);CHKERRQ(ierr);
33   ierr = ISView(isapp,PETSC_VIEWER_STDOUT_WORLD);CHKERRQ(ierr);
34   ierr = ISView(ispetsc,PETSC_VIEWER_STDOUT_WORLD);CHKERRQ(ierr);
35 
36 
37   ierr = ISDestroy(&ispetsc);CHKERRQ(ierr);
38   ierr = ISDestroy(&isapp);CHKERRQ(ierr);
39 
40   ierr = AODestroy(&ao);CHKERRQ(ierr);
41   ierr = PetscFinalize();
42   return ierr;
43 }
44 
45 /*TEST
46 
47    test:
48       nsize: 2
49 
50 TEST*/
51