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