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 27*8a690491SBarry Smith from PetscDLLibraryRegister_petsc() when using dynamic libraries, and on the first call to PetscRandomCreate() 28*8a690491SBarry Smith when using shared or 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 { 378e81d068SLisandro Dalcin char logList[256]; 388e81d068SLisandro 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); 468e81d068SLisandro Dalcin /* Register Constructors */ 47607a6623SBarry Smith ierr = PetscRandomRegisterAll();CHKERRQ(ierr); 488e81d068SLisandro Dalcin /* Process info exclusions */ 498e81d068SLisandro Dalcin ierr = PetscOptionsGetString(NULL,NULL,"-info_exclude",logList,sizeof(logList),&opt);CHKERRQ(ierr); 508e81d068SLisandro Dalcin if (opt) { 518e81d068SLisandro Dalcin ierr = PetscStrInList("random",logList,',',&pkg);CHKERRQ(ierr); 528e81d068SLisandro Dalcin if (pkg) {ierr = PetscInfoDeactivateClass(PETSC_RANDOM_CLASSID);CHKERRQ(ierr);} 538e81d068SLisandro Dalcin } 548e81d068SLisandro Dalcin /* Process summary exclusions */ 558e81d068SLisandro Dalcin ierr = PetscOptionsGetString(NULL,NULL,"-log_exclude",logList,sizeof(logList),&opt);CHKERRQ(ierr); 568e81d068SLisandro Dalcin if (opt) { 578e81d068SLisandro Dalcin ierr = PetscStrInList("random",logList,',',&pkg);CHKERRQ(ierr); 58fa2bb9feSLisandro Dalcin if (pkg) {ierr = PetscLogEventExcludeClass(PETSC_RANDOM_CLASSID);CHKERRQ(ierr);} 598e81d068SLisandro Dalcin } 608e81d068SLisandro Dalcin /* Register package finalizer */ 615c6c1daeSBarry Smith ierr = PetscRegisterFinalize(PetscRandomFinalizePackage);CHKERRQ(ierr); 625c6c1daeSBarry Smith PetscFunctionReturn(0); 635c6c1daeSBarry Smith } 645c6c1daeSBarry Smith 655c6c1daeSBarry Smith 665c6c1daeSBarry Smith 67