xref: /petsc/src/sys/tests/ex26.c (revision a4af0ceea8a251db97ee0dc5c0d52d4adf50264a)
1 static char help[] = "Tests repeated PetscInitialize/PetscFinalize calls.\n\n";
2 
3 #include <petscsys.h>
4 
5 int main(int argc, char **argv)
6 {
7   int            i,imax;
8 #if defined(PETSC_HAVE_ELEMENTAL)
9   PetscBool      initialized;
10 #endif
11   PetscErrorCode ierr;
12 
13 #if defined(PETSC_HAVE_MPIUNI)
14   imax = 32;
15 #else
16   imax = 1024;
17 #endif
18 
19   MPI_Init(&argc, &argv);
20 #if defined(PETSC_HAVE_ELEMENTAL)
21   ierr = PetscElementalInitializePackage(); if (ierr) return ierr;
22   ierr = PetscElementalInitialized(&initialized); if (ierr) return ierr;
23   if (!initialized) return 1;
24 #endif
25   for (i = 0; i < imax; ++i) {
26     ierr = PetscInitialize(&argc, &argv, (char*) 0, help); if (ierr) return ierr;
27     ierr = PetscFinalize(); if (ierr) return ierr;
28 #if defined(PETSC_HAVE_ELEMENTAL)
29     ierr = PetscElementalInitialized(&initialized); if (ierr) return ierr;
30     if (!initialized) return PETSC_ERR_LIB;
31 #endif
32   }
33 #if defined(PETSC_HAVE_ELEMENTAL)
34   ierr = PetscElementalFinalizePackage(); if (ierr) return ierr;
35   ierr = PetscElementalInitialized(&initialized); if (ierr) return ierr;
36   if (initialized) return 1;
37   for (i = 0; i < 32; ++i) { /* increasing the upper bound will generate an error in Elemental */
38     ierr = PetscInitialize(&argc, &argv, (char*) 0, help); if (ierr) return ierr;
39     ierr = PetscElementalInitialized(&initialized);CHKERRQ(ierr);
40     if (!initialized) SETERRQ(PETSC_COMM_WORLD, PETSC_ERR_LIB, "Uninitialized Elemental");
41     ierr = PetscFinalize(); if (ierr) return ierr;
42     ierr = PetscElementalInitialized(&initialized); if (ierr) return ierr;
43     if (initialized) return PETSC_ERR_LIB;
44   }
45 #endif
46   MPI_Finalize();
47   return ierr;
48 }
49 
50 /*TEST
51 
52    test:
53       requires: !saws
54 
55    test:
56       requires: !saws
57       suffix: 2
58       nsize: 2
59       output_file: output/ex26_1.out
60 
61 TEST*/
62