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