15c6c1daeSBarry Smith 2d6cc7855SJacob Faibussowitsch #include <petsc/private/randomimpl.h> 35c6c1daeSBarry Smith 45c6c1daeSBarry Smith static PetscBool PetscRandomPackageInitialized = PETSC_FALSE; 55c6c1daeSBarry Smith /*@C 65c6c1daeSBarry Smith PetscRandomFinalizePackage - This function destroys everything in the Petsc interface to the Random package. It is 75c6c1daeSBarry Smith called from PetscFinalize(). 85c6c1daeSBarry Smith 95c6c1daeSBarry Smith Level: developer 105c6c1daeSBarry Smith 11db781477SPatrick Sanan .seealso: `PetscFinalize()` 125c6c1daeSBarry Smith @*/ 13*9371c9d4SSatish Balay PetscErrorCode PetscRandomFinalizePackage(void) { 145c6c1daeSBarry Smith PetscFunctionBegin; 159566063dSJacob Faibussowitsch PetscCall(PetscFunctionListDestroy(&PetscRandomList)); 165c6c1daeSBarry Smith PetscRandomPackageInitialized = PETSC_FALSE; 175c6c1daeSBarry Smith PetscRandomRegisterAllCalled = PETSC_FALSE; 185c6c1daeSBarry Smith PetscFunctionReturn(0); 195c6c1daeSBarry Smith } 205c6c1daeSBarry Smith 215c6c1daeSBarry Smith /*@C 225c6c1daeSBarry Smith PetscRandomInitializePackage - This function initializes everything in the PetscRandom package. It is called 238a690491SBarry Smith from PetscDLLibraryRegister_petsc() when using dynamic libraries, and on the first call to PetscRandomCreate() 248a690491SBarry Smith when using shared or static libraries. 255c6c1daeSBarry Smith 265c6c1daeSBarry Smith Level: developer 275c6c1daeSBarry Smith 28db781477SPatrick Sanan .seealso: `PetscInitialize()` 295c6c1daeSBarry Smith @*/ 30*9371c9d4SSatish Balay PetscErrorCode PetscRandomInitializePackage(void) { 318e81d068SLisandro Dalcin char logList[256]; 328e81d068SLisandro Dalcin PetscBool opt, pkg; 335c6c1daeSBarry Smith 345c6c1daeSBarry Smith PetscFunctionBegin; 355c6c1daeSBarry Smith if (PetscRandomPackageInitialized) PetscFunctionReturn(0); 365c6c1daeSBarry Smith PetscRandomPackageInitialized = PETSC_TRUE; 375c6c1daeSBarry Smith /* Register Class */ 389566063dSJacob Faibussowitsch PetscCall(PetscClassIdRegister("PetscRandom", &PETSC_RANDOM_CLASSID)); 398e81d068SLisandro Dalcin /* Register Constructors */ 409566063dSJacob Faibussowitsch PetscCall(PetscRandomRegisterAll()); 41e94e781bSJacob Faibussowitsch /* Process Info */ 42e94e781bSJacob Faibussowitsch { 43e94e781bSJacob Faibussowitsch PetscClassId classids[1]; 44e94e781bSJacob Faibussowitsch 45e94e781bSJacob Faibussowitsch classids[0] = PETSC_RANDOM_CLASSID; 469566063dSJacob Faibussowitsch PetscCall(PetscInfoProcessClass("random", 1, classids)); 478e81d068SLisandro Dalcin } 488e81d068SLisandro Dalcin /* Process summary exclusions */ 499566063dSJacob Faibussowitsch PetscCall(PetscOptionsGetString(NULL, NULL, "-log_exclude", logList, sizeof(logList), &opt)); 508e81d068SLisandro Dalcin if (opt) { 519566063dSJacob Faibussowitsch PetscCall(PetscStrInList("random", logList, ',', &pkg)); 529566063dSJacob Faibussowitsch if (pkg) PetscCall(PetscLogEventExcludeClass(PETSC_RANDOM_CLASSID)); 538e81d068SLisandro Dalcin } 548e81d068SLisandro Dalcin /* Register package finalizer */ 559566063dSJacob Faibussowitsch PetscCall(PetscRegisterFinalize(PetscRandomFinalizePackage)); 565c6c1daeSBarry Smith PetscFunctionReturn(0); 575c6c1daeSBarry Smith } 58