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