1*af33a6ddSJed Brown #include <../src/ts/characteristic/characteristicimpl.h> 2*af33a6ddSJed Brown 3*af33a6ddSJed Brown static PetscBool CharacteristicPackageInitialized = PETSC_FALSE; 4*af33a6ddSJed Brown #undef __FUNCT__ 5*af33a6ddSJed Brown #define __FUNCT__ "CharacteristicFinalizePackage" 6*af33a6ddSJed Brown /*@C 7*af33a6ddSJed Brown CharacteristicFinalizePackage - This function destroys everything in the Petsc interface to the characteristics package. It is 8*af33a6ddSJed Brown called from PetscFinalize(). 9*af33a6ddSJed Brown 10*af33a6ddSJed Brown Level: developer 11*af33a6ddSJed Brown 12*af33a6ddSJed Brown .keywords: Petsc, destroy, package, mathematica 13*af33a6ddSJed Brown .seealso: PetscFinalize() 14*af33a6ddSJed Brown @*/ 15*af33a6ddSJed Brown PetscErrorCode CharacteristicFinalizePackage(void) 16*af33a6ddSJed Brown { 17*af33a6ddSJed Brown PetscFunctionBegin; 18*af33a6ddSJed Brown CharacteristicPackageInitialized = PETSC_FALSE; 19*af33a6ddSJed Brown CharacteristicRegisterAllCalled = PETSC_FALSE; 20*af33a6ddSJed Brown CharacteristicList = PETSC_NULL; 21*af33a6ddSJed Brown PetscFunctionReturn(0); 22*af33a6ddSJed Brown } 23*af33a6ddSJed Brown 24*af33a6ddSJed Brown #undef __FUNCT__ 25*af33a6ddSJed Brown #define __FUNCT__ "CharacteristicInitializePackage" 26*af33a6ddSJed Brown /*@C 27*af33a6ddSJed Brown CharacteristicInitializePackage - This function initializes everything in the Characteristic package. It is called 28*af33a6ddSJed Brown from PetscDLLibraryRegister() when using dynamic libraries, and on the first call to CharacteristicCreate() 29*af33a6ddSJed Brown when using static libraries. 30*af33a6ddSJed Brown 31*af33a6ddSJed Brown Input Parameter: 32*af33a6ddSJed Brown path - The dynamic library path, or PETSC_NULL 33*af33a6ddSJed Brown 34*af33a6ddSJed Brown Level: developer 35*af33a6ddSJed Brown 36*af33a6ddSJed Brown .keywords: Characteristic, initialize, package 37*af33a6ddSJed Brown .seealso: PetscInitialize() 38*af33a6ddSJed Brown @*/ 39*af33a6ddSJed Brown PetscErrorCode CharacteristicInitializePackage(const char path[]) 40*af33a6ddSJed Brown { 41*af33a6ddSJed Brown char logList[256]; 42*af33a6ddSJed Brown char *className; 43*af33a6ddSJed Brown PetscBool opt; 44*af33a6ddSJed Brown PetscErrorCode ierr; 45*af33a6ddSJed Brown 46*af33a6ddSJed Brown PetscFunctionBegin; 47*af33a6ddSJed Brown if (CharacteristicPackageInitialized) PetscFunctionReturn(0); 48*af33a6ddSJed Brown CharacteristicPackageInitialized = PETSC_TRUE; 49*af33a6ddSJed Brown /* Register Classes */ 50*af33a6ddSJed Brown ierr = PetscClassIdRegister("Method of Characteristics",&CHARACTERISTIC_CLASSID);CHKERRQ(ierr); 51*af33a6ddSJed Brown /* Register Constructors */ 52*af33a6ddSJed Brown ierr = CharacteristicRegisterAll(path);CHKERRQ(ierr); 53*af33a6ddSJed Brown /* Register Events */ 54*af33a6ddSJed Brown ierr = PetscLogEventRegister("MOCSetUp", CHARACTERISTIC_CLASSID,&CHARACTERISTIC_SetUp);CHKERRQ(ierr); 55*af33a6ddSJed Brown ierr = PetscLogEventRegister("MOCSolve", CHARACTERISTIC_CLASSID,&CHARACTERISTIC_Solve);CHKERRQ(ierr); 56*af33a6ddSJed Brown ierr = PetscLogEventRegister("MOCQueueSetup", CHARACTERISTIC_CLASSID,&CHARACTERISTIC_QueueSetup);CHKERRQ(ierr); 57*af33a6ddSJed Brown ierr = PetscLogEventRegister("MOCDAUpdate", CHARACTERISTIC_CLASSID,&CHARACTERISTIC_DAUpdate);CHKERRQ(ierr); 58*af33a6ddSJed Brown ierr = PetscLogEventRegister("MOCHalfTimeLocal", CHARACTERISTIC_CLASSID,&CHARACTERISTIC_HalfTimeLocal);CHKERRQ(ierr); 59*af33a6ddSJed Brown ierr = PetscLogEventRegister("MOCHalfTimeRemot", CHARACTERISTIC_CLASSID,&CHARACTERISTIC_HalfTimeRemote);CHKERRQ(ierr); 60*af33a6ddSJed Brown ierr = PetscLogEventRegister("MOCHalfTimeExchg", CHARACTERISTIC_CLASSID,&CHARACTERISTIC_HalfTimeExchange);CHKERRQ(ierr); 61*af33a6ddSJed Brown ierr = PetscLogEventRegister("MOCFullTimeLocal", CHARACTERISTIC_CLASSID,&CHARACTERISTIC_FullTimeLocal);CHKERRQ(ierr); 62*af33a6ddSJed Brown ierr = PetscLogEventRegister("MOCFullTimeRemot", CHARACTERISTIC_CLASSID,&CHARACTERISTIC_FullTimeRemote);CHKERRQ(ierr); 63*af33a6ddSJed Brown ierr = PetscLogEventRegister("MOCFullTimeExchg", CHARACTERISTIC_CLASSID,&CHARACTERISTIC_FullTimeExchange);CHKERRQ(ierr); 64*af33a6ddSJed Brown /* Process info exclusions */ 65*af33a6ddSJed Brown ierr = PetscOptionsGetString(PETSC_NULL, "-log_info_exclude", logList, 256, &opt);CHKERRQ(ierr); 66*af33a6ddSJed Brown if (opt) { 67*af33a6ddSJed Brown ierr = PetscStrstr(logList, "characteristic", &className);CHKERRQ(ierr); 68*af33a6ddSJed Brown if (className) { 69*af33a6ddSJed Brown ierr = PetscInfoDeactivateClass(CHARACTERISTIC_CLASSID);CHKERRQ(ierr); 70*af33a6ddSJed Brown } 71*af33a6ddSJed Brown } 72*af33a6ddSJed Brown /* Process summary exclusions */ 73*af33a6ddSJed Brown ierr = PetscOptionsGetString(PETSC_NULL, "-log_summary_exclude", logList, 256, &opt);CHKERRQ(ierr); 74*af33a6ddSJed Brown if (opt) { 75*af33a6ddSJed Brown ierr = PetscStrstr(logList, "characteristic", &className);CHKERRQ(ierr); 76*af33a6ddSJed Brown if (className) { 77*af33a6ddSJed Brown ierr = PetscLogEventDeactivateClass(CHARACTERISTIC_CLASSID);CHKERRQ(ierr); 78*af33a6ddSJed Brown } 79*af33a6ddSJed Brown } 80*af33a6ddSJed Brown ierr = PetscRegisterFinalize(CharacteristicFinalizePackage);CHKERRQ(ierr); 81*af33a6ddSJed Brown PetscFunctionReturn(0); 82*af33a6ddSJed Brown } 83*af33a6ddSJed Brown 84*af33a6ddSJed Brown #ifdef PETSC_USE_DYNAMIC_LIBRARIES 85*af33a6ddSJed Brown EXTERN_C_BEGIN 86*af33a6ddSJed Brown #undef __FUNCT__ 87*af33a6ddSJed Brown #define __FUNCT__ "PetscDLLibraryRegister_characteristic" 88*af33a6ddSJed Brown /* 89*af33a6ddSJed Brown PetscDLLibraryRegister - This function is called when the dynamic library it is in is opened. 90*af33a6ddSJed Brown 91*af33a6ddSJed Brown This one registers the method of characteristics code 92*af33a6ddSJed Brown 93*af33a6ddSJed Brown Input Parameter: 94*af33a6ddSJed Brown path - library path 95*af33a6ddSJed Brown */ 96*af33a6ddSJed Brown PetscErrorCode PetscDLLibraryRegister_petsccharacteristic(const char path[]) 97*af33a6ddSJed Brown { 98*af33a6ddSJed Brown PetscErrorCode ierr; 99*af33a6ddSJed Brown 100*af33a6ddSJed Brown PetscFunctionBegin; 101*af33a6ddSJed Brown ierr = CharacteristicInitializePackage(path);CHKERRQ(ierr); 102*af33a6ddSJed Brown PetscFunctionReturn(0); 103*af33a6ddSJed Brown } 104*af33a6ddSJed Brown EXTERN_C_END 105*af33a6ddSJed Brown 106*af33a6ddSJed Brown #endif /* PETSC_USE_DYNAMIC_LIBRARIES */ 107