1 2 #include <../src/sys/classes/random/randomimpl.h> 3 4 static PetscBool PetscRandomPackageInitialized = PETSC_FALSE; 5 /*@C 6 PetscRandomFinalizePackage - This function destroys everything in the Petsc interface to the Random package. It is 7 called from PetscFinalize(). 8 9 Level: developer 10 11 .keywords: Petsc, destroy, package, mathematica 12 .seealso: PetscFinalize() 13 @*/ 14 PetscErrorCode PetscRandomFinalizePackage(void) 15 { 16 PetscErrorCode ierr; 17 18 PetscFunctionBegin; 19 ierr = PetscFunctionListDestroy(&PetscRandomList);CHKERRQ(ierr); 20 PetscRandomPackageInitialized = PETSC_FALSE; 21 PetscRandomRegisterAllCalled = PETSC_FALSE; 22 PetscFunctionReturn(0); 23 } 24 25 /*@C 26 PetscRandomInitializePackage - This function initializes everything in the PetscRandom package. It is called 27 from PetscDLLibraryRegister_petsc() when using dynamic libraries, and on the first call to PetscRandomCreate() 28 when using shared or static libraries. 29 30 Level: developer 31 32 .keywords: PetscRandom, initialize, package 33 .seealso: PetscInitialize() 34 @*/ 35 PetscErrorCode PetscRandomInitializePackage(void) 36 { 37 char logList[256]; 38 PetscBool opt,pkg; 39 PetscErrorCode ierr; 40 41 PetscFunctionBegin; 42 if (PetscRandomPackageInitialized) PetscFunctionReturn(0); 43 PetscRandomPackageInitialized = PETSC_TRUE; 44 /* Register Class */ 45 ierr = PetscClassIdRegister("PetscRandom",&PETSC_RANDOM_CLASSID);CHKERRQ(ierr); 46 /* Register Constructors */ 47 ierr = PetscRandomRegisterAll();CHKERRQ(ierr); 48 /* Process info exclusions */ 49 ierr = PetscOptionsGetString(NULL,NULL,"-info_exclude",logList,sizeof(logList),&opt);CHKERRQ(ierr); 50 if (opt) { 51 ierr = PetscStrInList("random",logList,',',&pkg);CHKERRQ(ierr); 52 if (pkg) {ierr = PetscInfoDeactivateClass(PETSC_RANDOM_CLASSID);CHKERRQ(ierr);} 53 } 54 /* Process summary exclusions */ 55 ierr = PetscOptionsGetString(NULL,NULL,"-log_exclude",logList,sizeof(logList),&opt);CHKERRQ(ierr); 56 if (opt) { 57 ierr = PetscStrInList("random",logList,',',&pkg);CHKERRQ(ierr); 58 if (pkg) {ierr = PetscLogEventExcludeClass(PETSC_RANDOM_CLASSID);CHKERRQ(ierr);} 59 } 60 /* Register package finalizer */ 61 ierr = PetscRegisterFinalize(PetscRandomFinalizePackage);CHKERRQ(ierr); 62 PetscFunctionReturn(0); 63 } 64 65 66 67