xref: /petsc/src/sys/tests/ex26.c (revision b122ec5aa1bd4469eb4e0673542fb7de3f411254)
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;
8540e20f2SPierre Jolivet #if defined(PETSC_HAVE_ELEMENTAL)
9540e20f2SPierre Jolivet   PetscBool      initialized;
10540e20f2SPierre Jolivet #endif
11c4762a1bSJed Brown 
12c4762a1bSJed Brown #if defined(PETSC_HAVE_MPIUNI)
13c4762a1bSJed Brown   imax = 32;
14c4762a1bSJed Brown #else
15c4762a1bSJed Brown   imax = 1024;
16c4762a1bSJed Brown #endif
17c4762a1bSJed Brown 
18*b122ec5aSJacob Faibussowitsch   CHKERRMPI(MPI_Init(&argc, &argv));
19540e20f2SPierre Jolivet #if defined(PETSC_HAVE_ELEMENTAL)
20*b122ec5aSJacob Faibussowitsch   CHKERRQ(PetscElementalInitializePackage());
21*b122ec5aSJacob Faibussowitsch   CHKERRQ(PetscElementalInitialized(&initialized));
22540e20f2SPierre Jolivet   if (!initialized) return 1;
23540e20f2SPierre Jolivet #endif
24c4762a1bSJed Brown   for (i = 0; i < imax; ++i) {
25*b122ec5aSJacob Faibussowitsch     CHKERRQ(PetscInitialize(&argc, &argv, (char*) 0, help));
26*b122ec5aSJacob Faibussowitsch     CHKERRQ(PetscFinalize());
27540e20f2SPierre Jolivet #if defined(PETSC_HAVE_ELEMENTAL)
28*b122ec5aSJacob Faibussowitsch     CHKERRQ(PetscElementalInitialized(&initialized));
2956883f60SBarry Smith     if (!initialized) return PETSC_ERR_LIB;
30540e20f2SPierre Jolivet #endif
31c4762a1bSJed Brown   }
32540e20f2SPierre Jolivet #if defined(PETSC_HAVE_ELEMENTAL)
33*b122ec5aSJacob Faibussowitsch   CHKERRQ(PetscElementalFinalizePackage());
34*b122ec5aSJacob Faibussowitsch   CHKERRQ(PetscElementalInitialized(&initialized));
35540e20f2SPierre Jolivet   if (initialized) return 1;
36540e20f2SPierre Jolivet   for (i = 0; i < 32; ++i) { /* increasing the upper bound will generate an error in Elemental */
37*b122ec5aSJacob Faibussowitsch     CHKERRQ(PetscInitialize(&argc, &argv, (char*) 0, help));
385f80ce2aSJacob Faibussowitsch     CHKERRQ(PetscElementalInitialized(&initialized));
3928b400f6SJacob Faibussowitsch     PetscCheck(initialized,PETSC_COMM_WORLD, PETSC_ERR_LIB, "Uninitialized Elemental");
40*b122ec5aSJacob Faibussowitsch     CHKERRQ(PetscFinalize());
41*b122ec5aSJacob Faibussowitsch     CHKERRQ(PetscElementalInitialized(&initialized));
4256883f60SBarry Smith     if (initialized) return PETSC_ERR_LIB;
43540e20f2SPierre Jolivet   }
44540e20f2SPierre Jolivet #endif
45*b122ec5aSJacob Faibussowitsch   return MPI_Finalize();
46c4762a1bSJed Brown }
47c4762a1bSJed Brown 
48c4762a1bSJed Brown /*TEST
49c4762a1bSJed Brown 
50c4762a1bSJed Brown    test:
51b0b1df57SBarry Smith       requires: !saws
52c4762a1bSJed Brown 
53c4762a1bSJed Brown    test:
54b0b1df57SBarry Smith       requires: !saws
55c4762a1bSJed Brown       suffix: 2
56c4762a1bSJed Brown       nsize: 2
57c4762a1bSJed Brown       output_file: output/ex26_1.out
58c4762a1bSJed Brown 
59c4762a1bSJed Brown TEST*/
60