Actual source code: slregis.c
1: #include <petsc/private/characteristicimpl.h>
3: static PetscBool CharacteristicPackageInitialized = PETSC_FALSE;
4: /*@C
5: CharacteristicFinalizePackage - This function destroys everything in the `Characteristics` package. It is
6: called from `PetscFinalize()`.
8: Level: developer
10: .seealso: [](chapter_ts), `PetscFinalize()`, `CharacteristicInitializePackage()`
11: @*/
12: PetscErrorCode CharacteristicFinalizePackage(void)
13: {
14: PetscFunctionListDestroy(&CharacteristicList);
15: CharacteristicPackageInitialized = PETSC_FALSE;
16: CharacteristicRegisterAllCalled = PETSC_FALSE;
17: return 0;
18: }
20: /*@C
21: CharacteristicInitializePackage - This function initializes everything in the Characteristic package. It is called
22: from PetscDLLibraryRegister() when using dynamic libraries, and on the first call to CharacteristicCreate()
23: when using static libraries.
25: Level: developer
27: .seealso: [](chapter_ts), `PetscInitialize()`, `CharacteristicFinalizePackage()`
28: @*/
29: PetscErrorCode CharacteristicInitializePackage(void)
30: {
31: char logList[256];
32: PetscBool opt, pkg;
34: if (CharacteristicPackageInitialized) return 0;
35: CharacteristicPackageInitialized = PETSC_TRUE;
36: /* Register Classes */
37: PetscClassIdRegister("Method of Characteristics", &CHARACTERISTIC_CLASSID);
38: /* Register Constructors */
39: CharacteristicRegisterAll();
40: /* Register Events */
41: PetscLogEventRegister("MOCSetUp", CHARACTERISTIC_CLASSID, &CHARACTERISTIC_SetUp);
42: PetscLogEventRegister("MOCSolve", CHARACTERISTIC_CLASSID, &CHARACTERISTIC_Solve);
43: PetscLogEventRegister("MOCQueueSetup", CHARACTERISTIC_CLASSID, &CHARACTERISTIC_QueueSetup);
44: PetscLogEventRegister("MOCDAUpdate", CHARACTERISTIC_CLASSID, &CHARACTERISTIC_DAUpdate);
45: PetscLogEventRegister("MOCHalfTimeLocal", CHARACTERISTIC_CLASSID, &CHARACTERISTIC_HalfTimeLocal);
46: PetscLogEventRegister("MOCHalfTimeRemot", CHARACTERISTIC_CLASSID, &CHARACTERISTIC_HalfTimeRemote);
47: PetscLogEventRegister("MOCHalfTimeExchg", CHARACTERISTIC_CLASSID, &CHARACTERISTIC_HalfTimeExchange);
48: PetscLogEventRegister("MOCFullTimeLocal", CHARACTERISTIC_CLASSID, &CHARACTERISTIC_FullTimeLocal);
49: PetscLogEventRegister("MOCFullTimeRemot", CHARACTERISTIC_CLASSID, &CHARACTERISTIC_FullTimeRemote);
50: PetscLogEventRegister("MOCFullTimeExchg", CHARACTERISTIC_CLASSID, &CHARACTERISTIC_FullTimeExchange);
51: /* Process Info */
52: {
53: PetscClassId classids[1];
55: classids[0] = CHARACTERISTIC_CLASSID;
56: PetscInfoProcessClass("characteristic", 1, classids);
57: }
58: /* Process summary exclusions */
59: PetscOptionsGetString(NULL, NULL, "-log_exclude", logList, sizeof(logList), &opt);
60: if (opt) {
61: PetscStrInList("characteristic", logList, ',', &pkg);
62: if (pkg) PetscLogEventExcludeClass(CHARACTERISTIC_CLASSID);
63: }
64: /* Process package finalizer */
65: PetscRegisterFinalize(CharacteristicFinalizePackage);
66: return 0;
67: }
69: #if defined(PETSC_HAVE_DYNAMIC_LIBRARIES)
70: /*
71: PetscDLLibraryRegister - This function is called when the dynamic library it is in is opened.
73: This one registers the method of characteristics code
74: */
75: PETSC_EXTERN PetscErrorCode PetscDLLibraryRegister_petsccharacteristic(void)
76: {
77: CharacteristicInitializePackage();
78: return 0;
79: }
81: #endif /* PETSC_HAVE_DYNAMIC_LIBRARIES */