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