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 .seealso: PetscFinalize() 125c6c1daeSBarry Smith @*/ 135c6c1daeSBarry Smith PetscErrorCode PetscRandomFinalizePackage(void) 145c6c1daeSBarry Smith { 1537e93019SBarry Smith PetscErrorCode ierr; 1637e93019SBarry Smith 175c6c1daeSBarry Smith PetscFunctionBegin; 1837e93019SBarry Smith ierr = PetscFunctionListDestroy(&PetscRandomList);CHKERRQ(ierr); 195c6c1daeSBarry Smith PetscRandomPackageInitialized = PETSC_FALSE; 205c6c1daeSBarry Smith PetscRandomRegisterAllCalled = PETSC_FALSE; 215c6c1daeSBarry Smith PetscFunctionReturn(0); 225c6c1daeSBarry Smith } 235c6c1daeSBarry Smith 245c6c1daeSBarry Smith /*@C 255c6c1daeSBarry Smith PetscRandomInitializePackage - This function initializes everything in the PetscRandom package. It is called 268a690491SBarry Smith from PetscDLLibraryRegister_petsc() when using dynamic libraries, and on the first call to PetscRandomCreate() 278a690491SBarry Smith when using shared or static libraries. 285c6c1daeSBarry Smith 295c6c1daeSBarry Smith Level: developer 305c6c1daeSBarry Smith 315c6c1daeSBarry Smith .seealso: PetscInitialize() 325c6c1daeSBarry Smith @*/ 33607a6623SBarry Smith PetscErrorCode PetscRandomInitializePackage(void) 345c6c1daeSBarry Smith { 358e81d068SLisandro Dalcin char logList[256]; 368e81d068SLisandro Dalcin PetscBool opt,pkg; 375c6c1daeSBarry Smith PetscErrorCode ierr; 385c6c1daeSBarry Smith 395c6c1daeSBarry Smith PetscFunctionBegin; 405c6c1daeSBarry Smith if (PetscRandomPackageInitialized) PetscFunctionReturn(0); 415c6c1daeSBarry Smith PetscRandomPackageInitialized = PETSC_TRUE; 425c6c1daeSBarry Smith /* Register Class */ 435c6c1daeSBarry Smith ierr = PetscClassIdRegister("PetscRandom",&PETSC_RANDOM_CLASSID);CHKERRQ(ierr); 448e81d068SLisandro Dalcin /* Register Constructors */ 45607a6623SBarry Smith ierr = PetscRandomRegisterAll();CHKERRQ(ierr); 46*e94e781bSJacob Faibussowitsch /* Process Info */ 47*e94e781bSJacob Faibussowitsch { 48*e94e781bSJacob Faibussowitsch PetscClassId classids[1]; 49*e94e781bSJacob Faibussowitsch 50*e94e781bSJacob Faibussowitsch classids[0] = PETSC_RANDOM_CLASSID; 51*e94e781bSJacob Faibussowitsch ierr = PetscInfoProcessClass("random", 1, classids);CHKERRQ(ierr); 528e81d068SLisandro Dalcin } 538e81d068SLisandro Dalcin /* Process summary exclusions */ 548e81d068SLisandro Dalcin ierr = PetscOptionsGetString(NULL,NULL,"-log_exclude",logList,sizeof(logList),&opt);CHKERRQ(ierr); 558e81d068SLisandro Dalcin if (opt) { 568e81d068SLisandro Dalcin ierr = PetscStrInList("random",logList,',',&pkg);CHKERRQ(ierr); 57fa2bb9feSLisandro Dalcin if (pkg) {ierr = PetscLogEventExcludeClass(PETSC_RANDOM_CLASSID);CHKERRQ(ierr);} 588e81d068SLisandro Dalcin } 598e81d068SLisandro Dalcin /* Register package finalizer */ 605c6c1daeSBarry Smith ierr = PetscRegisterFinalize(PetscRandomFinalizePackage);CHKERRQ(ierr); 615c6c1daeSBarry Smith PetscFunctionReturn(0); 625c6c1daeSBarry Smith } 635c6c1daeSBarry Smith 645c6c1daeSBarry Smith 655c6c1daeSBarry Smith 66