xref: /petsc/src/sys/classes/random/interface/dlregisrand.c (revision dec1416f15364d8a66cef6f4b2a5a2aba5192d13)
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 @*/
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 @*/
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 exclusions */
47   ierr = PetscOptionsGetString(NULL,NULL,"-info_exclude",logList,sizeof(logList),&opt);CHKERRQ(ierr);
48   if (opt) {
49     ierr = PetscStrInList("random",logList,',',&pkg);CHKERRQ(ierr);
50     if (pkg) {ierr = PetscInfoDeactivateClass(PETSC_RANDOM_CLASSID);CHKERRQ(ierr);}
51   }
52   /* Process summary exclusions */
53   ierr = PetscOptionsGetString(NULL,NULL,"-log_exclude",logList,sizeof(logList),&opt);CHKERRQ(ierr);
54   if (opt) {
55     ierr = PetscStrInList("random",logList,',',&pkg);CHKERRQ(ierr);
56     if (pkg) {ierr = PetscLogEventExcludeClass(PETSC_RANDOM_CLASSID);CHKERRQ(ierr);}
57   }
58   /* Register package finalizer */
59   ierr = PetscRegisterFinalize(PetscRandomFinalizePackage);CHKERRQ(ierr);
60   PetscFunctionReturn(0);
61 }
62 
63 
64 
65