15c6c1daeSBarry Smith 25c6c1daeSBarry Smith #include <../src/sys/classes/random/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 .keywords: Petsc, destroy, package, mathematica 125c6c1daeSBarry Smith .seealso: PetscFinalize() 135c6c1daeSBarry Smith @*/ 145c6c1daeSBarry Smith PetscErrorCode PetscRandomFinalizePackage(void) 155c6c1daeSBarry Smith { 1637e93019SBarry Smith PetscErrorCode ierr; 1737e93019SBarry Smith 185c6c1daeSBarry Smith PetscFunctionBegin; 1937e93019SBarry Smith ierr = PetscFunctionListDestroy(&PetscRandomList);CHKERRQ(ierr); 205c6c1daeSBarry Smith PetscRandomPackageInitialized = PETSC_FALSE; 215c6c1daeSBarry Smith PetscRandomRegisterAllCalled = PETSC_FALSE; 225c6c1daeSBarry Smith PetscFunctionReturn(0); 235c6c1daeSBarry Smith } 245c6c1daeSBarry Smith 255c6c1daeSBarry Smith /*@C 265c6c1daeSBarry Smith PetscRandomInitializePackage - This function initializes everything in the PetscRandom package. It is called 275c6c1daeSBarry Smith from PetscDLLibraryRegister() when using dynamic libraries, and on the first call to PetscRandomCreate() 285c6c1daeSBarry Smith when using static libraries. 295c6c1daeSBarry Smith 305c6c1daeSBarry Smith Level: developer 315c6c1daeSBarry Smith 325c6c1daeSBarry Smith .keywords: PetscRandom, initialize, package 335c6c1daeSBarry Smith .seealso: PetscInitialize() 345c6c1daeSBarry Smith @*/ 35607a6623SBarry Smith PetscErrorCode PetscRandomInitializePackage(void) 365c6c1daeSBarry Smith { 37*8e81d068SLisandro Dalcin char logList[256]; 38*8e81d068SLisandro Dalcin PetscBool opt,pkg; 395c6c1daeSBarry Smith PetscErrorCode ierr; 405c6c1daeSBarry Smith 415c6c1daeSBarry Smith PetscFunctionBegin; 425c6c1daeSBarry Smith if (PetscRandomPackageInitialized) PetscFunctionReturn(0); 435c6c1daeSBarry Smith PetscRandomPackageInitialized = PETSC_TRUE; 445c6c1daeSBarry Smith /* Register Class */ 455c6c1daeSBarry Smith ierr = PetscClassIdRegister("PetscRandom",&PETSC_RANDOM_CLASSID);CHKERRQ(ierr); 46*8e81d068SLisandro Dalcin /* Register Constructors */ 47607a6623SBarry Smith ierr = PetscRandomRegisterAll();CHKERRQ(ierr); 48*8e81d068SLisandro Dalcin /* Process info exclusions */ 49*8e81d068SLisandro Dalcin ierr = PetscOptionsGetString(NULL,NULL,"-info_exclude",logList,sizeof(logList),&opt);CHKERRQ(ierr); 50*8e81d068SLisandro Dalcin if (opt) { 51*8e81d068SLisandro Dalcin ierr = PetscStrInList("random",logList,',',&pkg);CHKERRQ(ierr); 52*8e81d068SLisandro Dalcin if (pkg) {ierr = PetscInfoDeactivateClass(PETSC_RANDOM_CLASSID);CHKERRQ(ierr);} 53*8e81d068SLisandro Dalcin } 54*8e81d068SLisandro Dalcin /* Process summary exclusions */ 55*8e81d068SLisandro Dalcin ierr = PetscOptionsGetString(NULL,NULL,"-log_exclude",logList,sizeof(logList),&opt);CHKERRQ(ierr); 56*8e81d068SLisandro Dalcin if (opt) { 57*8e81d068SLisandro Dalcin ierr = PetscStrInList("random",logList,',',&pkg);CHKERRQ(ierr); 58*8e81d068SLisandro Dalcin if (pkg) {ierr = PetscLogEventDeactivateClass(PETSC_RANDOM_CLASSID);CHKERRQ(ierr);} 59*8e81d068SLisandro Dalcin } 60*8e81d068SLisandro Dalcin /* Register package finalizer */ 615c6c1daeSBarry Smith ierr = PetscRegisterFinalize(PetscRandomFinalizePackage);CHKERRQ(ierr); 625c6c1daeSBarry Smith PetscFunctionReturn(0); 635c6c1daeSBarry Smith } 645c6c1daeSBarry Smith 655c6c1daeSBarry Smith 665c6c1daeSBarry Smith 67