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*9566063dSJacob Faibussowitsch PetscCallMPI(MPI_Init(&argc, &argv)); 19540e20f2SPierre Jolivet #if defined(PETSC_HAVE_ELEMENTAL) 20*9566063dSJacob Faibussowitsch PetscCall(PetscElementalInitializePackage()); 21*9566063dSJacob Faibussowitsch PetscCall(PetscElementalInitialized(&initialized)); 22540e20f2SPierre Jolivet if (!initialized) return 1; 23540e20f2SPierre Jolivet #endif 24c4762a1bSJed Brown for (i = 0; i < imax; ++i) { 25*9566063dSJacob Faibussowitsch PetscCall(PetscInitialize(&argc, &argv, (char*) 0, help)); 26*9566063dSJacob Faibussowitsch PetscCall(PetscFinalize()); 27540e20f2SPierre Jolivet #if defined(PETSC_HAVE_ELEMENTAL) 28*9566063dSJacob Faibussowitsch PetscCall(PetscElementalInitialized(&initialized)); 2956883f60SBarry Smith if (!initialized) return PETSC_ERR_LIB; 30540e20f2SPierre Jolivet #endif 31c4762a1bSJed Brown } 32540e20f2SPierre Jolivet #if defined(PETSC_HAVE_ELEMENTAL) 33*9566063dSJacob Faibussowitsch PetscCall(PetscElementalFinalizePackage()); 34*9566063dSJacob Faibussowitsch PetscCall(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*9566063dSJacob Faibussowitsch PetscCall(PetscInitialize(&argc, &argv, (char*) 0, help)); 38*9566063dSJacob Faibussowitsch PetscCall(PetscElementalInitialized(&initialized)); 3928b400f6SJacob Faibussowitsch PetscCheck(initialized,PETSC_COMM_WORLD, PETSC_ERR_LIB, "Uninitialized Elemental"); 40*9566063dSJacob Faibussowitsch PetscCall(PetscFinalize()); 41*9566063dSJacob Faibussowitsch PetscCall(PetscElementalInitialized(&initialized)); 4256883f60SBarry Smith if (initialized) return PETSC_ERR_LIB; 43540e20f2SPierre Jolivet } 44540e20f2SPierre Jolivet #endif 45b122ec5aSJacob 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