xref: /petsc/src/vec/is/ao/tests/ex7.c (revision 40badf4fbc550ac1f60bd080eaff6de6d55b946d)
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   CHKERRQ(PetscOptionsGetInt(NULL,NULL,"-n",&n,NULL));
17   CHKERRMPI(MPI_Comm_rank(PETSC_COMM_WORLD,&rank));
18   CHKERRMPI(MPI_Comm_size(PETSC_COMM_WORLD,&size));
19 
20   /* create the index sets */
21   CHKERRQ(ISCreateStride(PETSC_COMM_WORLD,n,rank,size,&ispetsc));
22   CHKERRQ(ISCreateStride(PETSC_COMM_WORLD,n,n*rank,1,&isapp));
23 
24   /* create the application ordering */
25   CHKERRQ(AOCreateBasicIS(isapp,ispetsc,&ao));
26 
27   CHKERRQ(AOView(ao,PETSC_VIEWER_STDOUT_WORLD));
28 
29   CHKERRQ(ISView(ispetsc,PETSC_VIEWER_STDOUT_WORLD));
30   CHKERRQ(ISView(isapp,PETSC_VIEWER_STDOUT_WORLD));
31   CHKERRQ(AOPetscToApplicationIS(ao,ispetsc));
32   CHKERRQ(ISView(isapp,PETSC_VIEWER_STDOUT_WORLD));
33   CHKERRQ(ISView(ispetsc,PETSC_VIEWER_STDOUT_WORLD));
34 
35   CHKERRQ(ISDestroy(&ispetsc));
36   CHKERRQ(ISDestroy(&isapp));
37 
38   CHKERRQ(AODestroy(&ao));
39   ierr = PetscFinalize();
40   return ierr;
41 }
42 
43 /*TEST
44 
45    test:
46       nsize: 2
47 
48 TEST*/
49