1*5c6c1daeSBarry Smith 2*5c6c1daeSBarry Smith #include <../src/sys/classes/random/randomimpl.h> 3*5c6c1daeSBarry Smith #if defined (PETSC_HAVE_STDLIB_H) 4*5c6c1daeSBarry Smith #include <stdlib.h> 5*5c6c1daeSBarry Smith #endif 6*5c6c1daeSBarry Smith 7*5c6c1daeSBarry Smith static PetscBool PetscRandomPackageInitialized = PETSC_FALSE; 8*5c6c1daeSBarry Smith #undef __FUNCT__ 9*5c6c1daeSBarry Smith #define __FUNCT__ "PetscRandomFinalizePackage" 10*5c6c1daeSBarry Smith /*@C 11*5c6c1daeSBarry Smith PetscRandomFinalizePackage - This function destroys everything in the Petsc interface to the Random package. It is 12*5c6c1daeSBarry Smith called from PetscFinalize(). 13*5c6c1daeSBarry Smith 14*5c6c1daeSBarry Smith Level: developer 15*5c6c1daeSBarry Smith 16*5c6c1daeSBarry Smith .keywords: Petsc, destroy, package, mathematica 17*5c6c1daeSBarry Smith .seealso: PetscFinalize() 18*5c6c1daeSBarry Smith @*/ 19*5c6c1daeSBarry Smith PetscErrorCode PetscRandomFinalizePackage(void) 20*5c6c1daeSBarry Smith { 21*5c6c1daeSBarry Smith PetscFunctionBegin; 22*5c6c1daeSBarry Smith PetscRandomPackageInitialized = PETSC_FALSE; 23*5c6c1daeSBarry Smith PetscRandomList = PETSC_NULL; 24*5c6c1daeSBarry Smith PetscRandomRegisterAllCalled = PETSC_FALSE; 25*5c6c1daeSBarry Smith PetscFunctionReturn(0); 26*5c6c1daeSBarry Smith } 27*5c6c1daeSBarry Smith 28*5c6c1daeSBarry Smith #undef __FUNCT__ 29*5c6c1daeSBarry Smith #define __FUNCT__ "PetscRandomInitializePackage" 30*5c6c1daeSBarry Smith /*@C 31*5c6c1daeSBarry Smith PetscRandomInitializePackage - This function initializes everything in the PetscRandom package. It is called 32*5c6c1daeSBarry Smith from PetscDLLibraryRegister() when using dynamic libraries, and on the first call to PetscRandomCreate() 33*5c6c1daeSBarry Smith when using static libraries. 34*5c6c1daeSBarry Smith 35*5c6c1daeSBarry Smith Input Parameter: 36*5c6c1daeSBarry Smith path - The dynamic library path, or PETSC_NULL 37*5c6c1daeSBarry Smith 38*5c6c1daeSBarry Smith Level: developer 39*5c6c1daeSBarry Smith 40*5c6c1daeSBarry Smith .keywords: PetscRandom, initialize, package 41*5c6c1daeSBarry Smith .seealso: PetscInitialize() 42*5c6c1daeSBarry Smith @*/ 43*5c6c1daeSBarry Smith PetscErrorCode PetscRandomInitializePackage(const char path[]) 44*5c6c1daeSBarry Smith { 45*5c6c1daeSBarry Smith PetscErrorCode ierr; 46*5c6c1daeSBarry Smith 47*5c6c1daeSBarry Smith PetscFunctionBegin; 48*5c6c1daeSBarry Smith if (PetscRandomPackageInitialized) PetscFunctionReturn(0); 49*5c6c1daeSBarry Smith PetscRandomPackageInitialized = PETSC_TRUE; 50*5c6c1daeSBarry Smith /* Register Class */ 51*5c6c1daeSBarry Smith ierr = PetscClassIdRegister("PetscRandom",&PETSC_RANDOM_CLASSID);CHKERRQ(ierr); 52*5c6c1daeSBarry Smith ierr = PetscRandomRegisterAll(path);CHKERRQ(ierr); 53*5c6c1daeSBarry Smith ierr = PetscRegisterFinalize(PetscRandomFinalizePackage);CHKERRQ(ierr); 54*5c6c1daeSBarry Smith PetscFunctionReturn(0); 55*5c6c1daeSBarry Smith } 56*5c6c1daeSBarry Smith 57*5c6c1daeSBarry Smith 58*5c6c1daeSBarry Smith 59