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 115c6c1daeSBarry Smith .seealso: PetscFinalize() 125c6c1daeSBarry Smith @*/ 135c6c1daeSBarry Smith PetscErrorCode PetscRandomFinalizePackage(void) 145c6c1daeSBarry Smith { 155c6c1daeSBarry Smith PetscFunctionBegin; 16*9566063dSJacob Faibussowitsch PetscCall(PetscFunctionListDestroy(&PetscRandomList)); 175c6c1daeSBarry Smith PetscRandomPackageInitialized = PETSC_FALSE; 185c6c1daeSBarry Smith PetscRandomRegisterAllCalled = PETSC_FALSE; 195c6c1daeSBarry Smith PetscFunctionReturn(0); 205c6c1daeSBarry Smith } 215c6c1daeSBarry Smith 225c6c1daeSBarry Smith /*@C 235c6c1daeSBarry Smith PetscRandomInitializePackage - This function initializes everything in the PetscRandom package. It is called 248a690491SBarry Smith from PetscDLLibraryRegister_petsc() when using dynamic libraries, and on the first call to PetscRandomCreate() 258a690491SBarry Smith when using shared or static libraries. 265c6c1daeSBarry Smith 275c6c1daeSBarry Smith Level: developer 285c6c1daeSBarry Smith 295c6c1daeSBarry Smith .seealso: PetscInitialize() 305c6c1daeSBarry Smith @*/ 31607a6623SBarry Smith PetscErrorCode PetscRandomInitializePackage(void) 325c6c1daeSBarry Smith { 338e81d068SLisandro Dalcin char logList[256]; 348e81d068SLisandro Dalcin PetscBool opt,pkg; 355c6c1daeSBarry Smith 365c6c1daeSBarry Smith PetscFunctionBegin; 375c6c1daeSBarry Smith if (PetscRandomPackageInitialized) PetscFunctionReturn(0); 385c6c1daeSBarry Smith PetscRandomPackageInitialized = PETSC_TRUE; 395c6c1daeSBarry Smith /* Register Class */ 40*9566063dSJacob Faibussowitsch PetscCall(PetscClassIdRegister("PetscRandom",&PETSC_RANDOM_CLASSID)); 418e81d068SLisandro Dalcin /* Register Constructors */ 42*9566063dSJacob Faibussowitsch PetscCall(PetscRandomRegisterAll()); 43e94e781bSJacob Faibussowitsch /* Process Info */ 44e94e781bSJacob Faibussowitsch { 45e94e781bSJacob Faibussowitsch PetscClassId classids[1]; 46e94e781bSJacob Faibussowitsch 47e94e781bSJacob Faibussowitsch classids[0] = PETSC_RANDOM_CLASSID; 48*9566063dSJacob Faibussowitsch PetscCall(PetscInfoProcessClass("random", 1, classids)); 498e81d068SLisandro Dalcin } 508e81d068SLisandro Dalcin /* Process summary exclusions */ 51*9566063dSJacob Faibussowitsch PetscCall(PetscOptionsGetString(NULL,NULL,"-log_exclude",logList,sizeof(logList),&opt)); 528e81d068SLisandro Dalcin if (opt) { 53*9566063dSJacob Faibussowitsch PetscCall(PetscStrInList("random",logList,',',&pkg)); 54*9566063dSJacob Faibussowitsch if (pkg) PetscCall(PetscLogEventExcludeClass(PETSC_RANDOM_CLASSID)); 558e81d068SLisandro Dalcin } 568e81d068SLisandro Dalcin /* Register package finalizer */ 57*9566063dSJacob Faibussowitsch PetscCall(PetscRegisterFinalize(PetscRandomFinalizePackage)); 585c6c1daeSBarry Smith PetscFunctionReturn(0); 595c6c1daeSBarry Smith } 60